![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
正点原子imx6ull
文章平均质量分 77
以实战为例,学习imx6ull驱动的编写‘’
ODF..
这个作者很懒,什么都没留下…
展开
-
linux文件夹介绍
包括进程调度(kernel/sched.c)及创建和撤销进程的代码(kernel/fork.c和kernel/exit.c)。该文件夹下没有内核代码。这个文件夹下没有内核代码,仅仅有一套实用的文档,但这些文档的质量不一。drivers文件夹下包括的代码占整个内核发行版本号代码的约一半以上。包括全部支持的外设的驱动。该文件夹包括了与体系结构无关的内存管理代码,为每一个平台实现 和体系结构相关的内存管理程序 是放在arch/platform/mm中的。arch文件夹下的所以子文件夹中都是体系结构相关的代码。原创 2023-12-30 15:20:42 · 582 阅读 · 0 评论 -
MX6ULL学习笔记(十三)Linux 自带按键驱动程序
Linux 内核也自带了 KEY 驱动,如果要使用内核自带的 KEY 驱动的话需要配置 Linux 内核,不过 Linux 内核一般默认已经使能了 KEY 驱动,但是我们还是要检查一下。按照如下路径 找到相应的配置选项:选中“GPIO Buttons”选项,将其编译进 Linux 内核中,如图选中以后就会在.config 文件中出现“CONFIG_KEYBOARD_GPIO=y”这一行,Linux 内核 就会根据这一行来将 KEY 驱动文件编译进 Linux 内核。原创 2023-12-17 00:56:15 · 1280 阅读 · 0 评论 -
MX6ULL学习笔记(十二)Linux 自带的 LED 灯
前面我们都是自己编写 LED 灯驱动,其实像 LED 灯这样非常基础的设备驱动,Linux 内 核已经集成了。Linux 内核的 LED 灯驱动采用 platform 框架,因此我们只需要按照要求在设备 树文件中添加相应的 LED 节点即可,本章我们就来学习如何使用 Linux 内核自带的 LED 驱动。原创 2023-12-17 00:39:04 · 1163 阅读 · 0 评论 -
MX6ULL学习笔记(十一)I2C设备驱动
前面我们说过,linux内核驱动遵循分离与分层的思想,也就是Linux中的总线驱动设备模型,也就是常说的驱动分离,如图所示,那么i2c也不例外。当向系统注册一个驱动时,总线会在右侧的设备中查找,看看有没有与之匹配的设备,有的话就将两者联系起来;当向系统中注册一个设备时,总线会在左侧的驱动中查找,看有没有与之匹配的驱动,有的话也联系起来。下面三层是通过总线-设备-驱动模型融合到一起的I2C驱动。这里可以看到,Linux内核将I2C驱动分为两部分:①、I2C总线驱动,I2C。原创 2023-12-14 19:50:21 · 1181 阅读 · 0 评论 -
Linux驱动开发中private_data变量的理解
在嵌入式Linux中,"是一个结构体或类中的成员变量,用于指向该设备的私有数据。这个变量的作用是为了让驱动程序可以在设备和设备文件之间建立联系。原创 2023-12-12 20:31:32 · 677 阅读 · 0 评论 -
MX6ULL学习笔记(四)设备树
设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等,如图所示:在图中,树的主干就是系统总线,IIC 控制器、GPIO 控制器、SPI 控制器等都是接到系统主线上的分支。原创 2023-12-11 19:39:57 · 1086 阅读 · 0 评论 -
MX6ULL学习笔记(九)MISC设备驱动
所有的 MISC 设备驱动的主设备号都为 10,不同的设备使用不同的从设备号。随着 Linux字符设备驱动的不断增加,设备号变得越来越紧张,尤其是主设备号, MISC 设备驱动就用于解决此问题。MISC 设备会自动创建 cdev,不需要像我们以前那样手动创建,因此采用 MISC 设备驱动可以简化字符设备驱动的编写。原创 2023-12-07 17:39:23 · 1078 阅读 · 0 评论 -
MX6ULL学习笔记 (八) platform 设备驱动实验
②。原创 2023-12-07 11:42:26 · 1063 阅读 · 3 评论 -
MX6ULL学习笔记 (七) 中断实验
(1)首先定义一个结构体,来保存有关key中断的一些信息。/* 中断IO描述结构体 */int gpio;/* 中断号 *//* 按键对应的键值 *//* 名字 *//* 中断服务函数 *//* gpio号 *//* 中断号 *//* gpio名字 *//*按键对应键值*//*终端服务函数 */原创 2023-12-04 14:56:34 · 1099 阅读 · 0 评论 -
IMX6ULL学习笔记(三) 字符设备驱动hello_drv
编写入口函数具体实现:(1)动态分配设备号使用函数或函数动态分配字符设备号。这些函数将为字符设备分配主设备号和次设备号。(2)初始化字符设备结构体:调用cdev_init()函数来初始化字符设备结构体。该函数需要传入要初始化的struct cdev变量以及指向文件操作函数表的指针。(3)创建字符设备节点:调用cdev_add()函数将字符设备添加到内核中,在/dev/目录下创建相应的字符设备节点。(4)使用函数创建一个设备类。原创 2023-11-09 20:17:13 · 307 阅读 · 0 评论 -
MX6ULL学习笔记(一) 交叉工具链的安装
ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译,编译就需要编译 器,Ubuntu 自带的 gcc 编译器是针对 X86 架构的!而我们现在要编译的是 ARM 架构的代码,因为我们编译的代码是需要烧写到ARM板子上的,所以我们需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架 构代码的 GCC 编译器,这个编译器就叫做交叉编译器。原创 2023-11-27 10:55:42 · 1183 阅读 · 0 评论 -
解决正点原子Linux开发板配置静态IP重启后失效的问题
先修改vi /etc/network/interfaces,设置静态IP 保存 修改开机自启动文件 vi /etc/rc.local 在 exit0 之前添加这条命令: /etc/init.d/networking restart 保存,然后重启就没问题了原创 2023-10-08 23:19:09 · 304 阅读 · 0 评论