1、Crash,最常遇到的,可能是因为我是做设备驱动开发的缘故; 2、Lockup,比较少,这类问题预防比事后调试更重要; 3、Logic/implementation error,这个也比较容易遇到,一般是运行不报错,但是运行的结果不符合预期; 4、Resource leak,偶尔会遇到; 5、Performance,偶尔会遇到,对于做驱动开发的话,一般是先考虑功能,当性能...
LINUX的驱动开发调试有两种方法,一种是直接编译到内核,再运行新的内核来测试;二是编译为模块的形式,单独加载运行调试。第一种方法效率较低,但在某些场合是唯一的方法。模块方式调试效率很高,它使用insmod工具将编译的模块直接插入内核,如果出现故障,可以使用rmmod从内核中卸载模块。不需要重新启动内核,这使驱动调试效率...
使用KGDB调试时需要两台机器,一台作为开发机(Development Machine),另一台作为目标机(Target Machine),两台机器之间通过串口或者以太网口相连。串口连接线是一根RS-232接口的电缆,在其内部两端的第2脚(TXD)与第3脚(RXD)交叉相连,第7脚(接地脚)直接相连。调试过程中,被调试的内核运行在目标机上,gdb调试器运行在...
1. 设备和驱动的注册 驱动程序需要先注册设备和驱动,以进行设备的控制和管理。可以通过Linux内核提供的API如`platform_driver_register`或`misc_register`来注册设备和驱动。 2. 设备的初始化和资源分配 在驱动程序中进行设备的初始化和资源的分配,包括内存分配、IO端口映射、中断注册等。可以使用内核提供的函数如`kma...
三、驱动挂载顺序的详细机制有三种方式 initcall机制:Linux内核为不同驱动的加载顺序定义了不同的优先级...
Linux驱动开发调试 -- 打开dev_dbg()【转】 一、打印调试 linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用 printk(KERN_DEBUG )来输出打印信息。要打开这个开关需要下面两步。 1.1、打开调试开关 你调试的文件中必然包含了<linux/device.h>,或者<linux /paltforam_device....
1.创建/proc文件调试 在/proc 下的每个文件都绑到一个内核函数上, 当文件被读的时候即时产生文件内容. 使用/proc 的模块需要包含 <linux/proc_fs.h> 当一个进程读模块的 /proc 文件, 内核分配了一页内存(就是说, PAGE_SIZE 字节), 驱动可以写入数据来返回给用户空间. 那个缓存区传递给你的函数, 是一个...
Linux下进行驱动开发,完全将驱动程序与应用程序隔开,中间通过C标准库函数以及系统调用完成驱动层和应用层的数据交换。 驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对“/dev/xxx” (xxx 是具体的驱动文件名字) 的文件进行相应的操作即可实现对硬件的操作。
一、内核中的调试技术 我们列出用来开发的内核应当激活的配置选项,除了特别指出外,所有的这些选项都在内核配置工具的“kernel hacking” 菜单中。注意:并非所有体系架构都支持其中的某些选项 CONFIG_DEBUG_KERNEL 这个选项只是使其他调试选项可用。它应当打开,但它本身不会打开所有的调试功能。