贫穷贵公子 发表于 2023-8-27 21:46:52

【米尔瑞萨RZ/G2L开发板-创新应用】使用KGDB调试内核ko模块

本文以dmatest.ko模块为例,讲解如何使用KGDB调试内核ko模块

包括如下步骤:
1)YOCTO构建系统当中,增加dmatest内核模块

yocto/myir-renesas-yocto/layers/meta-myir-yg2lx/include/core-image-bsp.inc文件中,增加

kernel-module-dmatest
使YOCTO构建系统,打包dmatest.ko。

yocto/myir-renesas-yocto/layers/meta-myir-yg2lx/recipes-bsp/linux-kernel/linux/files/kgdb.cfg文件中,增加

CONFIG_DMATEST=m

使YOCTO构建系统,编译dmatest.ko模块。

2)测试dmatest.ko模块

关于dmatest模块,可以参考如下链接
https://www.kernel.org/doc/html/latest/driver-api/dmaengine/dmatest.html

2-1)装载dmatest模块


2-2)调整dmatest内核模块的参数
echo 800000 > /sys/module/dmatest/parameters/test_buf_size
echo 2000 > /sys/module/dmatest/parameters/timeout
echo 50 > /sys/module/dmatest/parameters/iterations
echo 1 > /sys/module/dmatest/parameters/max_channels
echo "" > /sys/module/dmatest/parameters/channel 这里,只测试单个channel。
2-3)开启测试
echo 1 > /sys/module/dmatest/parameters/run

从kernel的dmsg日志中,可以发现开发板的dma传输性能。
3)使用kgdb调试dmatest.ko

3-1)确定dmatest.ko装载之后的代码段.text的地址


3-2)gdb调试窗口,加载dmatest.ko符号
add-symbol-file linux-myir-5.10.83+git999/drivers/dma/dmatest.ko 0xffff80000906e000

3-3)gdb窗口,添加breakpoint。


3-4)minicom窗口,进入kgdb模式,等待host端的连接
echo g > /proc/sysrq-trigger3-5)gdb窗口,连接开发板
target remote /dev/pts/5

3-6)gdb窗口,输入c指令,让开发板继续运行
3-7)monicom窗口,开启dmatest,此时,因为kgdb已经在dmatest_run_set函数上,增加了断点。所以,会暂停dmatest.ko模块的运行,开启gdb调试。


页: [1]
查看完整版本: 【米尔瑞萨RZ/G2L开发板-创新应用】使用KGDB调试内核ko模块