7.8.3. 调试指南
7.8.3.1. 调试开关
参考快速入门 - 编译概述 - Kernel配置,进入kernel的功能配置,可以打开PWM模块的DEBUG选项:
Linux
Kernel hacking
ZX Debug
[*] PWM driver debug
此DEBUG选项打开的影响:
PWM 驱动以-O0编译
PWM 的pr_dbg()和dev_dbg()调试信息会被编译
在系统运行时,如果要打印pr_dbg()和dev_dbg()信息,还需要调整loglevel为8,两个方法:
在xxx-board.dts中修改bootargs,增加“loglevel=8”
在板子启动到Linux shell后,执行命令:
echo 8 > /proc/sys/kernel/printk
7.8.3.2. Sysfs 节点
7.8.3.2.1. 状态信息
在PWM驱动初始化成功后,会在Sysfs中注册生成一个 status
节点,其中打印了当前的PWM配置及状态信息:
# cat /sys/devices/platform/soc/19240000.pwm/status
In PWM V1.00:
Module Enable: 1, IRQ Enable: 0x0
Ch En Mode Tb-clk-rate Def CBD CBU CAD CAU PRD ZRO
0 0 Up 0 0 - - - - - -
- - - - - -
1 0 Up 0 0 - - - - - -
- - - - - -
2 1 Up 24000000 0 - - - Hgh Low -
- - - Low Hgh -
3 0 Up 0 0 - - - - - -
- - - - - -
7.8.3.2.2. 设置背光
Linux Backlight子系统提供一些 Sysfs 节点,可用来获取、设置当前背光:
# cd /sys/class/backlight/backlight/
# ls /sys/class/backlight/backlight/
actual_brightness device/ subsystem/
bl_power max_brightness type
brightness scale uevent
# cat max_brightness
10
# cat brightness
8
# echo 9 > brightness
[ 146.913635] backlight: set brightness to 9
[ 154.054433] aic-pwm 19240000.pwm: ch0 duty 900000 period 1000000
# echo 10 > brightness
[ 192.145595] backlight: set brightness to 10
[ 192.151118] aic-pwm 19240000.pwm: ch0 duty 1000000 period 1000000
# echo 9 > brightness
[ 194.681923] backlight: set brightness to 9
[ 194.687264] aic-pwm 19240000.pwm: ch0 duty 900000 period 1000000
# echo 8 > brightness
[ 197.748816] backlight: set brightness to 8
[ 197.753606] aic-pwm 19240000.pwm: ch0 duty 800000 period 1000000
# echo 7 > brightness
7.8.3.2.3. 动态配置 PWM 通道
通常情况下,修改PWM通道的配置,方法是:
修改xxx-board.dts中的PWM通道参数;
编译uboot、镜像;
重启板子,下载最新镜像;
然后用示波器查看该PWM通道的信号输出是否符合预期。
为了提供调试的效率,PWM驱动设计了一个 config
节点,可实现 运行时动态修改任意PWM通道的任意参数 ,并且立即生效,一步shell中的 echo
操作可实现上述1、2、3步骤的效果。如下:
# echo "0 1 0 24000000 1 0 2 0 0 1 0" > /sys/devices/platform/soc/1924000.pwm/config
[aic@] # cat /sys/devices/platform/soc/19240000.pwm/status
In PWM V1.00:
Module Enable: 1, IRQ Enable: 0x0
Ch En Mode Tb-clk-rate Def CBD CBU CAD CAU PRD ZRO
0 1 Up 24000000 1 - - - Hgh Low -
- Hgh - - Low -
1 0 Up 24000000 1 - - - Hgh Low Low
- - - - - -
2 0 Up 24000000 0 - - - - - -
- - - - - -
3 0 Up 24000000 0 - - - - - -
- - - - - -
config
的参数格式定义如下(按从左到右的输入顺序):
参数名称 |
取值范围 |
含义 |
---|---|---|
channel No. |
[0, 3] |
通道号 |
action No. |
[0, 1] |
0和1分别代表action0、action1 |
mode |
[0, 2] |
0, up-count; 1, down-count; 2, up-down-count |
tb-clk-rate |
[0, 24000000] |
时基计数器的工作时钟 |
default level |
[0, 1] |
初始电平 |
CBD |
[0, 3] |
0, none; 1, low; 2, high; 3, inverse |
CBU |
||
CAD |
||
CAU |
||
PRD |
||
ZRO |