Edit online

调试指南

Read time: 1 minute(s)

调试开关

  1. 在 SDK 根目录下,执行下列命令,进入 kernel 的功能配置界面:
    make kernel-menuconfig

    或使用简写命令

    make km
  2. 在内核配置界面,按如下选择,打开 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 调试:
    1. 执行scons --menuconfig命令,进入 menuconfig 的功能配置界面。
    2. 在配置界面选择使能 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 设备。