[技术问答]

IAP读和CODE区域读取的区别在哪里?

[复制链接]
813|10
手机看帖
扫描二维码
随时随地手机跟帖
18576478035|  楼主 | 2018-11-29 11:05 | 显示全部楼层 |阅读模式
使用N76E003单片机因为RAM区域不够用,然后把常量存在FLASH中,为什么不用IAP在线编程也可以读取它?想知道CPU是如何读取它的,读取FLASH不是需要IAP操作吗(APROMRead),存在code 区域,程序调用时并没有执行IAP操作啊,这样会不会出问题
18576478035|  楼主 | 2018-11-29 11:15 | 显示全部楼层
求助大神

使用特权

评论回复
tianxj01| | 2018-11-29 11:23 | 显示全部楼层
IAP操作,只是在需要读取特定区域的时候,或者进行自编程,才是必须的,其余的FLASH,包括我们的代码,都是常规存储器操作就可以读取的。
比如我们编辑了一个表格数据,存储于CODE区域,对应的操作就是常规的间址读指令。
如果我们需要对一个特定的CODE区域进行数据改写,也就是所谓自编程,这才会用到IAP。但只要编程后,数据读操作就又是常规的了。
也有特定的读操作必须用IAP实现,那只是内部特定的单元,比如UID,这个就不在这里讨论了。

使用特权

评论回复
18576478035|  楼主 | 2018-11-29 11:30 | 显示全部楼层
tianxj01 发表于 2018-11-29 11:23
IAP操作,只是在需要读取特定区域的时候,或者进行自编程,才是必须的,其余的FLASH,包括我们的代码,都是 ...

修改FLASH数据通常需要很长时间,不像RAM那样可以实时操作。而且擦除、编程或读取FLASH数据需要遵循
相当复杂的时序步骤 read_APROM_BYTE(Address+i); 我看芯片手册上读取flash 也是有特定规则的啊,不按照这种方法使用常规方法读取也是可以的,但会不会不过用户必须遵循一定规则,以确保IAP正确执行,否则可能引起不确定的
结果,甚至损坏器件。

使用特权

评论回复
tianxj01| | 2018-11-29 11:37 | 显示全部楼层
18576478035 发表于 2018-11-29 11:30
修改FLASH数据通常需要很长时间,不像RAM那样可以实时操作。而且擦除、编程或读取FLASH数据需要遵循
相当 ...

你必须明确,这里读操作是指在进入IAP模式后,比如编程后的校验,而不是常规程序运行段的CODE数据读操作。
所以,在完成IAP后,退出IAP模式,对已经编程过的部分,除了特定区域,完全不必考虑。
ISP就是这么做的。

使用特权

评论回复
wahahaheihei| | 2018-11-29 20:45 | 显示全部楼层
楼上大神说的有道理啊。code是编程烧录时候写入进去的。
IAP是程序自操作的。
code的代码只进行一次初始化,然后就是只读取操作,所以不是一回事了。

使用特权

评论回复
wahahaheihei| | 2018-11-29 20:46 | 显示全部楼层
多谢大神,多谢楼主抛转

使用特权

评论回复
wahahaheihei| | 2018-11-29 20:46 | 显示全部楼层
抛砖

使用特权

评论回复
xinpian101| | 2018-11-29 22:39 | 显示全部楼层
貌似还真这样

使用特权

评论回复
yiyigirl2014| | 2018-11-30 08:58 | 显示全部楼层
IAP是写入,code是纯读取,两码事

使用特权

评论回复
598330983| | 2018-11-30 23:43 | 显示全部楼层
多谢大神的讲解

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

187

帖子

2

粉丝