打印
[技术问答]

IAP 操作相关注意事项以及常见问题

[复制链接]
1175|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yorkbarney|  楼主 | 2024-2-24 15:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新定义芯片带独立 EEPROM,其中 RD8G403 独立 EEPROM 为 128bytes、RD8X05 独立 EEPROM 为 1Kbytes、RD8X36/37 独立 EEPROM 为 6Kbytes,均可反复写入 10 万次,另外可设置全 Flash ROM 允许 IAP 操作,其中 RD8G403 芯片 Flash ROM 的 IAP 操作可重复写入 1 万次,RD8X36/37、RD8X05 系列芯片 Flash ROM 可反复写入 10 万次。RD8X36/37、RD8X05 系列芯片在进行 IAP 操作前,用户必须对目标地址 所属的 Sector 进行扇区擦除,一个 Sector 为 512bytes。 此文档主要对 IAP 使用过程中常见的问题以及相关注意事项进行说明,包含以下几个内容: 1、 IAP 操作注意事项; 2、 IAP 扇区擦除流程; 3、 Flash ROM/EEPROM 超出使用寿命后执行 IAP 操作的结果; 4、 IAP 写入的数据不正确; 5、 EEPROM 区域如何烧录数据; 6、 烧录时如何将 EEPROM 中的数据擦除; 7、 IAP 操作例程获取; 以下为具体内容: 1、IAP 操作注意事项 1) RD8X36/37系列芯片在进行 IAP擦除和写入操作时必须使用 IAP 操作库:RD8X3X_IAP_lib_VXXX.lib 的 API 接口,否则会产生异常;IAP 操作库资料可在新定义官网(www.rdsmcu.com)搜索“IAP 操作 库”关键字,进行下载; 2) 芯片在进行 IAP 操作的过程中不允许响应外部中断,因此,在进行相关操作时,需要先把总中断关 闭,即 EA=0;待完成 IAP 操作后再恢复总中断开关; 3) IAP 操作语句之后务必要加上至少 8 个 NOP 指令,以保证 IAP 操作完成后可正常执行后续的指令; 4) IAP 操作完成后,需要设置 IAPADE 寄存器返回 Flash ROM 区域; 5) 烧录时,需要在烧录 Option 选项的 IAP Range 选项下设置允许 IAP 操作范围,如果 IAP 操作的地址 不在 IAP 允许操作的范围内,则无法写入数据; 6) APROM 区域数据的写入是 byte 操作,是一个字节一个字节写与读取的,每写/读一个字节需要指定 一个地址; 7) IAP 的擦除和写入流程可以在对应芯片型号的规格书中的“IAP 操作 C 语言例程”进行查看; 8) 允许 IAP 操作的区域选择全 Flash ROM 允许操作有一定的风险,需要用户在软件中做相应的安全处 理措施,如果操作不当可能会造成用户程序被改写!除非用户必需此功能(比如用于远程程序更新等), 否则不建议用户使用; 9) RD8X36/37、RD8X05 系列芯片的 IAP 寿命次数为十万次,RD8G403 系列芯片的 EEPROM 寿命为 十万次,Flash ROM 寿命为一万次,实际产品的应用中,只是需要把仅几个 Bytes 的数据写到存储 器,采用固定地址写入数据会使某些地址过早达到 IAP 寿命次数,因此建议用户可采用分扇区、循环 地址写入的方法进行 IAP 操作,具体的方案可以查看《新定义 RD8G403 系列 MCU 应用指南》 “EEPROM 的使用算法”章节,如需下载此文档请到新定义官网(www. rdsmcu.com)搜索“应用指南” 关键字,进行下载; 10) RD8X36/37、RD8X05 系列的芯片,IAP 写入数据前需要对目标地址所在扇区进行扇区擦除,建议用 户在擦除前做好数据备份,防止擦除过程中掉电而发生旧数据被擦除而新数据未写入的意外情况; 11) RD8X36/37、RD8X05 系列芯片,如果是仿真查看 IAP 数据,需要注意的是进入仿真之前,芯片会重 新烧录一次程序,芯片在烧录程序之前会先将芯片的整个 Flash ROM 区数据擦除,然后再烧录程序, 2 / 3 V1.0 IAP 操作相关注意事项以及常见问题 所以在进入仿真之前 IAP 的数据会被擦除; 2、IAP 扇区擦除流程 RD8X36/37、RD8X05 系列的芯片,在执行 IAP 写操作前需要确保目标地址已被擦除为 0X00,支持扇区 擦除,一个扇区(sector)为 512byte,具体 IAP 扇区擦除例程请参考规格书,IAP 擦除操作流程如下; 3、Flash ROM/EEPROM 超出使用寿命后执行 IAP 操作的结果 RD8X36/37、RD8X05 系列的芯片,Flash ROM、EEPROM 寿命为 10 万次,超过寿命再执行 IAP 写/ 擦除操作的话,数据无法写入成功; RD8G403 系列的芯片,Flash ROM 寿命为 1 万次写入,EEPROM 寿命为 10 万次写入,超过寿命再执 行 IAP 写操作,CPU Hold Time 时间将变为无限长,无法退出 IAP 模式,此时即使 WDT 开启也无法 复位,表现为程序无法继续执行; 可以把需要存 EEPROM 的数据,使用轮询的方式将数据存储到不同的地址,充分发挥 EEPROM 的寿命, 具体的方案可以查看《新定义 RD8G403 系列 MCU 应用指南》“EEPROM 的使用算法”章节,如需下载此 文档请到新定义官网(www. rdsmcu.com)搜索“应用指南”关键字,进行下载。 4、IAP 写入的数据不正确 1) 新定义 RD8X36/37、RD8X05 系列的芯片,IAP 写入数据前需要对目标地址所在扇区进行扇区擦除, 确认是否有擦除目标地址对应的扇区; 2) 确认烧录的 Option 选项中选择的 IAP 允许操作范围是否设置正确,该设置需要与操作的目标地址相 符; 3) IC 通过 IAPADE 寄存器设置 IAP 的拓展地址,即选择 IAP 操作针对 EEPROM 区域还是 Flash ROM 区域,查看设置是否正确; 4) RD8X36/37、RD8X05 系列芯片,如果是仿真查看 IAP 数据掉电是否可以保存,需要注意的是进入仿 真之前,芯片会重新烧录一次程序,芯片在烧录程序之前会先将芯片的整个 Flash ROM 区数据擦除, 然后再烧录程序,所以在进入仿真之前 IAP 的数据会被擦除,仿真看到的数据就是错误的; 5、EEPROM 区域如何烧录数据 编程区域选择: a) 如需 APROM 区域和 EEPROM 区域同时烧录,勾选 APROM 和 EEPROM; 3 / 3 V1.0 IAP 操作相关注意事项以及常见问题 b) 若仅单独烧录 EEPROM 区域,勾选 EEPROM;后续说明以 APROM 和 EEPROM 同时烧录 为例; 1) 若烧入 EEPROM 的代码长度不是 4 的倍数,那么不满 4 的倍数的地址将自动补 0; 2) 分别载入 APROM 和 EEPROM 文件,其中:EEPROM 区域载入的 HEX 文件为 EEPROM 区域 待烧录文件; 3) 文件载入完成,确认代码校验和无误,确认 option 无误; 4) 连接 RDLINK PRO,执行程序烧录的操作。 6、烧录时如何将 EEPROM 中的数据擦除 在烧录软件 RD Programming Tool 勾选 APROM 和 EEPROM 区域,分别载入 APROM 程序和 EEPROM 全部置 0 的 hex 文件,在烧录的时候就可以将 EEPROM 中的数据全部清 0。 7、IAP 操作例程获取 在对应芯片的规格书中对 IAP/EEPROM 操作的章节中,有扇区擦除,IAP 写数据,IAP 读数据的操作例 程可以查看,另外新定义芯片例程可以通过以下路径获取: 1) 可以在新定义的官网(www.rdsmcu.com)首页搜索对应的芯片型号,即可搜索出对应芯片规格书以及 例程; 2) 在 keil 上安装了新定义的 keil_C 插件之后,可以在 keil 的安装目录 keil\C51\RD_KEIL_Setup\DEMO 中找到新定义各型号的例程

