查看: 8385|回复: 1

管管解惑之Flash相关的问题

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3868

    主题

    7472

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39232
    最后登录
    2025-7-18
    发表于 2020-5-26 15:54:53 | 显示全部楼层 |阅读模式
    管管带你谈谈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例程报错解决


    今天先总结到这里,待我下回继续>>>



    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-5-27 11:18
  • 签到天数: 35 天

    连续签到: 1 天

    [LV.5]常住居民I

    3

    主题

    85

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    268
    最后登录
    2020-6-18
    发表于 2020-5-27 11:20:21 | 显示全部楼层
    优秀了,我的管管
    签到
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 05:08 , Processed in 0.078874 second(s), 19 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表