LPC2000 内部flash 用作EEPROM 使用详解(转)

flash来代替eeprom 折腾了几天,终于可以用flash来代替eeprom了。总结一下欢迎拍砖。同时感谢北京zlg朱先生的耐心解答。 Philips LPC2000 内部Flash用作EEPROM使用详解   1.    LPC2000的Flash简介     Flash存储器系统包含128kB Flash器件的16个扇区和256kB Flash器件的17个扇区。Flash存储器从地址0开始并向上 阅读详情
                                                                                        king 发表于 2006-8-6 12:34:55
1. LPC2000 的Flash 简介
Flash 存储器系统包含128kB Flash 器件的16 个扇区和256kB Flash 器件的17 个扇区。Flash
存储器从地址0 开始并向上增加。Flash boot 装载程序同时提供片内Flash 存储器的ISP
和IAP 编程接口。IAP、ISP 和RealMonitor 程序都位于boot 扇区。boot 扇区存在于所有的
器件当中。ISP 和IAP 命令不允许对boot 扇区执行写/擦除/运行操作。在128kB Flash 器
件中只有120kB Flash 可供用户程序使用。器件共包含256kB 的Flash,其中,248kB 的Flash
可供用户程序使用。Boot Block 一般位于片内Flash 存储器顶端。在128kB Flash 中,它
是第16 个扇区(对应的扇区号是15),在256kB Flash 中,它是第18 个扇区(对应的扇
区号是17)。Boot Block 占有的Flash 存储器扇区不能用来存放用户数据。
LPC2000 系列提供在在应用中编程IAP,最终用户代码直接执行在应用编程 (IAP)对片内
Flash 存储器进行擦除和编程操作。Falsh 可以擦写10000 次,512 字节行编程时间为1ms。
单扇区或整片擦除时间为400ms。
Flash 存储器在写或擦除操作过程中不可被访问。
执行Flash 写/擦除操作的IAP 命令使用片内RAM 顶端的32 个字节空间。如果应用程序中允
许IAP 编程,那么用户程序不应使用该空间。
很多8 位单片机中有页的概念,页为Flash 编程的最小单位,每次可以擦除和编程一个页的
内容,由于页中包含的字节较少,在这种情况下把Flash 用作EEPROM 灵活性会很好。而
LPC2000 系列没有页的概念,它只有扇区这个最小的Flash 编程单位,即用户即使是只修改
一个字节,也需要首先擦除8K 的Flash。
把Flash 当作EEPROM 的过程,其实就是对Flash 进行读-修改-写的过程。
2. 向Flash 中写数据
Flash 必须遵循选择扇区,擦除,选择扇区,写的过程,具体到程序的编写,必须先后有下
面的代码:
SelSector(1,1); // 选择扇区1
EraseSector(1,1); // 擦除扇区1
SelSector(1,1); // 选择扇区1
for(i=0;i<512;i++)
source[i]=0x41;
RamToFlash(0x00002000, (uint32)source, 512); // 写数据到扇区1
应用的时候需要注意下面几点:
1)如果写之前没有选择扇区,是不能正确写入的。
2)如果写之前没有擦除,写入是不正确的。
3)最少写512 字节,写入的字节数应当为512 或 1024 或 4096 或 8192.
4)Flash 在擦写时不能访问,这也是IAP 是要关闭中断的原因。关中断可以用下面的语句
来实现:__asm{MSR CPSR_c, #0xdf},与此对应,开中断可以下面的语句:
__asm{MSR CPSR_c, #0x5f}。
另外,经常有人问如何将一个常量的数值定义在Flash 的特定地址上,我觉得这个功能不太
实用,因为每次擦除的最小单位是8K,到不如直接写数据到Flash 的一个地址,这个地址
是在一个空扇区中,读和写都以这个地址为基址。由于编译后的代码是向下靠紧的,所以你
可以查看一下编译后的代码量,然后选择靠上的地址做为用的变量区。如果实在想把数组定
义在Flash 的特定位置好像可以用分散加载。
3. 从Flash 中读数据
从Flash 中读数据比较简单,可以定义一个指针变量,该指针变量指向特定的Flash 地址,
例如可以写成下面的样子:
uint32 i;
uint8 * p;
p=(uint8 *)0x1C000;
for(i=0;i<400;i++)
{
Puthexbyte(*(p++));
}
4. Flash 的加密
代码读保护 这是Bootloader 修订版1.61 的特性。代码读保护通过向Flash 地址单元0x1FC
(用户Flash 扇区0)写入0x87654321(十进制表示为2271560481)来使能。地址单元0x1FC
用来允许为fiq 异常处理程序保留部分空间。当JTAG 调试端口的代码读保护被使能时,外
部存储器引导和以下ISP 命令将被禁能:
&#61548; 读存储器
&#61548; 写RAM
&#61548; 运行
&#61548; 将RAM 内容复制到Flash
上述ISP 命令终止时返回CODE_READ_PROTECTION_ENABLED。代码读保护使能时,ISP 擦除命
令只允许擦除用户扇区的内容。这种限制是代码读保护不使能时所没有的。IAP 命令不受代
码读保护的影响。
采用工程模板的RelInFlash 会自动加密。
5. 采用工程模板时需要注意的地方
采用ZLG 的工程模板时需要注意下面几点:
1)修改堆栈,在STARTUP.S 文件中的初始化堆栈为 StackUsr-20*4
2)设置编译参数-apcs/intervork,需要注意是修改 Language Settings/ARM C
Compiler/ATPS 下面的。我一开始的时候不小心选择的语言设置是ARM Assembler ,结果运
行程序后一写Flash 就错,大家要选准语言设置。
3)变量定义,由于一次至少写512 个字节,所以跟读写操作的变量最好定义为uint32 类型
的,我犯的一个错误是将变量定义为uint8 类型的,如下面:
uint8 i;
for(i=0;i<512;i++)
source[i]=0x41;
RamToFlash(0x00002000, (uint32)source, 512); // 写数据到扇区1
结果可想而知,一直在for 循环中运行而跳不出来,这到给我们一个IAP 不好用的假象。
LPC29xx QEI与FMC实战:编码器解码与Flash存储技术详解 在嵌入式运动控制系统中,实时获取电机位置与速度是构建高性能闭环控制的基础。正交编码器通过输出两路相位差90度的方波信号来传递运动信息,其硬件解码原理在于利用信号边沿和相位关系判断方向并计数。这项技术的核心价值在于将CPU从繁重的实时信号处理中解放出来,实现高精度、高响应的位置与速度测量,广泛应用于工业自动化、机器人及精密仪器领域。LPC29xx微控制器集成的硬件正交编码器接口(QEI)和Flash/EEPROM控制器(FMC)正是为此设计。QEI模块能自动完成编码器信号的解码、方向判断和速度测量,而FMC则 阅读详情

