摘要:
第一个相对完整的驱动实践编写 需求: 1.使用杂项设备完成一个蜂鸣器的驱动。 2.完成一个上层测试应用。 应用要求:在上层应用中传入参数1为打开蜂鸣器,传入参数0为 关闭蜂鸣器。 buzzer.c #include <linux/init.h> #include <linux/modul 阅读全文
摘要:
Linux物理地址到虚拟地址映射 1.在单片机和裸机中我们操作硬件是怎么操作的? 我们可以这样来操作我们的寄存器 unsigned int *p = 0x12345678; *p = 0x87654321; 但是在Linux上不行,在Linux上,如果要想操作硬件,需要先把物理地址转换成虚拟地址。因 阅读全文
摘要:
应用层和内核层实现数据交互 Linux一切皆文件! 文件对应的操作有打开,关闭,读写 设备节点对应的操作有打开,关闭,读写 设备节点 在 Linux 中, 所有设备都以文件的形式存放在/dev 目录下, 都是通过文件的方式进行访问, 设备节点是 Linux 内核对设备的抽象, 一个设备节点就是一 阅读全文
摘要:
杂项设备驱动 Linux三大设备驱动 字符设备:IO的传输过程是以字符为单位的,没有缓冲。比如I2C,SPI都是字符设备 块设备:IO的传输过程是以块为单位的。根存储相关的,都属于块设备,比如,tf卡 网络设备:与前俩个不一样,是以socket套接字来访问的。 1.我们这节课要讲的杂项设备驱动是属于 阅读全文
摘要:
Linux下把驱动编译进内核 需求: 把前面课程学习的helloworld驱动编译到内核。 例子: source"drivers/redled/Kconfig" config LED_4412 tristate "Led Support for GPIO Led" depends on LEDS C 阅读全文
摘要:
make menuconfig图形化配置 1.怎么进入到make menuconfig图形化界面? 首先进入到内核源码的路径下,然后输入make menuconfig即可打开这个界面。 2.make menuconfig图形化界面的操作。 1.搜索功能 输入“”/“”即可弹出搜索界面,然后输入我们想 阅读全文
摘要:
Linux下编译驱动模块实践 分析: 1.先去内核源码里面去搜索,如果有的话,我们可以直接选择这个驱动,然后直接使用。 2.假如没有这个驱动,我们需要自己编译一个驱动,然后加载到内核里面去运行。 CH340 Linux驱动下载链接: http://www.wch.cn/download/CH341S 阅读全文
摘要:
Linux最简单驱动-helloworld 驱动分为四个部分: 头文件 驱动模块的入口和出口 声明信息 功能实现 第一步,包含头文件 #include <linux/init.h> 包含宏定义的头文件 #include <linux/module.h> 包含初始化加载模块的头文件 第 阅读全文