韦东山Linux嵌入式课程社区
直播中

郭淑慧

7年用户 159经验值
私信 关注

如何纠正NOR Flash视频中的地址问题?

注意:如果点击空白处无法输入,则点击字会有输入提示符 | 则可以使用键盘进行输入!

此板块为  [ARM裸机加强版]
  • 问题所在章节: NOR Flash 视频中的地址问题


在老师的视频中,写NOR的具体地址时,nor_cmd(addr>>1, val); 这里地址右移1位,老师的解释是地址线A1->A0的缘故.我反复看了视频,还是感觉不对.
因为 `nor_cmd`函数已经将地址转换为nor视角的地址了,也就是说我想写nor中的x地址,我们应该直接操作地址x即可.
但是测试之后发现代码确实跑的没问题?那么我哪里理解错了呢?
后来想到 Nor是16位位宽的,也就是说Nor中的0,其实对应了存储单元[0,1],也就是如下所示:
NORAddr     字节存储单元  
3                        [6,7]
2                        [4,5]
1                        [2,3]
0                        [0,1]
结论: 所以这里的地址>>1,并不是因为地址线偏移(其实也是因为地址线,因为是16位,所以偏移1位),但是从函数的角度来说,实际是因为nor的地址是16位宽的,我们需要转换为8位位宽的 addr>>1
后面的测试了下往 addr=1里面写`12`,实际是在0,1里面写,往addr=2里面写`12`,实际是往2里面写,往addr=3里面写,也是在往2里面写

回帖(1)

王欢

2019-4-4 15:58:54
老师的解释是地址线A1->A0的缘故,nor_cmd中左移了一位
因此这里调用的时候右移一位抵消掉,还是cpu这边看到的地址~~
理解的都没错吧
举报

更多回帖

发帖
×
20
完善资料,
赚取积分