以下技术在盈鹏飞嵌入式的A40I/T3核心板(CoM-X40I)和主控板(SBC-X40I)上经过验证,欢迎 交流! CoM-X40I核心板和SBC-X40I主板见下图:

1. 前言
由于全志平台的电源管理模块功能比较强大,驱动也比较复杂,调试起来比较费劲; 另外还有CPU和系统一些常用的调试命令; 这里主要总结一些平时用的比较多的调试方法
2. /sys/class/axppower 调试目录
(1) /sys/class/axppower/axpdebug
- echo 1 > /sys/class/axppower/axpdebug //打开电池管理部分debug信息
- echo 2 > /sys/class/axppower/axpdebug //打开regulator部分debug信息
- echo 4 > /sys/class/axppower/axpdebug //打开中断部分debug信息
- echo 8 > /sys/class/axppower/axpdebug //打开充电部分debug信息
- echo 0 > /sys/class/axppower/axpdebug //关闭debug信息
(2) /sys/class/axppower/regdebug
// 追踪axp寄存器是否被读写 例如: echo 5c > /sys/class/axppower/regdebug
(3) /sys/class/axppower/longkeypoweroff
// 打开关闭 power on reset 功能
- echo 1 > /sys/class/axppower/longkeypoweroff // 打开
- echo 0 > /sys/class/axppower/longkeypoweroff // 关闭
(4) /sys/class/axppower/out_factory_mode 不知道什么用 (5) /sys/class/axppower/vbuslimit // 提供usb充电关闭限流 max_A = 2500mA
- echo 0 > /sys/class/axppower/vbuslimit // 关闭usb充电限流 max_A = 2500mA
- echo 1 > /sys/class/axppower/vbuslimit // 打开usb充电限流
3. /sys/bus/platform/devices/axp81x_board/
(1)axp-regulator.x 文件节点
(2)axp81x-supplyer.x 文件节点
(3) axp81x_reg 读写单个寄存器的调试节点
- 读寄存器的方法:
- 写: echo 寄存器地址 > axp81x_reg
- 读: cat axp81x_reg
-
- 写单个寄存器的方法:
- 写: echo 寄存器地址+值 > axp81x_reg (寄存器地址+值:16进制,例如向0x0寄存器写入0x11,则echo 011 > axp81x_reg)
- 读: cat axp81x_reg
(4) axp81x_regs 读多个寄存器的调试节点
- 读寄存器的方法:
- 写: echo 寄存器地址 个数 > axp81x_regs
- 读: cat axp81x_regs
-
- 写多个寄存器的方法: (最多才两个寄存器,还是连续的递增)
- 写: echo 寄存器地址1+值1+值2 > axp81x_regs (值2: 向寄存器地址1+1写入值2)
- 读: cat axp81x_regs
4. /sys/bus/platform/devices/reg-81x-cs-xxxx
(这些节点存在目的是为了方便调试)
- 例如: /sys/bus/platform/devices/reg-81x-cs-dcdc4/
- -- max_microamps // 设置电流最大值,只是和dcdc4 max value对比一下,用做检测作用
- --min_microamps // 设置电流最小值,只要写入新的值,实质电流 = min_microamps
- echo 电流(毫安) > /sys/bus/platform/devices/reg-81x-cs-dcdc4/min_microamps // 生效的前提是min_microamps < max_microamps
-
- --max_microvolts // 电压和电流同理
- --min_microvolts // 电压和电流同理
- echo 电压(毫伏) > /sys/bus/platform/devices/reg-81x-cs-dcdc4/min_microvolts
5. Cpu最小频点锁定配置
分别为800Mhz、1080Mhz和1200Mhz
- echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
- echo 1080000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
- echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
6. Cpu 关闭开关核策略、 锁定当前online数目
分别为锁定2核、3核和4核在线
- echo 0 > /sys/kernel/autohotplug/enable
- echo 2 > /sys/kernel/autohotplug/lock
- echo 3 > /sys/kernel/autohotplug/lock
- echo 4 > /sys/kernel/autohotplug/lock 或者 echo 1 > /sys/kernel/autohotplug/boost_all
7. 恢复动态开关核
- echo 1 > /sys/kernel/autohotplug/enable
- echo 0 > /sys/kernel/autohotplug/lock
- echo 0 > /sys/kernel/autohotplug/boost_all
8. 温度相关的节点
- sys/devices/virtual/thermal/thermal_zone/mode enabled 打开 和 disabled 关闭温控
- echo disabled > /sys/devices/virtual/thermal/thermal_zone0/mode
- /sys/devices/virtual/thermal/thermal_zone/temp 温度数据
- ./sys/class/thermal 和 sys/devices/virtual/thermal是一样的
- ./sys/kernel/debug/tracing/events/thermal
9. 查看内存大小
- cma: cat /sys/kernel/debug/ion/cma
- carveout: cat /sys/kernel/debug/ion/carveout
- cat /proc/sunxi_ion
-
- GPU内存:
- cat /sys/kernel/debug/mali/memory_usage
10. 刷cache方法
- 刷free pagecache
- echo 1> /proc/sys/vm/drop_caches
- 刷free pagecache, dentries and inodes
- echo 3> /proc/sys/vm/drop_caches
11.循环打印shell命令
- adb shell "while true;do dumpsys meminfo com.android.systemui;sleep 1; echo ======================================================= ;done"
- adb shell "while true;do cat /sys/class/thermal/thermal_zone0/temp ;sleep 1;done"
- adb shell "while true;do cat /sys/kernel/debug/ion/cma;sleep 1;done"
-
- echo 1 > /sys/kernel/debug/tracing/events/kmem/enable
- echo 1 > /sys/kernel/debug/tracing/events/vmscan/enable
- echo > /sys/kernel/debug/tracing/trace
- cat /sys/kernel/debug/tracing/trace > /data/trace.log