EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2025-10-16 09:23 编辑
" Z0 C' `) }* I! p2 f6 w# _% p( E5 O9 }* A- D3 j
9 l% k8 Y% n! t+ ^3 g6 b
一.概述OTA的两种分区模式: a) 用户程序区 + EEPROM + 用户系统区 b) 用户系统区 + 用户程序区 + EEPROM
! W. m: t5 o+ |这次踩的坑主要是在模式b上玩Ai8051U芯片AIAPP-ISP里的“用户系统区”设置,再加上下图左上角的误导,一错千里.... :( 模式a(貌似是Ai8051U独有?),keil中常规设置不需要管理中断映射\rom分布等问题,空间布局直接在AIAPP-ISP程序里设置,使用IAP_CONTR寄存器切换系统区和APP区。
# f1 B. {& n/ o
' S% W& H# a# P( S
" ]& T0 W: e* H' N/ C& t6 b8 P3 `二.Ai8051U用户系统区使用操作流程& c- A8 c) l/ R
下面主要记录下模式a的使用流程: 1.常规开发自己的用户系统区和用户程序区,参考链接1或附件。 2.两个区可以同时烧录,也可以只烧录系统区,自己通过串口等途径烧录用户区。& ?) Y) K# [; x: p! H+ o2 n
0 a8 k& ^+ t# @" V6 x( @7 G. p
这里分区使用模式a) 用户程序区54K + EEPROM 2K + 用户系统区 8K。注意这里的EEPROM大小选择10k实际涵义为(2K EEPROM + 8K系统区)' q; h2 k$ F+ ~2 b& s
% z$ t! M) V( ~/ _" b8 F. } b三、模式a地址分布验证% K3 S6 \. H1 G
用户系统区程序:0 \+ N& q s9 \0 Z: _
( L9 d- G- A* Q3 {4 |0 ]用户程序区代码:
! d0 ]& h, q4 \5 @
- ]- a, t% Q! i9 i; D( L输出结果:
6 S" X L9 Y9 q/ `
& G1 E# g [ w. {/ Y! u
5 t; h" E1 x: G( A' D; E T; g
6 T% f' m5 o* W, ~, Z四、otg升级测试
7 [# j2 f3 Q8 \4.1 自定义协议APKP0 : 擎天柱P2灯全亮 APKP1 : 擎天柱P2灯全灭 APKPO : 用户区进入系统区 APKPP : eeprom测试 APKPR : 重置OTA流程,传输bin总大小 APKPE : 删除用户区片头 OTAP : 分包升级协议,OTAP包头 + 包内容 + crc-16\x25校验,当前一包最大64字节) e) Y: C0 y$ m9 |: S7 r
4.2 操作流程5 w( C0 X4 a- ?( U
如视频演示: 1.连接设备和手机,app里扫描设备,连接 2.接口界面测试灯亮灭,通讯正常 3.ota界面发送指令,进入系统区 4.设备界面重新连接 5.选择bin文件 6.烧录,等待提示ota流程结束 7.重新连接! _, C3 g5 K; s4 `2 ?
4.3 一个和安卓otg流程相同的pc验证脚本. F G+ Y% A; b/ |
命令行调用,输入自己的bin路径和串口号即可:/ h- t$ _0 O5 c6 p
1.python .\main.py --bin_path .\Ai8051U-C251-APP-P27.bin --com_port COM36
% v- c' d9 Z5 j; _* I2.python .\main.py --bin_path .\Ai8051U-C251-APP-P20.bin --com_port COM36
# y. e, w+ z$ a0 S, X! V; V3 J
|