找回密码
 立即注册
查看: 2378|回复: 30

手机也能对AI8051U, ISP/OTA升级用户程序了,使用用户系统区实现

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-03-15 12:07:04
已绑定手机
已实名认证

103

主题

1477

回帖

4150

积分

版主

积分
4150
发表于 2024-11-19 16:27:34 | 显示全部楼层 |阅读模式
手机也能对单片机下载程序了?
当然可以,AI8051U新推出的用户系统区功能使得 ISP/OTA 的编写变得无比简单。
内部通过软复位切换用户ISP/OTA程序和用户APP程序,逻辑地址被自动映射为实际地址,
无需担心地址偏移和中断跳转问题。两个程序相互独立。
先来看看视频演示效果,手机通过“USB串口调试助手”APP实现串口通讯,
和单片机的ISP/OTA程序进行通讯,并完成程序的刷写。
程序初始烧录为LED全亮,手机烧录的程序为高四位和低四位的灯间隔1S切换亮灭。


用户系统区功能介绍:用户自己完全独立的 User_ISP_BootLoader 区,Ai8051U, 兼容8位/32位指令 - ISP下载/做自己的ISP 国芯技术交流网站 - AI32位8051交流社区

ISP/OTA程序开源,并且楼下补充程序的详细解释,大家可以先试试。
手机APP官网链接:像素灵动
直接下载链接: USB串口调试助手_1.4.6.apk (22.17 MB, 下载次数: 128)
截图202411191626318834.jpg


程序文件: AI8051U实验箱实现OTA自动下载.zip (83.99 KB, 下载次数: 82)
目前程序还拥有一点没完善的地方(比如说太大的文件还没写文件分割,暂时只能下小于缓冲区(1024byte)大小的程序),后面完善后进行更新

不过,程序通用性很强,只要是个串口都能更新。蓝牙串口,4G模块串口,433Mhz模块串口都可以使用,只需要适当调长串口超时中断时间即可。
目前超时时间设定为0.5S
并且还带有文件校验功能,保证万一bin文件传错了也不会进行下载,而是重新进入文件传输流程。

1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!

本帖被以下淘专辑推荐:

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-03-15 12:07:04
已绑定手机
已实名认证

103

主题

1477

回帖

4150

积分

版主

积分
4150
发表于 2024-11-23 22:03:18 | 显示全部楼层
追加测试:通过4G模块进行串口透传,实现远程ISP/OTA静默升级测试


回复 支持 0 反对 1

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-03-15 12:07:04
已绑定手机
已实名认证

103

主题

1477

回帖

4150

积分

版主

积分
4150
发表于 2024-11-19 16:28:18 | 显示全部楼层
以下是测试ISP/OTA的流程,试验环境:AI8051U试验箱、手机、OTG转接头
首先是第一次下载准备:
选择STC-ISP为如下选项:
截图202411191633376842.jpg

勾选用户系统区功能,设置为4K或以上,EEPROM需要大于等于用户系统区域大小
截图202411191634498826.jpg

然后点击打开用户程序,载入”P0全亮.hex“文件,这个是初始文件,一会ISP/OTA需要覆盖掉这个文件
截图202411191636158909.jpg

点击打开用户系统程序,载入”UART1.hex“文件,这个是ISP/OTA的程序,使用试验箱DMA串口1传输程序改的。
完成操作后通过正常串口或者USB下载到单片机内。
并且重新上电一次。
此时,P0的LED应该是全亮切没有变化的。
将TyepC接口的USB通过OTG转接头连接到手机(板子丝印J20)
手机打开USB串口调试助手APP。
截图202411191641577778.jpg

从底部的设置tab页中,将波特率设置为115200(OTA程序设置,可以通过更改ISP/OTA程序实现其他波特率或者通讯方式)
截图202411191643232894.jpg

然后插入OTG转接头到试验箱,此时使用的USB转双串口的AI8H2K12U,所以有俩串口,选CDC1即可
截图202411191645586171.jpg

然后将通讯的协议改成ascii码格式,方便下载的时候查看日志输出
在这个界面按下试验箱的P33按键,即可触发进入ISP/OTA程序,表现为P0灯全灭,并且串口助手显示ready。
此时表示已经准备好了
截图202411191647511478.jpg 截图202411191648129725.jpg

通过发送文件选项,将bin文件”P0左右亮灭交替@22.1184.bin“进行载入
此时,下面进度条会显示此次发送的数据大小。此时需要将文件大小填入一次发送的字节数。
(因为并没有传输文件大小,全靠传输字节数量作为大小依据,填大了会空余补0,程序可能验证就不通过了)
点击发送,然后再返回。
此时,在对话框输入bin文件的24位累加和验证码,”add24:0027A3H“,log会自动打印比较结果,如果比较正确则会自动进行刷写和重启。
这个累加和,可以通过stc-isp的校验和显示进行查看
截图202411191652535887.jpg

