1、代码流程框架
----------------------
onchiprom
----------------------
|
----------------------
m3_boot
----------------------
|
----------------------
fastboot
----------------------
| | |
---------------------- ---------------------- ----------------------
m3_rtos a9_linux a9_vxworks
---------------------- ---------------------- ----------------------
m3_boot加载fastboot后,自身调用b .死循环。
fastboot加载并激活m3_rtos和a9_linux。
a9_linux激活a9_vxworks。
系统中,m3_rtos主要用于功耗管理,运行rtos操作系统;a9_linux运行大部分的应用;a9_vxworks运行通信应用。
2、调试中遇到的问题
-- 将镜像烧写到nand中,读取nand id失败。
原因是芯片逻辑中nand参数配置错误。
-- 直接使用仿真器加载fastboot调试,代码走到fastboot的main loop,但串口无打印。
原因是没有配置UART的串口复用。导致打印不出来。
-- 直接使用仿真器加载boot.img调试,没有任何打印。
原因是使用错误的UART号。
-- 直接使用仿真器加载boot.img调试,解压内核成功,但启动内核失败。
原因是自解压kernel位置不对,导致地址重叠。一般来说,是将自解压kernel放在zreaddr的高32k位置处。
-- vxworks启动后,系统挂死,仿真器连不上
仿真器设置reset ON,当解复位后,断在reset异常向量处。此后,仿真器从异常向量开始跟踪调试。
3、VxxxC60版本跟踪
3.1 代码分支
step 1. vendor vx11bugfix tag A--> vendor vxr5 one track(linaro 3.4.5内核)->vendor vxr5 one track(linaro 3.10.0内核)
step 2. vendor vx11bugfix tag B-->vendor one(linaro 3.4.5内核)->vendorg one(linaro 3.10.0内核)
step 3. vendor vxr5 one track(linaro 3.10.0内核) merge to vendorg one(linaro 3.10.0内核)
step 4. go with vendorg one(linaro 3.10.0内核)
3.2 对外接口调整,内部接口不动。