EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2025-10-16 09:23 编辑
4 t3 _6 r) ^7 L7 B, y. z' J& P. n( h# P# h; b
2 d# n2 j9 B7 ]0 h; r- J一.概述OTA的两种分区模式: a) 用户程序区 + EEPROM + 用户系统区 b) 用户系统区 + 用户程序区 + EEPROM
/ Q; ~. H) D' f5 o& C* v7 S5 ]这次踩的坑主要是在模式b上玩Ai8051U芯片AIAPP-ISP里的“用户系统区”设置,再加上下图左上角的误导,一错千里.... :( 模式a(貌似是Ai8051U独有?),keil中常规设置不需要管理中断映射\rom分布等问题,空间布局直接在AIAPP-ISP程序里设置,使用IAP_CONTR寄存器切换系统区和APP区。
9 X2 A/ R5 j. v- H5 {3 O. h; K* @
`0 y. C$ ]0 `* J% s: O5 U
i. S! B1 h; \6 ]: u' P' [
二.Ai8051U用户系统区使用操作流程$ z, Q& d! C1 D3 F0 [
下面主要记录下模式a的使用流程: 1.常规开发自己的用户系统区和用户程序区,参考链接1或附件。 2.两个区可以同时烧录,也可以只烧录系统区,自己通过串口等途径烧录用户区。
/ O: s4 z6 N4 N
* M4 ^5 X# ^/ b/ b9 i这里分区使用模式a) 用户程序区54K + EEPROM 2K + 用户系统区 8K。注意这里的EEPROM大小选择10k实际涵义为(2K EEPROM + 8K系统区)
# _0 o8 J- L0 G3 g; s% j, Z
- X7 u9 x; @% v5 ~
三、模式a地址分布验证2 t/ x7 l/ n) a- Q" L9 f
用户系统区程序:
$ c8 ~; S& t6 J, _! f) s. B5 c
W" z1 P$ s7 Z$ z' s
用户程序区代码:
* j$ ^# v" q6 ]
! C1 `" j9 U! H; f输出结果:
" Y. Z) C S; ]& @ ^* g
1 G3 L5 V5 A$ b! D0 |; }5 [1 U9 }
0 f- r8 m& r* c% Q6 V) ^
$ Z0 n# l' |7 }+ J8 l3 ~- Q3 ], `四、otg升级测试
* ?( f/ I3 ?. w/ w4.1 自定义协议APKP0 : 擎天柱P2灯全亮 APKP1 : 擎天柱P2灯全灭 APKPO : 用户区进入系统区 APKPP : eeprom测试 APKPR : 重置OTA流程,传输bin总大小 APKPE : 删除用户区片头 OTAP : 分包升级协议,OTAP包头 + 包内容 + crc-16\x25校验,当前一包最大64字节
; h* ]: o5 h" `, R" J6 _* W4.2 操作流程* f- t* u) t: c9 [8 w
如视频演示: 1.连接设备和手机,app里扫描设备,连接 2.接口界面测试灯亮灭,通讯正常 3.ota界面发送指令,进入系统区 4.设备界面重新连接 5.选择bin文件 6.烧录,等待提示ota流程结束 7.重新连接
+ g$ W0 n* P3 H$ s( z3 Z' m 4.3 一个和安卓otg流程相同的pc验证脚本
6 o1 T, m) s& N( T命令行调用,输入自己的bin路径和串口号即可:( b( S4 g0 v+ {" A' I) N
1.python .\main.py --bin_path .\Ai8051U-C251-APP-P27.bin --com_port COM362 n( A V1 b. i$ [4 H6 c
2.python .\main.py --bin_path .\Ai8051U-C251-APP-P20.bin --com_port COM36
1 h$ ]/ Z# o& g1 e5 S
|