EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2025-10-16 09:23 编辑 4 |# s: k! r p3 r( A
, Z7 u& X) t% X3 H
% P6 X! U! K0 t t! u8 f8 e2 H/ _ L一.概述OTA的两种分区模式: a) 用户程序区 + EEPROM + 用户系统区 b) 用户系统区 + 用户程序区 + EEPROM- S9 x8 B8 M. l
这次踩的坑主要是在模式b上玩Ai8051U芯片AIAPP-ISP里的“用户系统区”设置,再加上下图左上角的误导,一错千里.... :( 模式a(貌似是Ai8051U独有?),keil中常规设置不需要管理中断映射\rom分布等问题,空间布局直接在AIAPP-ISP程序里设置,使用IAP_CONTR寄存器切换系统区和APP区。
0 ~: I! ` @2 {& [
" c9 F0 f! d/ Q i* D
7 s2 `+ l3 @. L% o二.Ai8051U用户系统区使用操作流程4 @" M8 G4 l! Y; c3 |4 \4 p
下面主要记录下模式a的使用流程: 1.常规开发自己的用户系统区和用户程序区,参考链接1或附件。 2.两个区可以同时烧录,也可以只烧录系统区,自己通过串口等途径烧录用户区。$ P& B+ \( v$ p' p; D( v* a( s. l+ a
# S: x3 O$ Q: ]" c Y" y
这里分区使用模式a) 用户程序区54K + EEPROM 2K + 用户系统区 8K。注意这里的EEPROM大小选择10k实际涵义为(2K EEPROM + 8K系统区)- S( K1 T" X2 w) f& M& Z
0 ^& F4 ]2 \' v6 O7 m
三、模式a地址分布验证6 w( e/ {3 Z5 [9 y. U- E. \3 D
用户系统区程序:
1 S8 a J7 a* N/ t3 l
5 P4 B8 F& j1 C- J' G8 e4 i
用户程序区代码:! @% Z! w/ @. c% n" ?$ T* r5 ^
8 y/ B1 [0 @ r% F. \$ }8 h8 w- r
输出结果:
" G3 {& `& R; D
$ I3 A2 @/ R+ Z* _5 Y
, ^; }$ s0 i B0 h9 b1 I3 j1 C
' U W4 h; M. K$ _3 Y四、otg升级测试
( E, f& P6 i7 b$ ~/ ~+ G2 t4.1 自定义协议APKP0 : 擎天柱P2灯全亮 APKP1 : 擎天柱P2灯全灭 APKPO : 用户区进入系统区 APKPP : eeprom测试 APKPR : 重置OTA流程,传输bin总大小 APKPE : 删除用户区片头 OTAP : 分包升级协议,OTAP包头 + 包内容 + crc-16\x25校验,当前一包最大64字节, r, }. j" @' l8 |6 E, c9 n
4.2 操作流程
5 U; K3 q( }' W$ p/ {如视频演示: 1.连接设备和手机,app里扫描设备,连接 2.接口界面测试灯亮灭,通讯正常 3.ota界面发送指令,进入系统区 4.设备界面重新连接 5.选择bin文件 6.烧录,等待提示ota流程结束 7.重新连接
9 n: @. t7 O, T+ z 4.3 一个和安卓otg流程相同的pc验证脚本
| ?) J3 `& b4 L7 p O4 k命令行调用,输入自己的bin路径和串口号即可:4 c1 I4 ]7 i- J6 D& d j
1.python .\main.py --bin_path .\Ai8051U-C251-APP-P27.bin --com_port COM365 b2 Y, w+ F- k
2.python .\main.py --bin_path .\Ai8051U-C251-APP-P20.bin --com_port COM36/ L# [0 ^1 Y: {& F/ w) R8 Y
|