EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2025-10-16 09:23 编辑
6 @2 R, n6 m8 \' g/ \' `# Z8 U$ [9 T; e
! @( F V8 N7 y一.概述OTA的两种分区模式: a) 用户程序区 + EEPROM + 用户系统区 b) 用户系统区 + 用户程序区 + EEPROM y/ s0 i3 ?( ~! d! a
这次踩的坑主要是在模式b上玩Ai8051U芯片AIAPP-ISP里的“用户系统区”设置,再加上下图左上角的误导,一错千里.... :( 模式a(貌似是Ai8051U独有?),keil中常规设置不需要管理中断映射\rom分布等问题,空间布局直接在AIAPP-ISP程序里设置,使用IAP_CONTR寄存器切换系统区和APP区。
% t, j4 H% T. ?; Q8 J
$ u% i" A! Y; Q* m9 _/ v! W& P8 ~1 w* _" ~* ^( }- S( Q
二.Ai8051U用户系统区使用操作流程+ `, \/ g% W/ T/ h |8 c+ z$ ]
下面主要记录下模式a的使用流程: 1.常规开发自己的用户系统区和用户程序区,参考链接1或附件。 2.两个区可以同时烧录,也可以只烧录系统区,自己通过串口等途径烧录用户区。9 Z5 c9 ~: X: w$ L( S
! f9 S$ [1 J7 P
这里分区使用模式a) 用户程序区54K + EEPROM 2K + 用户系统区 8K。注意这里的EEPROM大小选择10k实际涵义为(2K EEPROM + 8K系统区)6 w/ E+ l- k6 E2 D2 j
+ `6 w) {% a+ D; |/ p7 g
三、模式a地址分布验证9 d! O% L( [. [: K& h/ [/ @: [1 `9 D
用户系统区程序:3 Z, D/ `4 J4 J0 j) z4 d4 @
- h' H; ]' O1 V# Y6 v
用户程序区代码:8 ?8 k- J, f7 j0 N
0 ?5 H( A* k/ H1 H6 t输出结果:! ^1 \) D( V/ j i
6 `. C% }/ I: K+ q! k
4 B( E: T6 K/ U; N
$ P! c/ i6 o2 |9 V$ V/ C. V- E1 x* K
四、otg升级测试
V- g* k( g$ n% l9 i4.1 自定义协议APKP0 : 擎天柱P2灯全亮 APKP1 : 擎天柱P2灯全灭 APKPO : 用户区进入系统区 APKPP : eeprom测试 APKPR : 重置OTA流程,传输bin总大小 APKPE : 删除用户区片头 OTAP : 分包升级协议,OTAP包头 + 包内容 + crc-16\x25校验,当前一包最大64字节) c$ v, M0 i; x5 z
4.2 操作流程
5 q9 b* P3 ]; v5 f# E" P$ g8 {如视频演示: 1.连接设备和手机,app里扫描设备,连接 2.接口界面测试灯亮灭,通讯正常 3.ota界面发送指令,进入系统区 4.设备界面重新连接 5.选择bin文件 6.烧录,等待提示ota流程结束 7.重新连接: u: Q7 d1 _3 T: x, n+ r
4.3 一个和安卓otg流程相同的pc验证脚本7 p( a1 r, ?) l# h+ U g
命令行调用,输入自己的bin路径和串口号即可:- P8 _/ {- I; @1 I4 {
1.python .\main.py --bin_path .\Ai8051U-C251-APP-P27.bin --com_port COM36
7 H0 d; U- ?- ?0 B0 n2.python .\main.py --bin_path .\Ai8051U-C251-APP-P20.bin --com_port COM36
L N$ \9 @% t/ m2 Z
|