| 以下是测试ISP/OTA的流程,试验环境:AI8051U试验箱、手机、OTG转接头 首先是第一次下载准备:
 选择STC-ISP为如下选项:
 
 勾选用户系统区功能,设置为4K或以上,EEPROM需要大于等于用户系统区域大小
 
 然后点击打开用户程序,载入”P0全亮.hex“文件,这个是初始文件,一会ISP/OTA需要覆盖掉这个文件
 
 点击打开用户系统程序,载入”UART1.hex“文件,这个是ISP/OTA的程序,使用试验箱DMA串口1传输程序改的。
 完成操作后通过正常串口或者USB下载到单片机内。
 并且重新上电一次。
 此时,P0的LED应该是全亮切没有变化的。
 将TyepC接口的USB通过OTG转接头连接到手机(板子丝印J20)
 手机打开USB串口调试助手APP。
 
 从底部的设置tab页中,将波特率设置为115200(OTA程序设置,可以通过更改ISP/OTA程序实现其他波特率或者通讯方式)
 
 然后插入OTG转接头到试验箱,此时使用的USB转双串口的AI8H2K12U,所以有俩串口,选CDC1即可
 
 然后将通讯的协议改成ascii码格式,方便下载的时候查看日志输出
 在这个界面按下试验箱的P33按键,即可触发进入ISP/OTA程序,表现为P0灯全灭,并且串口助手显示ready。
 此时表示已经准备好了
 
 通过发送文件选项,将bin文件”P0左右亮灭交替@22.1184.bin“进行载入
 此时,下面进度条会显示此次发送的数据大小。此时需要将文件大小填入一次发送的字节数。
 (因为并没有传输文件大小,全靠传输字节数量作为大小依据,填大了会空余补0,程序可能验证就不通过了)
 点击发送,然后再返回。
 此时,在对话框输入bin文件的24位累加和验证码,”add24:0027A3H“,log会自动打印比较结果,如果比较正确则会自动进行刷写和重启。
 这个累加和,可以通过stc-isp的校验和显示进行查看
 
 同时,hex文件也可以通过导入后保存数据为bin文件方便下载。
 用户程序中,只需要添加一下代码即可进入ISP/OTA程序,可以随意选择触发情况,例如串口触发,其他的外设触发进入。
 
 其中,必须要添加的是复制代码void main(void)
{
        P_SW2 = 0x80;                // 使能访问外部XFR
        P0M1 = 0x00;                // P00:双向 P01:双向 P02:双向 P03:双向
        P0M0 = 0x00;                // P04:双向 P05:双向 P06:双向 P07:双向
        P4M1 = 0xbe;                // P40:双向 P41:高阻 P42:高阻 P43:高阻
        P4M0 = 0x40;                // P44:高阻 P45:高阻 P46:推挽 P47:高阻
        P40 = 0;
        P0 = 0x00;
        RSTFLAG |= 0x04;//必须添加,开启OTA就需要关闭复位引脚自动跳转
        while(1)
        {
                if(P33==0)IAP_CONTR = 0x28;//到用户系统区域
        }
}
 
 否则会导致正常启动的时候进入ISP/OTA程序而无法退出。复制代码RSTFLAG |= 0x04;//必须添加,开启OTA就需要关闭复位引脚自动跳转
 而
 
 则是复位到用户系统区域的指令,可以通过使用其他方式进行自由触发来实现ISP/OTA时机选择,例如做主机验证,密码验证等复制代码IAP_CONTR = 0x28;//到用户系统区域
 
 |