相关推荐

LPC292x Flash与DMA控制器实战:从原理到性能优化

在嵌入式系统开发中,Flash存储器和直接内存访问控制器是提升系统实时性与效率的两大核心硬件模块。Flash控制器负责管理非易失性存储,其预读取与缓冲机制能有效弥补CPU与存储间的速度差,是优化启动时间和代码执行效率的关键。DMA控制器则作为数据搬运的专用引擎,通过接管外设与内存间的数据传输,能显著降低CPU负载,实现高效并发处理。理解其工作原理,如缓冲线、等待状态计算、通道配置与链表模式,对于开发工业控制、汽车电子等高实时性要求的应用至关重要。本文以NXP LPC292x系列ARM9微控制器为例,深入解析

weixin_33769125的博客 341

串口 单片机 文件_单片机入门教程之烧写程序方法

此单片机入门教程主要讲的51单片机,和其他的单片机编程烧写所涉及的软件会有出入,51单片机是最基本的入门,入门好了,学习其他单片机不会是难题,上几篇文章讲了单片机最基本的东西,今天这节就来说说单片机怎么烧写程序 一、需要下载的软件1、USB转串口驱动:CH340、PL2303、FT232CH340下载模块2、STC-ISP 程序烧写软件STC-ISP 程序烧写软件界面二、USB转串口普及市面上常...

weixin_39762348的博客 624

