![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
linux驱动
linux 驱动开发
tyrocjl
这个人很懒,什么都没有留下哦
展开
-
linux驱动开发LDD(五)——字符设备驱动编程、GPIO库函数、综合运用goto语句、ioctl
11原创 2020-02-14 18:56:19 · 484 阅读 · 0 评论 -
内核空间和用户空间的数据交换
用户空间执行的代码是不能访问内核空间的,如当用户空间调用 read(fd,buf,len)时,到内核中会调用 sys_read,然后sysread找到应该具体调用的read函数,该系统调用和内核、为内核增加一个系统调用文章中有具体描述,最后由内核调用磁盘驱动获取数据 将数据写入buf。write(fd,buf,len)同理,最后由内核调用磁盘驱动将buf中的数据写入磁盘。内核空间执行的代...原创 2020-01-23 10:58:47 · 431 阅读 · 0 评论 -
linux驱动开发LDD(四)——字符设备驱动编程框架
(一)概念字符设备Linux内核中将设备按照硬件操作特性分为三类:1)字符设备 :读写时以字节为单位 读写顺序固定例如 键盘 鼠标 触摸屏 …2)块设备: 读写时以扇区(多字节)为单位 读写顺序不固定例如 硬盘 flash …3)网络设备: 读写时以帧(多字节)为单位 读写顺序固定 在linux系统中实现一个字符设备硬件驱动:例如 键盘,实则就是在内核中实例化一个...原创 2020-01-18 16:18:31 · 299 阅读 · 0 评论 -
linux驱动开发LDD(三)——系统调用和内核、为内核增加一个系统调用
(一)系统调用定义系统调用由操作系统实现提供的应用编程接口(Application Programming Interface,API),是应用程序同系统之间的接口,实则,系统调用是软件上由用户态进入内核态的唯一方式,保证用户用户空间以安全的访问内核。内核为什么要提供系统调用呢?系统调用的实现方式:软中断用户程序 首先将系统调用号填充到某个寄存器执行软中断指令该指令导致处理器收到...原创 2020-01-18 13:39:36 · 343 阅读 · 0 评论 -
linux驱动开发LDD(二)——符号导出和模块参数
(一)导出符号它是用于解决模块之间的相互函数调用问题 export.c#include <linux/init.h>#include <linux/module.h>int my_add(int x, int y){ printk("<1>" "enter %s\n", __func__); return x+y;...原创 2020-01-15 21:29:42 · 438 阅读 · 0 评论 -
linux驱动开发LDD(一)——第一个内核模块
环境:编译好的内核源码/home/cjl/driver/kernelx6818开发板,使用上边的内核网络根文件系统 /home/cjl/driver/rootfs编写hello.c, 详情见注释//以下两个头文件是内核模块编程时必须要加的,位于内核源码中#include <linux/init.h>#include <linux/module.h>//...原创 2020-01-15 09:23:50 · 356 阅读 · 0 评论