Nor Flash 编程

1. 注意Nor Flash的 数据宽度。例如,8-bit, 16-bit等。

它们会在program,erase,read id过程中,产生小小的confusing,

比较好的方式,个人以为,可以定义一个Macro,如

Addr(base, cmd)   (*(data_width *)(base + ( cmd <<(data_width/8 - 1) ) ) ),

其中 base 即为当前Flash 片选的基地址,cmd,就是Nor Flash手册中定义的Address cycle的内容

对于这个宏的引用,比如

Addr(0xFF800000,  CMD_READ_ID_ADDR1) = CMD_READ_ID_DATA1;   第一个cycle的 地址 和数据

 

2. 要注意Nor Flash的 数据宽度,会在 PCB 的 layout 有些体现,也就是DQ线的连接,而这个问题在对Nor Flash进行 非word对齐的 word program中,要多加注意

后来和硬件的同事确认了一下,有时硬件为了PCB 总线的方便,可能会将数据线做些调整。

比如,nor flash 的数据线是 DQ0-DQ15,而从GPCM 连过来的数据线做了一个颠倒

Nor Flash的 DQ0-DQ7 连接 GPCM的DQ8-DQ15

而Nor Flash的DQ8-DQ15 连接 GPCM的 DQ0-DQ7

 

3. sector erase 中, 注意最后一个 操作cycle中的 addr部分,其用来表示要擦除的 sector

诸如, *(U16 *)(base + sec_num << 11) = CMD_SECTOR_ERASE_DATA6;

其中的sec_num来源于 地址总线上的 11-21 bit,具体应该查阅相关的 nor flash 数据手册的定义,在 command sequence的下脚处通常都会指明的


4. block erase中,要擦出的block 来自于地址线上的A21-A15,利用掩码获取到这些位,右移 15位 就得出block number了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值