ARM7TDMI-S内核与LPC2000系列微控制器深度解析与实战指南

在嵌入式系统开发领域,微控制器(MCU)是连接硬件与软件的核心。其内部架构,特别是精简指令集(RISC)和流水线设计,决定了指令执行效率和系统性能。ARM7TDMI-S作为经典的32位RISC处理器,通过三级流水线机制实现了高效的指令吞吐。这种架构设计带来了高代码密度和低功耗的技术价值,使其在资源受限的工业控制、通信网关等场景中广泛应用。本文聚焦于基于ARM7TDMI-S内核的NXP LPC21xx/LPC22xx系列微控制器,深入剖析其系统架构、外设配置及开发实战。文章将结合**向量中断控制器(VIC)*

weixin_30938149的博客 333

LPC2000 FLASH UTILITY 初体验/LPC2000 FLASH UTILITY 2.2.3下载地址

以前是用的FLASH Magic,最近一个板子用他下载不了程序就换LPC2000 FLASH 用用。   在官方网站下载了一个LPC2000 FLASH UTILITY 2.2.0,用不了,就在ZLG的网站上找了一个2.2.3的。   LPC2000 FLASH UTILITY 2.2.3下载地址: http://www.zlgmcu.com/download/downs.asp?ID=...

weixin_33929309的博客 1137

LPC214x Flash编程与调试接口实战指南:ISP/IAP机制与JTAG/ETM应用

在嵌入式系统开发中,Flash存储器的编程与调试是核心基础技能,它直接关系到固件的烧录、更新与现场维护。其原理基于芯片内部的硬件编程接口,通过特定的命令序列与时序控制,实现对非易失性存储器的擦除与写入。这项技术的核心价值在于支持产品的全生命周期管理,包括在系统编程(ISP)用于产线烧录与板卡恢复,以及在应用编程(IAP)实现固件在线升级(FOTA)和参数存储等高级功能。典型的应用场景涵盖工业控制、物联网设备以及消费电子等领域,开发者需要深入理解其底层机制以构建稳定可靠的系统。本文聚焦于广泛应用的ARM7微控

548

LPC2000 Flash Utility V2.2.3

烧录软件 LPC2000 Flash Utility V2.2.3

LPC29xx QEI与Flash/EEPROM控制器实战解析

在嵌入式系统与电机控制领域,微控制器外设的深入理解是提升系统性能与可靠性的关键。正交编码器接口作为核心位置与速度反馈模块,其硬件解码机制能显著降低CPU负载,通过边沿计数、数字滤波与中断系统实现高精度数据采集。非易失性存储器控制器则负责程序与数据的可靠存储,涉及Flash的扇区擦除、页编程以及EEPROM的两步写入等底层操作。这些技术共同支撑了实时控制系统的稳定运行与生命周期管理。本文聚焦于NXP LPC29xx系列,详细剖析其QEI模块的位置跟踪、速度测量原理,以及Flash/EEPROM控制器的安全编程

weixin_30800987的博客 265

lpc2000 flash utility v2.2.3

NXP的串口下载工具LPC2000 Flash Utility v2.2.3

LPC2000的Flash

1. LPC2000的Flash简介  LPC2000的Flash存储器系统包含128kB Flash器件的16个扇区和256kB Flash器件的17个扇区。Flash存储器从地址0开始并向上增加。Flash boot装载程序同时提供片内Flash存储器的ISP和IAP编程接口。IAP、ISP和RealMonitor程序都位于boot扇区。boot扇区存在于所有的器件当中。ISP和IAP命令不

subkiller的专栏 2468

lpc2000_flash_utility

用于飞利普的arm下载,就是下载用的啊。。。。。。。。。。。。。。。。。。

LPC2000 FLASH Utility v2.2.2

LPC2000 FLASH Utility v2.2.2大家都明白,不用我说什么了.下载后解压缩就可以直接运行"LPC210x_ISP.exe"就可以了,完全免费的.支持WINDOWS的任何系统.

ARM9嵌入式开发:LPC2917/19 Flash与内存控制器优化实战

