程序最后都会被主循环进行一次循环跳转回程序开头,所以多出来的程序填充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区? 乘风飞扬 发表于 2025-10-13 10:18
烧录bin文件时上位机软件的缓冲区没有清除,最后一包数据不是128字节的话会填充随机数,这些数据不影响程序 ...
<p>我现在用的是AiCube-ISP软件自带的ISP程序和AP程序同时下载功能</p>
<p><img src="data/attachment/forum/202510/13/114046z8abz2qavaq4ciar.png" alt="image.png" title="image.png" /></p>
<p>然后我想要的效果是新芯片,第一次烧录并第一次上电后,直接进入AP代码区</p>
ZARD渐空 发表于 2025-10-13 11:37
还有一个问题想请教一下,
DWORD xdata DfuFlag _at_ 0xffc;
#define DFU_TAG 0x12ABCD34
新芯片,第一次烧录ISP程序后,xdata空间的DfuFlag值是随机数。
第一次烧录ISP程序并上电后,由于没有用户AP程序,会一直在ISP区等待更新,因为以下两个条件不满足:
(*(BYTE code *)(LDR_SIZE) == 0x02) &&
(*(WORD code *)(LDR_SIZE + 1) >= LDR_SIZE + 3)
乘风飞扬 发表于 2025-10-13 12:10
新芯片,第一次烧录ISP程序后,xdata空间的DfuFlag值是随机数。
第一次烧录ISP程序并上电后,由于没有用 ...
那如果用AiCube-ISP软件自带的ISP程序和AP程序同时下载功能,
第一次烧录并上电后,是不是会可以直接进入AP区了? ZARD渐空 发表于 2025-10-13 14:09
那如果用AiCube-ISP软件自带的ISP程序和AP程序同时下载功能,
第一次烧录并上电后,是不是会可以直接进入 ...
用户ISP程序跟用户AP程序同时烧录后会进入AP区运行。 乘风飞扬 发表于 2025-10-13 15:25
用户ISP程序跟用户AP程序同时烧录后会进入AP区运行。
好的,谢谢
页:
1
[2]