mcu shell命令参考文档
串口设置:波特率 115200,8 数据位,1 停止位,无奇偶校验。
登陆 xcd mcu shell(3 种互斥方式)
💥 三种方式彼此互斥,同时只能接一种硬件设备: ① android 系统通过 adb/串口直接登陆 ② PC 通过 type-c usb 线 ③ PC 通过 debug 板子
android 系统通过串口直接登陆到 MCU
- adb shell 或 soc 串口登陆到 Android
stop mculog(停止 mculog 进程——它占用串口 /dev/ttyHS4,不停会无法输入)microcom /dev/ttyHS4,连按两个回车出现msh>#提示符- log 太多看不清输入:
log.set.loglevel.current 0(fatal 级) - 能输入但没 log(soc 没发握手):
log.cat CTRL+]退出 mcu shell 回 Android shell

PC 通过 type-c usb 线登陆(P1 及以后板子)
type-c 出来的 UART TTL 电平必须 1.2V,其他电平无法输入输出。

PC 通过 debug 板子登陆
type-C 线连 PC + 连板子调试口;PC 打开数值最小的 COM 口;拨码开关与下图一致,杜邦线短接两个引脚。

系统
| 命令 | 功能 |
|---|---|
system.version | 获取 mcu git 版本号和编译时间 |
system.reset 0 | mcu 安全复位(等 SOC 关机)+SOC 复位+MCU 复位,非特殊勿用 |
system.reset 1 | mcu 重启(不等 SOC)+SOC 复位+MCU 复位,产线老化建议用 |
system.reset 2/3 | SOC 安全/非安全重启(拉 KPD),MCU 不复位 |
os.dump.taskinfo | dump autosar 指定 task 信息 |
log
| 命令 | 功能 |
|---|---|
log.set.loglevel.current $level | 设当前点火周期 log 等级(0fatal~4debug),掉电丢 |
log.set.loglevel.saved $level | 同上但存 nvm,掉电重启仍生效 |
log.get.loglevel | 获取当前 log 等级 |
log.filter.grep $pattern | 过滤日志(* 通配) |
log.filter.stop | 停止过滤 |
memory / gpio / i2c
memory.display.word $addr/memory.display.bytes $addr $length/memory.write.word $addr $value/memory.write.byte/memory.valid.check $onoffdio.write.channel $chid $value/dio.read.channel $chidi2c.write.reg $bus $slaveaddr $regaddr $value/i2c.read.reg .../i2c.read.reghub $regaddr(hub 寄存器 0xBF8000000xBF80FFFF、0xBFD200000xBFD2FFFF)
usb(hub4715)
| 命令 | 功能 |
|---|---|
usb.set.mode.current 0/1 | 当前周期 usb 模式(0=device 可 adb;1=host),掉电丢 |
usb.set.mode.saved 0/1 | 同上但存 nvm;注意设 host 且保存后 adb 永远不可用,重启也不行 |
usb.get.mode | 查当前 device/host |
power
pm.set.sleep.time $sec/pm.get.sleep.time(standby→sleep 时间,30s~最大=不休眠)pm.set.tec.config $enable/pm.set.tec.temp $t/pm.get.*(TEC 温控)pm.charge.hv.ctrl 1(模拟上高压,充电测试)/pm.charge.chk.ctrl(镍氢电池健康检查)pm.standby(xCD 直接深睡,核心板掉电)pm.rtcwk.reg $module $y $m $d $h $mi $s(定时唤醒,建议延后 5min)pm.hm.score.set 127(健康度;<0 且满足 str 条件时重启不进 STR)
SOC 模式控制(经 MCU 串口)
| 命令 | 功能 |
|---|---|
pm.soc.fastboot.ctrl 1/0 | SOC 进/出 FastBoot |
pm.soc.recovery.ctrl 1 | 进 Recovery;pm.soc.bios.ctrl 1 进 MIBIOS |
pm.soc.edl.ctrl 1/0 | SOC 进/出 EDL(9008) |
pm.soc.900e.ctrl 1/0 | SOC 进/出 900E |
ubattery / cluster
- 放电:
dio.write.channel 0x21e 1,关 0,查dio.read.channel 0x21e cluster.odo.init(清总里程,仅 NvM 校验失败兜底)/cluster.odo.initst/cluster.dump.eep $blockid
其他
test.set.faultid $coreid $faultid(coredump 测试,tc397 coreid 0-5)adc.get.value/adc.get.channel.value $group $channel- 配置字:
car.write.nvm 0|2(低配/高配,重启生效)/car.read.nvm - 故障注入:
test.safety.inject $class $major $sub sdiag.read.log $type(0=最新,1-64=block,255=全部,256=nvm 管理)- Diagnostic:
doip.set.d040 0/1(TLS 开关,下周期有效)、doip.get/set.d010、diag.set.security $v(F106 可写性) - 心跳:
heartbeat.set.switch 0/1、heartbeat.get.switch(进 fastboot 优先用 pm.soc.fastboot.ctrl,会自动关心跳)