![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式Linux驱动学习笔记
文章平均质量分 51
学习笔记,哔站:【北京迅为】嵌入式学习之Linux驱动篇
https://www.bilibili.com/video/BV1Vy4y1B7ta
打代码的浪浪
齐大18级嵌入式移动开发本科学生一枚
展开
-
06.驱动学习复盘(platform 平台总线模型)
1.平台总线模型也叫 platform 总线模型。是 Linux 内核虚拟出来的一条总线,不是真实的导线。平台总线模型把原来的驱动 C 文件给分成了两个 C 文件,一个是和硬件相关的 device.c,一个是和驱动相关的 driver.c。把稳定不变的放在 driver.c 里面,需要变的就放在了 device.c 里面。2. 平台总线模型的优点:(1)可以提高代码的重用性(2)减少重复性代码3.以平台总线模型设计的驱动,要分别注册 device.c 和 driver.c 。平台总原创 2021-11-14 23:18:32 · 527 阅读 · 1 评论 -
05.驱动学习复盘(字符设备)
P.S:申请字符设备很麻烦,平时学习最常使用的还是杂项设备。同样的。强迫症,不做笔记总觉得缺了点什么。1.字符设备和杂项设备的区别(1)杂项设备主设备号固定是10,而字符设备需要自己或者系统分配主设备号。(2)杂项设备能自动生成设备节点,字符设备需要手动生成设备节点。2.注册字符类设备号的两个方法第一种方法:静态分配一个设备号,需要明确知道我们的系统里哪些设备号没有用。//参数:设备号的起始值,次设备号的个数,设备的名称,//查看设备名称 cat /proc/devices//原创 2021-11-13 21:40:12 · 753 阅读 · 0 评论 -
04.驱动学习复盘(原始架构)
P.S:这部分是关于原始架构的驱动编写,Linux物理地址到虚拟地址映射,申请字符类设备编号等等。个人感觉用处不大,现在起码是用平台总线了,又简单又方便。但是由于强迫症,还是要写文档的QAQ。1.在单片机和裸机中我们操作硬件,//操作寄存器unsigned int *p = 0x12345678;*p = 0x87654321;2.在Linux上使能了MMU,不能直接操作物理地址,需要把物理地址转换成虚拟地址。3.内核提供了相关的函数:ioremap:把物理地址转换成虚拟地址原创 2021-11-13 14:56:44 · 2224 阅读 · 0 评论 -
03.驱动学习复盘(应用层和内核层数据传输)
1.Linux一切皆文件!文件对应的操作有打开、关闭、读写等。设备节点也是。2.文件操作集中常用的几个函数:struct file_operations { ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); unsigned int (*poll) (struct f原创 2021-11-12 23:15:59 · 619 阅读 · 0 评论 -
02.驱动学习复盘(杂项设备)
1.Linux三大设备驱动:字符设备:IO的传输过程是以字符为单位的,没有缓冲。比如I2C,SPI都是字符设备。块设备:IO的传输过程是以块为单位的。跟存储相关的都属于块设备,比如TF卡。网络设备:与前两个不一样,是以socket套接字来进行访问的。2.杂项设备是字符设备的一种。可以自动生成设备节点。我们的系统里有很多杂项设备,可以输入 cat /proc/misc 命令来查看。3.杂项设备的主设备号是相同的,次设备号是不同的。主设备号相同可以节省内核资源。4.设备号原创 2021-11-12 22:03:49 · 917 阅读 · 0 评论 -
01.驱动学习复盘(基础知识)
P.S.视频都看过一遍啦,第一遍主要是跟着打代码运行了驱动。因为接下来要搞毕业设计了,特意来复盘写笔记记录一下。加油!话不多说,action。1.前置知识:<1>掌握Linux开发环境搭建以及Linux命令行操作。<2>掌握开发板系统的编译以及镜像的烧写<3>掌握Linux系统编程开发2.驱动分为四个部分:头文件驱动模块的入口和出口声明信息功能实现//包含宏定义的头文件#include <linux/init.h>原创 2021-11-12 21:20:23 · 994 阅读 · 0 评论 -
记录一次坎坷的Android7.1编译经过
1.迅为的4418开发板,Ubuntu14.04编译Android7.1。使用迅为搭建好的开发环境并下载Android7.1源码。2.解压得到的虚拟机设置我进行了调整。硬盘2原来是5G我给到了300。直接上代码://看到添加的硬盘信息 fdisk -l//因为是在原基础上更改,就先给sdb卸载下来了 umount /dev/sdb//把硬盘格式化成ext3格式 mkfs -t ext3 /dev/sdb//原文说的是在/home下建立work文件夹,然后挂载硬.原创 2021-11-11 20:30:10 · 2019 阅读 · 0 评论