摘要: LED程序设计 1.编写内核模块 2.搭建字符驱动框架 3.实现设备方法 头文件 <linux/io.h> writel() 1.编译/安装驱动 make cp leddev.ko .../rootfs insmod leddev.ko 2.创建设备文件 mknod /dev/myled0 c 25 阅读全文
posted @ 2016-03-07 21:10 盛夏夜 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 设备控制理论 1.设备控制的作用 大部分驱动程序除了需要提供读写设备的能力外,还需要具备控制设备的能力。比如改变波特率。 2.设备控制的函数 在用户空间使用ioctl系统调用函数来控制设备。 int ioclt(int fd, unsigned long cmd, ...) fd:要控制的设备文件描 阅读全文
posted @ 2016-03-07 17:10 盛夏夜 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 应用程序访问驱动程序 1.系统调用找到内核实现函数(read) 在这个过程中主要做了下面的工作: r7 = 3 svc 说明: svc是系统调用指令,当使用该指令时系统会从用户空间进入内核空间的固定入口处,内核会从r7寄存器中取出系统调用编号,然后内核会查找系统调用表找到对应的函数实现,然后调用该函 阅读全文
posted @ 2016-03-07 17:07 盛夏夜 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 头文件 <linux/cdev.h> struct cdev <linux/fs.h> struct file_operations <asm/uaccess.h> copy_from_user(); copy_to_user(); memdev.c #include <linux/init.h> 阅读全文
posted @ 2016-03-07 15:47 盛夏夜 阅读(563) 评论(0) 推荐(0) 编辑
摘要: 设备驱动模型 1.驱动初始化(驱动安装) 1.1.分配设备描述符 1.2.初始化设备描述符 1.3.注册设备描述符 1.4.硬件初始化 2.实现设备操作(驱动操作) 3.驱动注销(驱动卸载) 设备描述结构 在任何一种驱动模型中,设备都会用内核中的一种结构来描述。我们的字符设备在内核中使用struct 阅读全文
posted @ 2016-03-07 10:11 盛夏夜 阅读(286) 评论(0) 推荐(0) 编辑