以下技术在盈鹏飞嵌入式的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