使用特权

评论回复
沙发
bartonalfred| | 2024-3-1 19:55 | 只看该作者
一些IAP方案允许在系统运行时进行代码更新,而不会中断正常运行。

使用特权

评论回复
板凳
primojones| | 2024-3-1 20:22 | 只看该作者
在进行IAP操作时,确保设备电源稳定,以避免更新过程中因电源问题导致的固件损坏。

使用特权

评论回复
地板
usysm| | 2024-3-2 00:57 | 只看该作者
需要设计好通信协议,使得新程序能够通过有效的校验机制下载到设备中。

使用特权

评论回复
5
timfordlare| | 2024-3-2 07:29 | 只看该作者
IAP的复杂性取决于所选方案和实现细节。一些IAP技术可能相对简单,而另一些则可能更加复杂。

使用特权

评论回复
6
1988020566| | 2024-3-2 10:18 | 只看该作者
IAP操作中可能会遇到的常见问题包括扇区擦除问题、Flash/EEPROM使用寿命问题以及数据写入不正确等。

使用特权

评论回复
7
zerorobert| | 2024-3-2 16:41 | 只看该作者
扇区擦除问题是指在执行IAP操作时可能遇到的扇区擦除不完全或者失败的情况。这通常是由于扇区擦除流程中的一些特定步骤没有正确执行所致。当Flash ROM或EEPROM超出其使用寿命后,执行IAP操作可能会导致存储的数据不可靠或丢失。这是因为这些存储器都有有限的编程次数,一旦超过这个限制,存储器的单元可能会损坏。如果发现IAP写入的数据不正确,这可能是由多种因素导致的,比如编程接口的选择不当或者数据传输过程中出现错误。

