mcu shell命令参考文档

串口设置:波特率 115200,8 数据位,1 停止位,无奇偶校验。

登陆 xcd mcu shell(3 种互斥方式)

💥 三种方式彼此互斥,同时只能接一种硬件设备: ① android 系统通过 adb/串口直接登陆 ② PC 通过 type-c usb 线 ③ PC 通过 debug 板子

android 系统通过串口直接登陆到 MCU

  1. adb shell 或 soc 串口登陆到 Android
  2. stop mculog(停止 mculog 进程——它占用串口 /dev/ttyHS4,不停会无法输入)
  3. microcom /dev/ttyHS4,连按两个回车出现 msh># 提示符
  4. log 太多看不清输入:log.set.loglevel.current 0(fatal 级)
  5. 能输入但没 log(soc 没发握手):log.cat
  6. CTRL+] 退出 mcu shell 回 Android shell

mcu shell help 命令列表

PC 通过 type-c usb 线登陆(P1 及以后板子)

type-c 出来的 UART TTL 电平必须 1.2V,其他电平无法输入输出。

type-c连PC+调试口

PC 通过 debug 板子登陆

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

debug板登陆连接与短接

系统

命令功能
system.version获取 mcu git 版本号和编译时间
system.reset 0mcu 安全复位(等 SOC 关机)+SOC 复位+MCU 复位,非特殊勿用
system.reset 1mcu 重启(不等 SOC)+SOC 复位+MCU 复位,产线老化建议用
system.reset 2/3SOC 安全/非安全重启(拉 KPD),MCU 不复位
os.dump.taskinfodump 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 $onoff
  • dio.write.channel $chid $value / dio.read.channel $chid
  • i2c.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/0SOC 进/出 FastBoot
pm.soc.recovery.ctrl 1进 Recovery;pm.soc.bios.ctrl 1 进 MIBIOS
pm.soc.edl.ctrl 1/0SOC 进/出 EDL(9008)
pm.soc.900e.ctrl 1/0SOC 进/出 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.d010diag.set.security $v(F106 可写性)
  • 心跳:heartbeat.set.switch 0/1heartbeat.get.switch(进 fastboot 优先用 pm.soc.fastboot.ctrl,会自动关心跳)