找回密码
 立即注册
查看: 52|回复: 4

IAP_03_ISP工程中操作用户APFlash地址问题

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-01 07:14:14
已绑定手机

12

主题

29

回帖

316

积分

中级会员

积分
316
发表于 2025-4-14 16:12:36 | 显示全部楼层 |阅读模式
继IAP功能成功移植到AI8H1K17后,我开始在例程的基础上写自己的代码。

官方手册中的描述:
截图202504141606598118.jpg


我已经在我的用户AP代码设置为
截图202504141608004356.jpg

我的疑问

在我的被升级设备的ISP工程中,需要对写入Flash的地址是否越界做判断:

截图202504141609352602.jpg
我对Flash地址的操作,这样判断对吗?
还是说,主机要操作设备地址(读写擦除),要发送的地址是从0开始,而不是从0x1003 ?


花有重开日,人无再少年
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-14 16:22:01 | 显示全部楼层
在AI8H1K17的IAP功能移植成功后,针对用户AP Flash地址操作的问题,以下是专业的分析与建议:

1. Flash地址映射与用户AP代码的起始地址
在AI8H1K17的架构中,Flash地址空间通常分为Bootloader区域和用户AP区域。Bootloader区域通常位于Flash的低地址部分(例如0x0000到0x1000),而用户AP代码则从Bootloader区域之后开始(例如0x1000或更高地址)。根据您的描述,用户AP代码的起始地址设置为0x1003,这意味着用户AP代码从0x1003开始存储。

2. ISP工程中的地址操作
在ISP(In-System Programming)工程中,主机对设备进行Flash操作(如读写擦除)时,地址的发送需要根据实际Flash地址空间进行映射。以下是关键点:
地址的起始点:主机发送的地址应基于Flash的物理地址空间。如果用户AP代码从0x1003开始,那么主机在操作用户AP区域时,发送的地址应从0x1003开始,而不是从0x0000开始。这是因为0x0000到0x1002的地址空间可能属于Bootloader区域,直接操作这些地址可能导致Bootloader代码被破坏。
地址越界判断:在ISP工程中,对写入Flash的地址进行越界判断是必要的。判断逻辑应基于用户AP代码的实际存储范围。例如,如果用户AP代码存储在0x1003到0xFFFF的地址范围内,那么主机发送的地址应在0x1003到0xFFFF之间。如果地址超出此范围,应视为越界并拒绝操作。

3. 具体实现建议
在您的ISP工程中,可以按照以下步骤实现地址操作与越界判断:

1. 定义用户AP地址范围:明确用户AP代码的起始地址(如0x1003)和结束地址(如0xFFFF)。

2. 地址映射:主机发送的地址应基于用户AP的起始地址进行偏移。例如,如果主机希望操作用户AP区域的第一个字节,应发送地址0x1003,而不是0x0000。

3. 越界判断:在接收到主机发送的地址后,首先检查该地址是否在用户AP地址范围内。如果地址小于0x1003或大于0xFFFF,应返回错误并拒绝操作。

4. 示例代码
以下是一个简单的地址越界判断示例:

```c
define USERAPSTARTADDR 0x1003
define USERAPENDADDR   0xFFFF

bool isaddressvalid(uint32t address) {
    return (address >= USERAPSTARTADDR && address

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-4-14 18:35:07 | 显示全部楼层
应该从1000H开始擦除,前4K是用户ISP(bootloader)区,不应在用户ISP程序中擦除(不能自己擦除自己)
如需更新用户ISP程序,需要按照官方下载方式重新下载(使用系统ISP区更新用户ISP区和用户AP区,系统ISP区用户无法访问,所以不会变黑砖)
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:43
  • 最近打卡:2025-05-01 07:14:14
已绑定手机

12

主题

29

回帖

316

积分

中级会员

积分
316
发表于 2025-4-14 18:43:24 | 显示全部楼层
Debu*** 发表于 2025-4-14 18:35
应该从1000H开始擦除,前4K是用户ISP(bootloader)区,不应在用户ISP程序中擦除(不能自己擦除自己)
如需 ...

好的,这个我清楚了,擦除从1000H开始擦,那么写入Flash也是从1000H开始写入吗?还是从1003H开始写入?

点评

擦除以扇区为单位,如1000H~1002H不需要改变,也要先擦除再写回去  详情 回复 发表于 2025-4-14 19:53
花有重开日,人无再少年
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-4-14 19:53:42 | 显示全部楼层
zho*** 发表于 2025-4-14 18:43
好的,这个我清楚了,擦除从1000H开始擦,那么写入Flash也是从1000H开始写入吗?还是从1003H开始写入? ...

擦除以扇区为单位,如1000H~1002H不需要改变,也要先擦除再写回去
DebugLab
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 04:10 , Processed in 0.112497 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表