EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2025-10-16 09:23 编辑
6 `% d$ X; |" x: M# b5 {6 r+ H2 N
" q$ P7 @4 J, G+ l
) x- @3 P+ i5 j. I2 M2 O
一.概述OTA的两种分区模式: a) 用户程序区 + EEPROM + 用户系统区 b) 用户系统区 + 用户程序区 + EEPROM6 o6 L2 K0 s4 O$ q6 R1 e
这次踩的坑主要是在模式b上玩Ai8051U芯片AIAPP-ISP里的“用户系统区”设置,再加上下图左上角的误导,一错千里.... :( 模式a(貌似是Ai8051U独有?),keil中常规设置不需要管理中断映射\rom分布等问题,空间布局直接在AIAPP-ISP程序里设置,使用IAP_CONTR寄存器切换系统区和APP区。' ^ y" S. }7 p/ C7 B7 ]
* g+ t! f# L! k! v
$ |, E2 P! F( o9 r( c二.Ai8051U用户系统区使用操作流程
`7 E4 z6 |( i" }. K下面主要记录下模式a的使用流程: 1.常规开发自己的用户系统区和用户程序区,参考链接1或附件。 2.两个区可以同时烧录,也可以只烧录系统区,自己通过串口等途径烧录用户区。
$ H* S4 {! s4 W* g/ l; e/ T7 r6 G
, f ]) ^$ c4 ]! a' b' f
这里分区使用模式a) 用户程序区54K + EEPROM 2K + 用户系统区 8K。注意这里的EEPROM大小选择10k实际涵义为(2K EEPROM + 8K系统区)
1 P* Y7 E' {9 n+ Z: n
* I1 ^+ ], i/ f( M# A" {" f三、模式a地址分布验证
5 E% u+ Y4 p4 X, {" p用户系统区程序:
* z! o2 M2 T9 q# D2 r, [" `( S
+ f& a# K! `% V8 A用户程序区代码:
+ w0 O( ?4 h. S6 o' t0 o
* B( P: S9 c6 Y6 ?& O0 ^4 T输出结果:! P* P9 J1 r( |4 W( K0 a
* |$ j; w+ N! Q8 t+ k* M3 x" Y2 G
- @) f- L. p/ L- J/ C) M
% C. }0 U- q% N* J. p* l四、otg升级测试
* L" S% Y& n3 M! D4.1 自定义协议APKP0 : 擎天柱P2灯全亮 APKP1 : 擎天柱P2灯全灭 APKPO : 用户区进入系统区 APKPP : eeprom测试 APKPR : 重置OTA流程,传输bin总大小 APKPE : 删除用户区片头 OTAP : 分包升级协议,OTAP包头 + 包内容 + crc-16\x25校验,当前一包最大64字节
9 S8 P/ u8 O" }3 A( S2 M. n% k4.2 操作流程
) D8 r/ I" _7 J% q7 Q如视频演示: 1.连接设备和手机,app里扫描设备,连接 2.接口界面测试灯亮灭,通讯正常 3.ota界面发送指令,进入系统区 4.设备界面重新连接 5.选择bin文件 6.烧录,等待提示ota流程结束 7.重新连接! I/ s4 _5 t) I& z
4.3 一个和安卓otg流程相同的pc验证脚本. g4 B8 \: [: }1 d! L* Z5 J
命令行调用,输入自己的bin路径和串口号即可:
2 T! j2 W, r7 W3 A2 B1.python .\main.py --bin_path .\Ai8051U-C251-APP-P27.bin --com_port COM36
1 N; V! U7 o; T) M; P, F% `2.python .\main.py --bin_path .\Ai8051U-C251-APP-P20.bin --com_port COM36
$ D. |# ~6 w# p" q8 B
|