找回密码
 立即注册
楼主: ZARD渐空

用不同格式文件进行OTA,上位机下发最后一位地址数据时,对后面多余的数据位怎么处理

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-10-13 08:56:04
已绑定手机

9

主题

47

回帖

257

积分

中级会员

积分
257
发表于 昨天 11:37 | 显示全部楼层
乘风*** 发表于 2025-10-13 10:18
烧录bin文件时上位机软件的缓冲区没有清除,最后一包数据不是128字节的话会填充随机数,这些数据不影响程序 ...

还有一个问题想请教一下,
DWORD xdata DfuFlag _at_ 0xffc;
#define DFU_TAG       0x12ABCD34
void dfu_check()
{
        _nop_(); _nop_();
        _nop_(); _nop_();
        delay();
        if ((DfuFlag != DFU_TAG) && (*(BYTE code *)(LDR_SIZE) == 0x02) && (*(WORD code *)(LDR_SIZE + 1) >= LDR_SIZE + 3))
        {                 //DfuFlag是否被置位                   //检查用户AP代码的复位指令是否规范
                ((void (code *)())(LDR_SIZE))();                //在进入ISP代码区后,若没有检测到执行了相对应的指令,则跳转执行AP程序代码区
        }
        //如果以上条件有一个被触发,则执行ISP程序代码区(即DfuFlag被置位,或用户AP代码的复位指令不规范)
//        DfuFlag = 0;//把这个搬到升级成功后,再进入AP区
}
新芯片,第一次烧录后,DfuFlag的值是0xFFFFFFFF还是0x12ABCD34?
如果DfuFlag = 0xFFFFFFFF的话,
然后我把DfuFlag = 0;搬到升级成功后,再进入AP区的话,是不是第一次烧录并上电后,程序是不是会一直在ISP区?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-10-13 08:56:04
已绑定手机

9

主题

47

回帖

257

积分

中级会员

积分
257
发表于 昨天 11:37 | 显示全部楼层
王*** 发表于 2025-10-13 10:38
程序最后都会被主循环进行一次循环跳转回程序开头,所以多出来的程序填充FF和填充其他内容都是对程序没有影 ...

还有一个问题想请教一下,
DWORD xdata DfuFlag _at_ 0xffc;
#define DFU_TAG       0x12ABCD34
void dfu_check()
{
        _nop_(); _nop_();
        _nop_(); _nop_();
        delay();
        if ((DfuFlag != DFU_TAG) && (*(BYTE code *)(LDR_SIZE) == 0x02) && (*(WORD code *)(LDR_SIZE + 1) >= LDR_SIZE + 3))
        {                 //DfuFlag是否被置位                   //检查用户AP代码的复位指令是否规范
                ((void (code *)())(LDR_SIZE))();                //在进入ISP代码区后,若没有检测到执行了相对应的指令,则跳转执行AP程序代码区
        }
        //如果以上条件有一个被触发,则执行ISP程序代码区(即DfuFlag被置位,或用户AP代码的复位指令不规范)
//        DfuFlag = 0;//把这个搬到升级成功后,再进入AP区
}
新芯片,第一次烧录后,DfuFlag的值是0xFFFFFFFF还是0x12ABCD34?
如果DfuFlag = 0xFFFFFFFF的话,
然后我把DfuFlag = 0;搬到升级成功后,再进入AP区的话,是不是第一次烧录并上电后,程序是不是会一直在ISP区?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-10-13 08:56:04
已绑定手机

9

主题

47

回帖

257

积分

中级会员

积分
257
发表于 昨天 11:42 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=189928&ptid=20493][color=#999999]乘风飞扬 发表于 2025-10-13 10:18[/color][/url][/size] 烧录bin文件时上位机软件的缓冲区没有清除,最后一包数据不是128字节的话会填充随机数,这些数据不影响程序 ...[/quote]

我现在用的是AiCube-ISP软件自带的ISP程序和AP程序同时下载功能

image.png

然后我想要的效果是新芯片,第一次烧录并第一次上电后,直接进入AP代码区

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:530
  • 最近打卡:2025-10-13 10:18:58
已绑定手机

47

主题

2259

回帖

7957

积分

论坛元老

积分
7957
发表于 昨天 12:10 | 显示全部楼层
ZARD*** 发表于 2025-10-13 11:37
还有一个问题想请教一下,
DWORD xdata DfuFlag _at_ 0xffc;
#define DFU_TAG       0x12ABCD34

新芯片,第一次烧录ISP程序后,xdata空间的DfuFlag值是随机数。
第一次烧录ISP程序并上电后,由于没有用户AP程序,会一直在ISP区等待更新,因为以下两个条件不满足:
  1. (*(BYTE code *)(LDR_SIZE) == 0x02) &&
  2.         (*(WORD code *)(LDR_SIZE + 1) >= LDR_SIZE + 3)
复制代码

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-10-13 08:56:04
已绑定手机

9

主题

47

回帖

257

积分

中级会员

积分
257
发表于 昨天 14:09 | 显示全部楼层
乘风*** 发表于 2025-10-13 12:10
新芯片,第一次烧录ISP程序后,xdata空间的DfuFlag值是随机数。
第一次烧录ISP程序并上电后,由于没有用 ...

那如果用AiCube-ISP软件自带的ISP程序和AP程序同时下载功能,
第一次烧录并上电后,是不是会可以直接进入AP区了?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:530
  • 最近打卡:2025-10-13 10:18:58
已绑定手机

47

主题

2259

回帖

7957

积分

论坛元老

积分
7957
发表于 昨天 15:25 | 显示全部楼层
ZARD*** 发表于 2025-10-13 14:09
那如果用AiCube-ISP软件自带的ISP程序和AP程序同时下载功能,
第一次烧录并上电后,是不是会可以直接进入 ...

用户ISP程序跟用户AP程序同时烧录后会进入AP区运行。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:26
  • 最近打卡:2025-10-13 08:56:04
已绑定手机

9

主题

47

回帖

257

积分

中级会员

积分
257
发表于 昨天 17:55 | 显示全部楼层
乘风*** 发表于 2025-10-13 15:25
用户ISP程序跟用户AP程序同时烧录后会进入AP区运行。

好的,谢谢
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-14 08:04 , Processed in 0.178246 second(s), 87 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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