同时,hex文件也可以通过导入后保存数据为bin文件方便下载。
用户程序中,只需要添加一下代码即可进入ISP/OTA程序,可以随意选择触发情况,例如串口触发,其他的外设触发进入。
  1. void main(void)
  2. {
  3.         P_SW2 = 0x80;                // 使能访问外部XFR
  4.         P0M1 = 0x00;                // P00:双向 P01:双向 P02:双向 P03:双向
  5.         P0M0 = 0x00;                // P04:双向 P05:双向 P06:双向 P07:双向
  6.         P4M1 = 0xbe;                // P40:双向 P41:高阻 P42:高阻 P43:高阻
  7.         P4M0 = 0x40;                // P44:高阻 P45:高阻 P46:推挽 P47:高阻
  8.         P40 = 0;
  9.         P0 = 0x00;
  10.         RSTFLAG |= 0x04;//必须添加,开启OTA就需要关闭复位引脚自动跳转
  11.         while(1)
  12.         {
  13.                 if(P33==0)IAP_CONTR = 0x28;//到用户系统区域
  14.         }
  15. }
复制代码
其中,必须要添加的是
  1. RSTFLAG |= 0x04;//必须添加,开启OTA就需要关闭复位引脚自动跳转
复制代码
否则会导致正常启动的时候进入ISP/OTA程序而无法退出。

  1. IAP_CONTR = 0x28;//到用户系统区域
复制代码
则是复位到用户系统区域的指令,可以通过使用其他方式进行自由触发来实现ISP/OTA时机选择,例如做主机验证,密码验证等
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:359
  • 最近打卡:2025-03-14 21:26:51

26

主题

298

回帖

735

积分

高级会员

积分
735
发表于 2024-11-19 17:18:20 | 显示全部楼层
利害
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:193
  • 最近打卡:2025-03-14 23:48:01

21

主题

283

回帖

662

积分

高级会员

积分
662
发表于 2024-11-19 18:46:58 来自手机 | 显示全部楼层
REMOVEUNUSED
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:375
  • 最近打卡:2025-03-15 08:49:27
已绑定手机

19

主题

3155

回帖

4567

积分

论坛元老

积分
4567
发表于 2024-11-19 19:32:46 | 显示全部楼层
这个实际上还是UART升级吧。

点评

是的,但是可以不需要STC-ISP进行下载,本示例是基于UART。 通过更改OTA程序可以实现IIC升级、SPI升级、CAN升级、甚至是私有协议升级,十分灵活。  详情 回复 发表于 2024-11-19 20:28
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:429
  • 最近打卡:2025-03-15 07:29:35

2

主题

78

回帖

1016

积分

金牌会员

积分
1016
发表于 2024-11-19 19:58:07 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-03-15 12:07:04
已绑定手机
已实名认证

103

主题

1477

回帖

4150

积分

版主

积分
4150
发表于 2024-11-19 20:28:11 | 显示全部楼层
so*** 发表于 2024-11-19 19:32
这个实际上还是UART升级吧。

是的,但是可以不需要STC-ISP进行下载,本示例是基于 UART,USB转串口。
通过更改ISP/OTA程序可以实现:
IIC升级、SPI升级、CAN升级、甚至是私有协议升级,十分灵活。
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:471
  • 最近打卡:2025-03-15 09:09:38
已绑定手机

40

主题

1537

回帖

1990

积分

金牌会员

积分
1990
发表于 2024-11-19 20:55:15 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:291
  • 最近打卡:2025-03-15 07:43:06
已绑定手机

23

主题

1595

回帖

3867

积分

论坛元老

积分
3867
发表于 2024-11-19 21:09:11 | 显示全部楼层
厉害厉害,期待蓝牙功能上马,这样连OTG都省了{:5_344:}

点评

支持。能无线升级就很方便! 110  详情 回复 发表于 2024-11-19 22:02
这个只是一个演示,直接给串口接上蓝牙模块就可以下载了。 因为这里面是单向传输(回传log并不影响下载),只要把文件信息发过去,然后等一会再发个校验码就可以下载了。 本质是对传输没有任何要求的  详情 回复 发表于 2024-11-19 21:56
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-03-15 12:07:04
已绑定手机
已实名认证

103

主题

1477

回帖

4150

积分

版主

积分
4150
发表于 2024-11-19 21:56:23 | 显示全部楼层
wnag*** 发表于 2024-11-19 21:09
厉害厉害,期待蓝牙功能上马,这样连OTG都省了

这个只是一个演示,直接给串口接上蓝牙模块就可以下载了,程序都不用改的
因为这里面是单向传输(回传log并不影响下载),只要把文件信息发过去,

然后等一会再发个校验码就可以下载了。
本质是对传输没有任何要求的

回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-3-15 13:13 , Processed in 0.150694 second(s), 137 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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