打印
[技术问答]

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

[复制链接]
905|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正确执行,否则可能引起不确定的
结果,甚至损坏器件。

使用特权

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

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

使用特权

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

使用特权

评论回复
7
wahahaheihei| | 2018-11-29 20:46 | 只看该作者
多谢大神,多谢楼主抛转

使用特权

评论回复
8
wahahaheihei| | 2018-11-29 20:46 | 只看该作者
抛砖

使用特权

评论回复
9
xinpian101| | 2018-11-29 22:39 | 只看该作者
貌似还真这样

使用特权

评论回复
10
yiyigirl2014| | 2018-11-30 08:58 | 只看该作者
IAP是写入,code是纯读取,两码事

使用特权

评论回复
11
598330983| | 2018-11-30 23:43 | 只看该作者
多谢大神的讲解

使用特权

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

本版积分规则

55

主题

187

帖子

2

粉丝