在嵌入式系统开发中,内存管理是决定系统性能与稳定性的核心技术。其核心原理在于通过高效的控制器,协调CPU与各类存储器(如Flash、RAM)之间的数据交换,以最小化访问延迟。这项技术的核心价值在于提升代码执行效率与实时响应能力,尤其在资源受限的嵌入式场景中至关重要。Flash内存控制器通过预读取、双缓冲等机制优化代码获取,而外部内存控制器则为系统扩展提供了灵活接口。本文以NXP LPC2917/19系列ARM9微控制器为例,深入剖析其**Flash内存控制器(FMC)**的异步读取与缓冲机制,以及**外部静

jlins_you的专栏 342

LPC2000系列,ISP下载程序

LPC2000系列,ISP下载程序,ARM,NXP

lpc2000 filash utility 程序烧写工具_单片机烧录程序的次数

单片机是可编程器件,开发者把程序写好、编译完之后,需要烧录到单片机中,单片机才能按照开发者的逻辑去执行。在这个烧录的过程中需要用到专用的烧录工具。比如51单片机的USB/TTL、STM单片机的STlink等。使用过单片机开发板的同学都清楚,程序编写完了后,在调试的过程中可能会烧录很多次程序,尽管照这样,单片机还是能一直烧录,那么单片机的烧写次数是不是无限的呢?单片机烧写程序的次数是一定的...

weixin_32927133的博客 763

el-table通过上下左右键移动光标

在Element Plus的el-table中包含el-input和el-select组件,要实现上下左右键控制光标位置,需要通过focus和blur跟踪判断当前是哪个el-input或el-select有焦点,当按键按下时,通过监听,计算下一个获取焦点元素的索引,通过focus方法将焦点切换至改元素。

秋思的博客 1350

cvtColor +内存泄漏