使用特权

评论回复
8
youtome| | 2024-3-2 18:38 | 只看该作者
在写入新的应用程序到Flash之前,需要先擦除相应的扇区。
擦除过程可能会消耗一定的时间,因此需要有足够的耐心和合理的超时机制。

使用特权

评论回复
9
alvpeg| | 2024-3-2 22:43 | 只看该作者
对于EEPROM区域的烧录,需要使用专用的烧录器和烧录软件来进行。
烧录过程中要确保电压稳定,并按照正确的操作步骤进行。

使用特权

评论回复
10
belindagraham| | 2024-3-3 09:17 | 只看该作者
在进行IAP操作时,需要确保关键数据(如系统配置参数、用户数据等)不被覆盖或破坏。可以通过备份关键数据、使用不同的存储区域等方法来保护关键数据。

使用特权

评论回复
11
beacherblack| | 2024-3-3 11:08 | 只看该作者
必须保证Bootloader程序的稳定性和可靠性,以确保在升级过程中不会出现问题。

使用特权

评论回复
12
lihuami| | 2024-3-3 13:01 | 只看该作者
在进行IAP操作时,需要确保有足够的存储空间来存放新的应用程序代码。

使用特权

评论回复
13
deliahouse887| | 2024-3-3 15:02 | 只看该作者
在IAP过程中,设备能够响应外部命令,并在升级完成后能够恢复到正常工作状态。

使用特权

评论回复
14
yeates333| | 2024-3-3 16:56 | 只看该作者
选择最合适的IAP技术。              

使用特权

评论回复
15
lzbf| | 2024-3-3 18:49 | 只看该作者
检查是否正确设置了IAP模式的入口条件,如特定的按键组合、通信命令等。

使用特权

评论回复
16
gygp| | 2024-3-3 21:58 | 只看该作者
在进行IAP操作之前,建议先备份原始固件。这样,如果更新过程中出现问题,可以恢复到原始状态。

使用特权

评论回复
17
cemaj| | 2024-3-4 11:15 | 只看该作者
为了防止IAP操作影响到应用程序的正常运行,需要对Flash进行分区管理。通常,可以将Flash分为两个区域:应用程序区和IAP区。应用程序区存储用户的应用程序代码,IAP区存储IAP相关的代码和数据。

使用特权

评论回复
18
adolphcocker| | 2024-3-4 15:55 | 只看该作者
这可能是由于通信过程中的干扰,或者是数据校验不严格导致的。
需要通过加强校验机制和提高通信的抗干扰能力来解决这一问题。

使用特权

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

本版积分规则

22

主题

1233

帖子

1

粉丝