在线时间4746 小时
UID3441752
注册时间2017-11-21
NXP金币82800
TA的每日心情 | 开心 2025-7-11 08:53 |
---|
签到天数: 301 天 连续签到: 2 天 [LV.8]以坛为家I
管理员
  
- 积分
- 39232
- 最后登录
- 2025-7-18
|
管管带你谈谈Flash相关的问题
哈喽,我想大家在”玩板子“时或多或少会遇到一些Flash得一些大大小小得问题,今天我们就来说道说道这个flash。
先说一说什么是Flash吧>>>
传统的FLASH分为Nor falsh和Nand flash。
(1)Nor flash
Nor flash存储以块为单元,写入时必须先擦除,并且擦除和写入的速度都很慢。但nor fash具有SRAM接口,有单独的地址总线和地址总线,接口简单,就像是访问ROM一样,读取速度快,能随机访问存储单元。正是这些特性,所以nor falsh被广泛用来存储启动代码。Nor falsh的价格较贵,市面上一般1~16M的小容量的FLASH居多。
目前,Nor flash有两种标准JEDEC和CFI。
JEDEC:全称是Joint Electron Device Engineering Council 即电子元件工业联合会。JEDEC是由生产厂商们制定的国际性协议,主要为内存制定。JEDEC用来帮助程序读取Flash的制造商ID和设备ID,以确定Flash的大小和算法,如果芯片不支持CFI,就需使用JEDEC了。工业标准的内存通常指的是符合JEDEC标准的一组内存。
CFI:即公共闪存接口(Common Flash Interface)。CFI是一个公开的标准的从Flash Memory器件中读取数据的接口。它可以使系统软件查询已安装的Flash Memory器件的各种参数,包括器件阵列结构参数、电气和时间参数以及器件支持的功能等。CFI标准的应用解决了各个FLASH厂商操作命令集和电气参数千差万别的难题,目前市面上的Nor flash大多支持CFI校准。
CFI标准规定先往FLASH数据总线写入55H,再写入98H,然后从地址10H处读取3个数据,如果这3个数据是'Q'、'R'、'Y',那么遵循CFI标准。在其它地址,保存了FLASH的其它信息,如生产厂商ID,设备ID,FLASH总线宽度,BLOCK总数据,BLOCK大小等所有FLASH有关的信息。
(2)Nand flash
和Norflash一样,Nand flash存储以块为单元,写入时必须先擦除。nand flash擦除和写要比nor flash快,但读取速度比它慢。Nand flash采用复杂的IO口来串行地访问数据,读和写的最小单元都是一个页,所以CPU不能像nor flash一样直接运行FLASH上的代码。Nor falsh的优势是价格便宜,市面上一般以大容量为主,容量大小一般为8M~几个GB。Nand flash一般用来存储数据,如用来做文件系统存储空间。
Nand falsh的一个页的数据分为数据区域和额外数据区(称为OOB),例如一个页包含2KB的数据区和64B的OOB。OOB数据区一般用来存储特定的数据,如数据校验、坏块标识等。
Nand flash在擦写的过程中可能形成坏块,如果检测到坏块,一般在OOB数据区标识它。而实际上,Nand flash从工厂生产出来就可能存在坏块,有关坏块标识的细节可以相应的FLASH手册上找到说明。
.....先不喷这些文字了,我们进入正题
LPC篇:
问题1:LPCXpressofor LPC 如何将flash代码copy到ram运行
解决方案:点击查看
问题2:lpc546xx怎样读Flash
解决方案:直接读就可以了,类似这样,声明一个指针,然后把地址付给它。操作这个指针就行:
uint16_t *g_LCDImageBuf;
g_LCDImageBuf = (uint16_t *)0x20010000;
问题3:LPC55xx: 为什么FLASH写操作总失败
一些用户在执行如下FLASH写操作时可能会遇到如下的问题:status =FLASH_Program(&flashInstance, destAdrss, (uint8_t *)s_bufferFF, 8);执行完上述代码后,对应的地址区间数据没有变化,写入失败,返回错误代码101。
解决方案:点击查看
问题4:LPC55Sxx Flash读取遇到HardFault该如何解决?
解决方案:点击查看
问题5:LPC54608 SPIFlash启动问题
解决方案:查看LPC54608的user manual,是只是SPIFI的,所以是可以从SPIFI外部flash启动的。关于相关资料,除了user manual, 你可以参考下LPC54608的KSDK代码,下载路径:http://kex.nxp.com/en/welcome,生成SDK,选择芯片为LPC54608,然后SPIFI的代码在:
SDK_2.0_LPCXpresso54608\boards\lpcxpresso54608\driver_examples\spifi
问题6:LPC1788怎么样将程序烧录到片外flash中运行起来?
解决方案:LPC1788没有SPIFI的接口,所以你还是需要使用外部的NOR flash,然后通过SPI接口去做。
你可以参考这个代码:点击
经验分享:
1.LPC82x Flash ISP 探究
2.基于LPC54XXX从外部flash启动并操作flash功能
3.[LPC55(S)xx]LPC55(S)6x Flash 擦写时间测试
————————————————————————————————————
i.MX RT篇:
问题1:rt1052读写flash问题
解决方案:建议用官方的SDK flexSPI 代码:SDK_2.6.1_EVKB-IMXRT1050\boards\evkbimxrt1050\driver_examples\flexspi,然后参考你flash的datasheet去修改下LUT里面的读写命令。然后去擦除,读写外部flash看看是否可以正常工作。另外,如果你是想用做代码boot的话,建议你还是使用官方的EVK板子上面的flash,这样用起来会比较顺。
问题2:【RT1051】怎么从QSPI FLASH中拷贝bootloader到ITCM并运行?
解决方案:点击查看
问题3:rt1052flash驱动问题
解决方案:点击查看
问题4:RT1052从QSPI FLASH启动,还可以用这颗Flash存放数据吗?
解决方案:点击查看
问题5:RT1052如何配置分散加载文件使用NOR FLASH?
解决方案:点击查看
经验分享:
1.RT105X XIP无DCD qspi flash image实例分析
2.RT105X烧录RAM APP到qspi flash image实例分析
3.MIMXRT1050 EVKB从QSPI flash启动
————————————————————————————————————
K系列:
问题1:【KEA128】如何把数据写入flash,刚上电时读取数据(详情)
解决方案:关于Flash的操作,请参考KEA128库中的flash 例程,点击
问题2:KE06 flash 擦写问题
解决方案:点击查看
问题3:KE04 FLASH读取异常
解决方案:点击查看
问题4: KL25 将变量存入片内Flash
解决方案:参考下官方SDK KL25的flash代码:点击
经验分享:
1.Kv31的pflash例程报错解决
今天先总结到这里,待我下回继续>>>
|
|