题目不知道怎么取,因为cvtColor并没有产生内存泄漏,但是我由于没有正确使用cvtColor而出现了内存泄漏的问题,所以暂且以cvtColor+内存泄漏为题 1.应用背景 项目中用到cvtColor的地方是需要将灰度图转为3通道的彩色图(实际上转换后仍然为灰色的,但是电脑认为的是3通道的彩色图了) 因此需要用到以下语句 cvtColor(src_img, cvMtxRGB, C

smilebluesky的专栏 6059

深入解析NXP LPC21xx/LPC22xx ARM7微控制器架构与开发实战

微控制器(MCU)作为嵌入式系统的核心,其架构设计直接决定了系统的性能、功耗与成本。基于精简指令集(RISC)的ARM处理器内核,凭借其高性能、低功耗的特性,在工业控制、消费电子等领域广泛应用。ARM7TDMI-S作为经典的32位RISC内核,通过引入16位Thumb指令集,在保持性能的同时显著提升了代码密度,降低了存储成本。其技术价值在于为资源受限的嵌入式应用提供了一个高效、可靠的运算平台。NXP的LPC21xx/LPC22xx系列微控制器正是基于ARM7TDMI-S内核的典型代表,它集成了丰富的外设和先

weixin_33985507的博客 442

【UE 反射】反射的原理是什么?如何使用机制?

静态类型检查确保了类型的早期一致性和高效的代码执行,但减少了灵活性。动态类型检查提供了更大的灵活性,但增加了运行时的开销和潜在的错误。反射作为一种动态特性,无论是在静态类型语言还是动态类型语言中,都提供了强大的运行时类型操作能力,但也伴随着性能和安全性方面的权衡。通过理解这些联系,开发者可以在不同的编程语言和应用场景中选择适合的类型检查方式和反射机制,以实现所需的动态行为和灵活性,同时保证性能和安全性。

hhw_hhw的博客 6034

P89LPC938单片机IAP固件更新机制详解与实战指南

在嵌入式系统开发中,固件更新是保障设备长期稳定运行和功能迭代的关键技术。其核心原理在于,通过芯片内部预先固化的Bootloader程序,实现在应用程序运行期间对自身存储的Flash存储器进行擦除和编程操作。这项技术的核心价值在于,它使得部署在远程或难以物理接触的设备具备了远程修复漏洞和升级功能的能力,极大地提升了产品的可维护性和生命周期。在物联网终端、工业控制器等应用场景中,可靠的固件更新机制至关重要。本文以经典的增强型51内核单片机P89LPC938为例,深入剖析其IAP(在应用编程)机制,特别是其**授

weixin_33850015的博客 462

别再手动调参了!用Optuna+PyTorch搞定Transformer时序预测超参数(附完整代码)

本文详细介绍了如何利用Optuna和PyTorch实现Transformer时序预测模型的自动化超参数调优。通过贝叶斯优化技术,显著提升单变量时序预测的效率和准确性,并附有完整代码实现。文章涵盖模型架构设计、数据预处理、Optuna调参实战及生产环境部署建议,为开发者提供一站式解决方案。

weixin_33704234的博客 578

Reality Capture控制点修复/合并模型

通过增加控制点/修改对齐设置参数来修复模型被分为两个部分的解决方法

草履虫建模的博客 5254

LPC2000系列ARM处理器重映射原理的分析与实现

LPC2000系列ARM处理器重映射原理的分析与实现 张毒俊牟龙华 (同济大学电气工程系上海200331) 摘要:重映射是ARM嵌人式软件开发中一个非常重要的概念,它是系统初始化过程中一个重要的环节。本文详细论述了什么是重映射,为什么要进行重映射,以及怎样实现重映射,并以LPC2210处理器为例给出了从片外Flash启动和重映射的实现方法。同时对在ARM嵌入式软件开发过程中经常遇到一些基本概

Amao_come_on 的专栏 1256

Android车载桌面开发实战:从CarLauncher源码解析到自定义Launcher开发(Android 11)

本文深入解析了Android 11中CarLauncher的源码架构与核心模块,并提供了从零开始定制开发车载Launcher的完整实战指南。内容涵盖车载桌面的独特定位、驾驶场景优化、多屏协同、动态内容嵌入等核心挑战,以及如何构建符合安全规范、体验流畅的自定义车载桌面应用,是车载应用开发者提升系统级定制能力的实用参考。

weixin_29266647的博客 516

LPC2104的Boot与Remap详解

from:http://hi.baidu.com/suqiniat/blog/item/eb8ee7a9fd4f45f91f17a25f.html最近在学习ARM的过程中,遇到了一些以前在8位机、16位机应用中所没有见过的专业术语。其中,比较困扰和麻烦的两个名词术语就是“Boot”与 “Remap”。同时,在网上也经常见到有网友就这两个技术名词提出疑问。好在当今网络是如此发达,使得我们可以很快就得...

weixin_30911809的博客 112

C#实现低通和高通滤波算法

低通滤波器允许通过低于某个截止频率的信号成分,并且抑制高于该频率的成分。而高通滤波器则允许通过高于某个截止频率的信号成分,并抑制低于该频率的成分。巴特沃斯滤波器是一种对称的滤波器,具有平坦的幅度响应和最小的群延迟。低通和高通滤波是数字信号处理中常用的滤波技术,用于滤除或增强信号中的特定频率成分。在本篇文章中,我们将使用C#编程语言来实现低通和高通滤波算法。以上就是使用C#实现低通和高通滤波算法的示例代码。你可以根据自己的需求调整截止频率和采样率,将这些代码应用于你的项目中。是滤波器的截止频率,

XisVisual_Basic的博客 1275

WorkBuddy CAD 审图救命课:约束、单位、尺寸链一次查清,打样前拦住返工

最危险的 CAD 文件不是打不开,而是看起来完整却混用了毫米与英寸、草图欠约束、关键尺寸没有来源。审图任务必须先列规则,再输出问题位置。 本课不会用“AI 一键完成”制造错觉,而是把 WorkBuddy、FreeCAD 0.21.2、OpenCascade 7.7 与人工审阅组成一条可复现链路。你会从“一份模拟 STEP 文件、参数表、装配基准与审图标准”出发,得到“单位报告、约束清单、尺寸链风险表与人工复核标记”,并学会用真实命令、错误信号和停止条件判断成果能不能进入下一阶段。

yueyeguzhuo的专栏 268
上一篇: 双极集成电路
下一篇: ADS下的分散加载文件应用实例
panqihe
博客等级 码龄20年 31粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值