一、启动流程如上面的开发环境 开发内核驱动时,在上位机中,编译为内核后,只需要将内核拷贝到/opt/tftpboot目录下即可 开发应用程序时,在上位机中,只需要将交叉编译好的程序,拷贝到/opt/rootfs目录下,在开发板中就可以执行。 二、内核模块一个内核模块至少包含两个函数:初始化函数和卸载函数。 构建模块:模块代码写好后,下一步就是编译模块了。 编译模块第一步就是决定在哪里管理模块源码了。 有两个选择: 1、把模块源码加入到内核源代码树中 2、在内核源代码树之外维护和构建你的模块源码 把模块源码加入到内核源代码树中操作步骤 1、将模块源码放到内核源码中:如放到drivers/char/目录下 2、添加配置选项。在make menuconfig里并没有这个驱动的配置选项。需要添加。 具体是在Kconfig文件添加配置选项。 3、选中配置选项 4、然后在.config文件中找到配置选项 5、然后在makefile中添加编译目标 6、编译内核 make 在内核源代码树之外维护和构建你的模块源码操作步骤 1、创建一个新的目录用于编写模块源码和Makefile makefile的内容为obj-m+=hello_module.o 2、安装模块:将ko文件放到根文件目录中。 3、模块的加载和卸载 三、字符设备驱动设备驱动的概括 一些重要的数据结构 总 字符设备驱动程序编写的流程 1) 编写硬件底层操作函数实现 open,release,write,read 2) 创建一个 file_operations结构 3) 申请设备号 4) 初始化 cdev结构 5) 注册 cdev 结构 生成设备文件的命令 mknod /dev/first_drv c 主设备号 次设备号 四、字符设备驱动框架在驱动开发中,当应用程序通过系统调用打开文件时,内核会创建一个 file 结构。该 file 结构中的 f_op 字段指向与该文件关联的 file_operations 结构,以便内核根据需要调用相应的驱动程序操作来处理文件访问请求。 |
|Archiver|手机版|小黑屋|软件开发编程门户 ( 陇ICP备2024013992号-1|甘公网安备62090002000130号 )
GMT+8, 2025-1-18 10:00 , Processed in 0.027362 second(s), 16 queries .
Powered by Discuz! X3.5
© 2001-2024 Discuz! Team.