目标:打印bcm2835_spi_transfer_one 是如何从用户空间开始调用的
1. kernel 配置
KDB配置选项
添加 spi 控制器驱动 和 spi 设备驱动
2. 调试流程
调试内核-系统启动之后
1. 开发板进入kdb,等待pc 连接
root@raspberrypi:~# echo "ttyS0,115200" > /sys/module/kgdboc/parameters/kgdboc
root@raspberrypi:~# echo g > /proc/sysrq-trigger;
备注: 串口要选正确,否则kdb 终端 会卡死
2. pc 连接 kdb,并设置断点
gdb-multiarch vmlinux --ex "target remote /dev/pts/3";
(gdb)b bcm2835_spi_transfer_one
(gdb)continue // 开发板进入用户终端交互模式,可以执行shell 命令
3. 开发板触发中断
root@raspberrypi:~# echo 555 > /dev/spidev0.0
4.1 pc 捕获断点, 可以执行gdb 命令(如 bt)
4.2 pc gdb 删除断点,运行contine=》开发板将退出kdb ,进入用户终端
截图说明