EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2025-10-16 09:23 编辑
' A k( |; R* ]! H& u6 a" M( ]9 I( _ u" [0 J. U5 H
) `# ]2 k$ [' _& p6 ], q+ e
一.概述OTA的两种分区模式: a) 用户程序区 + EEPROM + 用户系统区 b) 用户系统区 + 用户程序区 + EEPROM
" n, n7 B* T( J4 n* s( o这次踩的坑主要是在模式b上玩Ai8051U芯片AIAPP-ISP里的“用户系统区”设置,再加上下图左上角的误导,一错千里.... :( 模式a(貌似是Ai8051U独有?),keil中常规设置不需要管理中断映射\rom分布等问题,空间布局直接在AIAPP-ISP程序里设置,使用IAP_CONTR寄存器切换系统区和APP区。
$ ], a! |2 p# b n% E0 {
/ `0 ^2 y. d( h8 k `6 w- F
2 N1 x+ k+ D, L二.Ai8051U用户系统区使用操作流程
6 U6 b) ?0 j. i! b$ m5 Z5 O下面主要记录下模式a的使用流程: 1.常规开发自己的用户系统区和用户程序区,参考链接1或附件。 2.两个区可以同时烧录,也可以只烧录系统区,自己通过串口等途径烧录用户区。
; }/ G4 r% z& N6 t
7 q& m- t2 P" a+ ]( a
这里分区使用模式a) 用户程序区54K + EEPROM 2K + 用户系统区 8K。注意这里的EEPROM大小选择10k实际涵义为(2K EEPROM + 8K系统区)* s' G+ z/ Q4 j8 c& h; ~) P
?+ F; q- v; ?2 n* H/ p
三、模式a地址分布验证- F- L7 @5 x9 k% Q$ E% B
用户系统区程序:' Y% e3 ^# ~) Z, ]& x4 t
5 @/ W9 g6 @8 j' \
用户程序区代码:
: y* `% X. e9 X! {2 |% Y* e
' s; G" d5 V7 i$ K9 z9 c/ z: E
输出结果:0 M$ z. N4 c* E- c, K: [
' Z! J4 n9 M2 }' Y- K
T1 t- n5 H+ e& e# Y ^& a
9 u: Q' J2 W( `5 c t. I四、otg升级测试1 Q3 u7 f3 Y' \. d/ N! w
4.1 自定义协议APKP0 : 擎天柱P2灯全亮 APKP1 : 擎天柱P2灯全灭 APKPO : 用户区进入系统区 APKPP : eeprom测试 APKPR : 重置OTA流程,传输bin总大小 APKPE : 删除用户区片头 OTAP : 分包升级协议,OTAP包头 + 包内容 + crc-16\x25校验,当前一包最大64字节
$ I- o3 T8 X: W% Y' C/ R6 J; S7 T4.2 操作流程
7 ^5 m$ K& V. b4 F! Y& ~如视频演示: 1.连接设备和手机,app里扫描设备,连接 2.接口界面测试灯亮灭,通讯正常 3.ota界面发送指令,进入系统区 4.设备界面重新连接 5.选择bin文件 6.烧录,等待提示ota流程结束 7.重新连接# u4 n8 M4 @9 W: ]6 A- w: D2 O
4.3 一个和安卓otg流程相同的pc验证脚本- p4 t' }2 D$ h, ]3 f( [$ S; u
命令行调用,输入自己的bin路径和串口号即可:: z" b9 M0 `! f" j5 o
1.python .\main.py --bin_path .\Ai8051U-C251-APP-P27.bin --com_port COM36
/ v8 v' b7 @ z- U5 B$ Z: C2.python .\main.py --bin_path .\Ai8051U-C251-APP-P20.bin --com_port COM36! j+ e& h( h% X$ V( H
|