nor flash 读写操作时的地址偏移问题

attachments-2020-04-IuMnCB035e947919d2639.png

上图里面同样用的是nor_cmd命令,为什么解锁时的0x555和0x2aa的地址就不用">>1",但是发出扇区地址时就需要呢?

同样是CPU 向Nor发出地址,由于硬件问题,地址都需要向左偏移1位,为什么发出扇区地址时就不用偏移,用">>1"去抵消呢

attachments-2020-04-nKlcfgXg5e9479a0f045d.png

请先 登录 后评论

2 个回答

Bright-Ho

同样的疑问,视频上说发出这个扇区地址,是站在norflash的角度看的,但还是不太明白...

请先 登录 后评论
韦东山 - 百问网技术总监
擅长:嵌入式开发

请记住最核心的问题:NOR的地址线上的数据是什么。

解锁时提供的0x555,是nor看到的0x555;

 do_erase_nor是提供的addr,是cpu看到的addr。

nor_cmd里用的地址,是“”nor flash看到的地址“”。

1. 解锁时的0x555和0x2aa的地址:

0x555, 0x2aa是读NOR手册得到的值,我们要让NOR FALSH是A0,A1,A2上出现0x555,0x2aa这样的值。

2440的A1接到NOR的A0,所以要想让NOR看到0x555, 0x2aa,我们的程序要发出 0x555<<1, 0x2aa<<1,

在nor_write_word里左移了1位。


2. do_erase_nor时,addr是我们想擦除的地址,是2440这边认为的地址。我们想让cpu的A0,A1,A2。。上出现addr

那么NOR flash看到的就是addr>>1


请先 登录 后评论
  • 3 关注
  • 0 收藏,433 浏览
  • 工作真难找 提出于 2020-04-13 22:41