前言
此教程是基于已经写好的linux的led杂项设备驱动的调试教程,如果需要了解或者学习linux驱动学习的请查看这篇文章。
https://blog.csdn.net/qq_20553613/article/details/102993203
实例工程:
链接:https://pan.baidu.com/s/1kz2907zoGj_Fk58oeAT_NA
提取码:oc50
创建工程
先创建一个文件夹(如:iTOP4412_driver)用于存放工程文件以及模块的源文件、vmlinux、用于测试驱动的应用程序、设备注册模块。将led驱动的源代码与编译后生成的模块都放在此文件夹中。
然后创建空工程
点击File >> New >> Project
默认选项
点击Finish完成工程创建。此时在工程目录中就可以看到原先创建好的文件夹以及文件。包含:vmlinux镜像、led_app应用程序、leddev_reg.ko设备注册模块、以及led_driver.ko驱动模块和它的源代码。
调试驱动
硬件接线:
连接好设备,然后开发板上电。
加载模块
1. 在开发板上先加载led设备模块
2. 加载led_driver驱动模块
选中工程右键 >> Debug As >> Debug Configuration。创建一个新的调试
在connection标签处选择对应芯片,我们这里使用的是Exynos4412。然后在Select target处选择
然后点击Connections处的Browse...按钮,选择我们的DSTREAM调试器
切换到Files栏,这里全部留空,不选择任何东西。
切换到Debugger栏,在Run control面板处选择Connect only。勾选Execute debugger conmmands并添加以下调试命令:
interrupt
add-symbol-file iTOP4412_driver/led_driver_debug/linux_kernel_src/vmlinux
解释:
interrupt:表示中断调试
add-symbol-file:加载符号文件,后面紧跟的是vmlinux镜像文件在host主机上的目录,其实就是我们刚开始创建工程时的路径。
然后直接点击Debug按钮,进行调试
点击打开Windows >> Show View >> Modules。打开Modules窗口,
在Modules窗口会显示已经加载的模块信息。这里因为我加载了2个模块(leddev.ko、led_driver.ko)
选中led_driver模块,右键选择Add Symbol File..
加载我们的led_driver.ko模块
加载成功后,Modules窗口中会出现模块的路径
设置断点
打开led_driver.c源文件,在led_ioctl函数处打上断点
在led_driver文件中的led_ioctl函数处打上断点。使用break命令
接下来,我们需要运行led_app应用程序来调用led_driver驱动模块。
在开发板上调用led_app程序
当然这里只是简单的调试,实际上的调试过程比较更加复杂。后面具体调试操作得根据实际来