调试指南
Read time: 1 minute(s)
调试开关
-
在 SDK 根目录下,执行下列命令,进入 kernel 的功能配置界面:
make kernel-menuconfig
或使用简写命令
make km
-
在内核配置界面,按如下选择,打开 DMA 模块的 DEBUG 选项:
Linux Kernel hacking [*] DMA Engine support [*] DMA Engine debugging [*] DMA Engine verbose debugging
打开 DEBUG 选项后:
-
驱动以
-O0
编译。 -
pr_dbg() 和 dev_dbg() 调试信息会被编译。
在系统运行时,如果要打印 pr_dbg() 和 dev_dbg() 信息,还需要调整 loglevel 为 8,可以通过以下两种方式实现:-
在 board.dts 中修改 bootargs,增加 “loglevel=8”
-
在板子启动到 Linux Shell 后,执行下列命令:
echo8 > /proc/sys/kernel/printk
-
在 Luban-Lite 中,DMA 驱动的日志控制接口共用了全局的 aic_log.h 接口。
为了方便调试,DMA 模块增加了一个 dump 控制开关,可以在运行时丢弃每次 DMA 请求的任务链表详细信息。
- 执行下列命令和步骤打开 DMA 调试:
- 执行scons --menuconfig命令,进入 menuconfig 的功能配置界面。
- 在配置界面选择使能 DMA 驱动调试:Drivers options ---> Drivers debug ---> [*] Enable DMA driver debug。
- DMA 驱动会在命令行中注册 dma_dump 命令,可查询通道状态,执行下列命令可以使用 dump
控制:
dma_dump 0
输出示例如下:DMA Ch0: desc = 0x0 Common register: IRQ_EN 0x4, IRQ_STA 0x0, CH_STA 0x0, GATE 0x0 Ch0 register: Enable 0x0, Mode 0x0, Pause 0x0 Task 0xfffff800, Config 0x4c004c0, Src 0x4177a204, Sink 0x42165384 Left 0x0, Package_cnt 1
注:
DMA 驱动并没有用到 RT-Thread 的设备框架,所以在目标板上使用命令 list_device 不会看到 DMA 设备。