完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
注意:如果点击空白处无法输入,则点击字会有输入提示符 | 则可以使用键盘进行输入!
此板块为 [ARM裸机加强版]
void nor_cmd(unsigned int offset, unsigned int cmd) { nor_write_word(NOR_FLASH_BASE, offset, cmd); } unsigned int nor_read_word(unsigned int base, unsigned int offset) { volatile unsigned short *p = (volatile unsigned short *)(base + (offset << 1)); return *p; } //------------------------------------------------------------------------------------------------------------- 这里的offset是基于nor角度看到的,那么nor_cmd(0x555,0xaa)时,cpu发出的地址实际是0xaaa,而nor的A0接在CPU的A1上,因此Nor看到的地址为0x555 然后出现问题在韦老师说的nor_cmd(addr>>1,0x30),假如现在我想擦出的扇区地址addr为0x4000,按照韦老师的写法,那么cpu发出的实际地址就是addr, 而nor这边看到的是addr>>1位,那么对应nor的扇区地址就不是0x4000,而是0x2000,这个地方实在无法理解,忘高人解答 |
|
相关推荐
3个回答
|
|
你理解得不错,想理解最后一个问题,需要知道: cpu认为一个地址对应一个字节,nor认为一个地址对应2个字节
|
|
|
|
老师能不能再详细点,还是无法理解,比如我要删除的扇区是addr = 0x10000;
假如是nor_cmd(0x10000,0x30),那么nor看到的地址也是0x10000; 可现在addr>>1 ,那么发出的地址nor收了 0x8000,怎么实现擦除呀,老师这个点真的好难理解啊 |
|
|
|
该读为例吧:
1.cpu接着外设nor 2.NOR它的数据最小单号是2字节, 意思就是说:你想从我这里读数据,我一次性给你返回2字节。 怎么从这2字节中挑出你感兴趣的,我不管。 3.现在cpu想访问0x4000地址的一字节数据, 它对应的是NOR上第0x2000个单元数据中的第1个字节, 注意:NOR上每个单元是2字节数据 4.内存控制器根据CPU发来的地址0x4000,右移1位得到0x2000,向NOR申请第0x2000个单元数据 得到2字节数据 然后把其中第1个字节数据返回给CPU |
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2160 浏览 6 评论
1968 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4523 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 13:20 , Processed in 0.657310 second(s), Total 83, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号