NOR FLASH 地址左右移

本文探讨了在处理NOR FLASH时,由于处理器与存储器位宽不同导致的地址错位问题。在发送解锁命令时,需要左移地址位来匹配NOR的视角,而发送扇区地址时,由于程序员通常从CPU角度出发,因此地址需要右移一位来抵消内部函数的左移操作。NOR FLASH的读写操作是以16位进行,这涉及到地址线的错位连接和存储控制器的作用。
摘要由CSDN通过智能技术生成

疑惑点:为什么在发送解锁命令时,我们不用右移一位,而发送扇区地址时却要右移一位(nor_cmd函数内部已经左移一位)

处理器与NOR flash存储器的错位连接:

对于处理器来说,一个地址对应的是一个字节(8位),也就是说处理器的地址线对应的最小数据单元是字节。

如果处理器最小数据单元是8位,存储器位宽是16位,那在我们写程序时会特意进行16位操作吗?显然不会,我们写代码时,可不管外设到底是多少位。这是如何实现的呢?

原因:有存储控制器(MemoryController)这个中间层。存储控制器根据存储器的位宽,每次总是读/写16位数据。

外设位宽是8时,处理器的A0~AXX与外设的A0~AXX直接相连

外设位宽是16时,处理器的A1~AXX与外设的A0~AYY直接相连,表示不管处理器的A0是0还是1,外设看到的都是同一个地址,对应16位的数据,存储控制器对数据进行选择或组合,再提供给处理器。

外设位宽是32时,处理器的A2~AXX与外设的A0~AZZ直接相连,表示不管处理器的A0A1是00,01,10还是11,外设看到的都是同一个地址,对应32位的数据,“MemoryController”对数据进行选择或组合,再提供给处理器
 

32位的FLASH,FLASH的A0要接ARM的A2,因为32位地址表示4个字节,每次要跳4个字节的话࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值