【米尔瑞萨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]