第四部分 Linux驱动开发
文章平均质量分 81
在Linux系统中,将外设分为了三大类:字符设备、块设备和网络设备,这三类分别对应了不同的驱动框架。
一只流浪小法师
这个作者很懒,什么都没留下…
展开
-
i.MX6ULL终结者Linux 4G通信实验EC20 4G模块联网测试
文章目录1 PPP软件包编译2 EC20 4G模块联网测试1 PPP软件包编译首先拷贝ppp-2.4.4.tar.gz到Ubuntu下,然后执行下面的命令解压:tar -xvf ppp-2.4.4.tar.gz解压完成得到ppp-2.4.4目录,进入ppp-2.4.4目录如图 1.1所示: 图 1.1使用configure进行配置,命令如下:./configure结果如图 1.2所示: 图 1.2配置完成后,使用下面的命令进行编译:make CC=arm-linux-gnuea原创 2021-01-23 09:42:22 · 1039 阅读 · 0 评论 -
i.MX6ULL终结者Linux 4G通信实验EC20 4G模块配置
文章目录1 添加USB设备信息2 Linux内核配置1 添加USB设备信息要使用EC20 4G模块首先需要在Linux内核中添加EC20的USB信息,这样内核启动后,才能正确识别EC20 4G模块。打开Linux内核下的drivers/usb/serial/option.c 文件,添加如下信息:1809 /* add support EC220 4G Module */1810 { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC原创 2021-01-23 09:27:11 · 382 阅读 · 0 评论 -
i.MX6ULL终结者Linux 4G通信实验4G网络连接
对于嵌入式Linux而言,4G网络连接是一个比较容易实现的功能,大多数的4G模块接口都是MiniPCIE接口,但是深入了解一下就会发现,4G模块的通信接口都是USB,所以4G模块的驱动就是USB驱动,只要USB驱动正常,4G模块在硬件上就能正常通信。下面看一下4G模块的硬件原理图:图 1图 2在原理图中,U25是4G模块的MiniPCIE接口,然后通信引脚会接到U15的HUB芯片上,所以4G模块会被识别成USB设备,CON5是SIM卡接口,在使用4G模块时,需要先插入SIM卡。在i.MX6UL原创 2021-01-22 10:04:50 · 392 阅读 · 0 评论 -
i.MX6ULL终结者Linux WIFI驱动实验rtl8723 Wifi联网测试
在开发板上使用rtl8723模块联网测试流程如下:① 因为rtl8723模块的驱动编译到内核中,所以开发板启动便会运行驱动程序② 先试用ifconfig命令关闭eth0设备,然后使用ifconfig命令打开rtl8723对应的wlan设备,一般为wlan0。③ 使用iwlist命令扫描一下当前环境的wifi热点,一来测试一下WIFI 工作是否正常。二来检查一下自己要连接的 WIFI 热点能不能扫描到,扫描不到的话肯定就没法连接了。④ 使用wpa_supplicant命令来连接到指定的wifi热点上。原创 2021-01-22 09:47:06 · 578 阅读 · 0 评论 -
i.MX6ULL终结者Linux WIFI驱动实验Wpa_supplicant 移植
文章目录1 libopenssl移植2 libnl库移植3 wpa_supplicant 移植1 libopenssl移植wpa_supplicant 依赖于 libopenssl,因此需要先移植 libopenssl,首先获取openssl-1.1.1-stable-SNAP-20190915.tar.gz压缩包,拷贝到Ubuntu系统下并解压,得到openssl-1.1.1-stable-SNAP-20190915文件夹,然后在新建一个名为“libopenssl”的文件夹,用于存放 libopens原创 2021-01-21 09:42:53 · 375 阅读 · 0 评论 -
i.MX6ULL终结者Linux WIFI驱动实验Wireless Tools 工具移植与测试
文章目录1 wireless tools工具移植2 wireless tools工具测试1 wireless tools工具移植wireless tools 是操作 WIFI 的工具集合,包括一下工具:① iwconfig:设置无线网络相关参数。② iwlist:扫描当前无线网络信息,获取 WIFI 热点。③ iwspy:获取每个节点链接的质量。④ iwpriv:操作 WirelessExtensions 特定驱动。⑤ ifrename:基于各种静态标准命名接口。我们最常用的就是 iwlis原创 2021-01-21 09:28:25 · 382 阅读 · 0 评论 -
i.MX6ULL终结者Linux WIFI驱动实验wifi驱动添加和编译
文章目录1.1 在Linux内核中添加wifi驱动2 配置Linux内核1.3 Rtl8723 wifi模块驱动测试在i.MX6UL终结者开发板上使用的是usb接口的RTL8723 wifi模块,原理图如图 1所示:图 1可以看到RTL8723模块的接口非常简单,只有DP1和DM1连接到usb HUB芯片上,就可以完成通信电路。RTL8723是realtek公司的wifi芯片,已经提供了wifi驱动源码,就不需要我们自己去编写了,只需要将提供的wifi驱动源码添加到Linux内核中进行编译就可以了原创 2021-01-20 10:36:51 · 441 阅读 · 0 评论 -
i.MX6ULL终结者Linux 电容触摸屏实验使用Linux内核自带的ft5426驱动
在Linux内核中集成了许多电容触摸芯片的驱动,其中就包括我们使用的ft5426的驱动。所以我们来使用一下Linux内核自带的ft5426驱动文件。在使用之前需要先将前面我们添加的ft5426.c驱动文件去除掉,只 需 要 修 改drivers/input/touchscreen/Makefile 这个文件即可,将下面这一行删除掉:obj-y += ft54266.o内核自带的 ft5426 的驱动文件为 drivers/input/touchscreen/edt-ft5x06.c。1、使能内核ft5原创 2021-01-20 10:21:04 · 1580 阅读 · 3 评论 -
i.MX6ULL终结者Linux 电容触摸屏实验Tslib移植和使用
文章目录1 获取tslib源码2 编译tslib3 测试tslibft5426触摸驱动添加成功后,发现触摸可能不太准确,这时可以使用一个第三方开源库tslib来调试触摸屏。下面来看一下tslib源码如何移植。1 获取tslib源码tslib源码可以从官方地址获取:https://github.com/libts/tslib,打开网址可以看到最新的版本是1.21,可以从官网获取,也可以从网盘资料中获取,资料路径:i.MX6UL终结者光盘资料/06_Linux驱动例程/第三方库源码/tslib-1.21.原创 2021-01-19 09:54:53 · 377 阅读 · 0 评论 -
i.MX6ULL终结者Linux 电容触摸屏实验运行测试
文章目录1 编译驱动程序2 运行测试3 将驱动添加到内核中1 编译驱动程序创建Makefile文件,内容和前面实验基本一样,需要将obj-m的值修改为ft5426.o,具体内容如下:KERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_gaCURRENT_PATH := $(shell pwd)obj-m := ft5426.obuild: kernel_moduleskernel_modules:原创 2021-01-19 09:45:55 · 171 阅读 · 0 评论 -
i.MX6ULL终结者Linux 电容触摸屏实验实验程序编写
文章目录1 修改设备树文件2 编写多点电容触摸驱动1 修改设备树文件1、添加FT5426的pinctrl信息FT5426 触摸芯片用到了 4 个 IO,一个复位 IO、一个中断 IO、I2C2 的 SCL 和 SDA,所以我们需要先在设备树中添加 IO 相关的信息。复位 IO 和中断 IO 是普通的 GPIO,因此这两个 IO可以放到同一个节点下去描述,I2C2 的 SCL 和 SDA 属于 I2C2,因此这两个要放到同一个节点下去描述。首先是复位 IO 和中断 IO,topeet_emmc_4_3.原创 2021-01-18 10:01:50 · 409 阅读 · 0 评论 -
i.MX6ULL终结者Linux 电容触摸屏实验硬件原理图
在本实验中使用迅为的7寸屏为例,使用的是FT5426触摸芯片。图 1从原理图中得知,7寸屏使用I2C2,触摸屏复位引脚为SNVS_TAMPER9,中断引脚为GPIO_9。原创 2021-01-18 09:45:14 · 326 阅读 · 0 评论 -
i.MX6ULL终结者Linux 电容触摸屏实验Linux下电容触摸屏驱动框架
文章目录1 多点触摸协议详解2 Type A 触摸点信息上报时序3 Type B触摸点信息上报时序4 MT其他事件的使用5 多点触摸使用到的API函数6 多点电容触摸驱动框架1 多点触摸协议详解在前面的裸板实验中,已经详细讲解过了电容触摸驱动的基本原理,根据前面的实验可以总结出电容触摸屏驱动其实就是一下几种 linux 驱动框架的组合:① IIC 设备驱动,因为电容触摸 IC 基本都是 IIC 接口的,因此大框架就是 IIC 设备驱动。② 通过中断引脚(INT)向 linux 内核上报触摸信息,因此原创 2021-01-16 09:19:41 · 342 阅读 · 0 评论 -
i.MX6ULL终结者RS232驱动测试及RS485测试
文章目录1 RS232驱动测试1.1 编写应用测试程序1.2 运行测试2 RS485测试1 RS232驱动测试1.1 编写应用测试程序本实验例程路径:i.MX6UL终结者光盘资料/06_Linux驱动例程/19_uart创建uart_test.c应用测试程序,具体内容如下:1 #include <stdio.h> 2 #include <string.h> 3 #include <unistd.h> 4 #include <sys/types.原创 2021-01-16 09:10:22 · 419 阅读 · 3 评论 -
i.MX6ULL终结者Linux RS232/485驱动实验RS232驱动
I.MX6U 的 UART 驱动 NXP 已经编写好了,所以不需要我们编写。我们需要做的就是在设备树中添加UART3对应的设备节点即可。1 设备树添加UART3节点打开topeet_emmc_4_3.dts文件,首先添加UART3对应的pinctrl子节点,在iomuxc中添加如下内容:1 pinctrl_uart3: uart3grp { 2 fsl,pins = < 3 MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0X1b0b1 4 MX6原创 2021-01-15 10:38:26 · 182 阅读 · 0 评论 -
i.MX6ULL终结者Linux RS232/485驱动实验硬件原理图
文章目录1 RS232原理图2 RS485原理图1 RS232原理图图 1.1UART3通过跳线帽J46来设置成TTL电平的RS232信号。连接J46的3-5和4-6后,UART3通过TTL电平输出。2 RS485原理图 图 2.1 图 2.2RS485通过SP3485芯片将串口信号转换为RS485信号,RE 是接收使能信号(低电平有效),OE 是发送使能信号(高电平有效)。在图中 RE 和 OE 经过一系列的电路,最终通过 RS485_1_TX 来控制,这样我们可以省掉一个 RS原创 2021-01-15 10:33:57 · 295 阅读 · 0 评论 -
i.MX6ULL终结者Linux RS232/485驱动实验i.MX6UL UART驱动分析
文章目录1 uart的platform驱动框架2 uart_driver初始化3 uart_port初始化和注册4 imx_pops结构体1 uart的platform驱动框架首先看一下在设备树文件imx6ull.dtsi中,串口UART3对应的设备节点,内容如下:1 uart3: serial@021ec000 { 2 compatible = "fsl,imx6ul-uart", 3 "fsl,imx6q-uart", "fsl,imx21-uart原创 2021-01-14 09:49:55 · 581 阅读 · 0 评论 -
i.MX6ULL终结者Linux RS232/485驱动实验Linux下的UART驱动框架
文章目录1 uart_driver结构体2 uart_port结构体3 uart_ops结构体1 uart_driver结构体在Linux中uart和I2C、SPI一样,提供了串口驱动框架,只需要按照提供的串口框架函数编译驱动即可。一般来说串口驱动都已经实现好了,我们需要做的就是在设备树文件中,添加相应的设备节点。当设备和驱动匹配成功后,串口就能够正常工作。在Linux中,用uart_driver结构体来描述串口,uart_driver 定义在include/linux/serial_core.h 文原创 2021-01-14 09:44:22 · 175 阅读 · 0 评论 -
i.MX6ULL终结者Linux I2C驱动实验运行测试
文章目录1 编译驱动程序2 编译应用测试程序3 运行测试1 编译驱动程序和前面章节中驱动测试程序一样需要一个Makefile文件,只是将obj-m的值改为ap3216c_iic.o,Makefile文件内容如下:KERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_gaCURRENT_PATH := $(shell pwd)obj-m := ap3216c_iic.obuild: kernel_moduleskern原创 2021-01-13 09:29:57 · 125 阅读 · 0 评论 -
i.MX6ULL终结者Linux I2C驱动实验实验程序编写
文章目录1 硬件原理图2 修改设备树3 驱动程序编写4 应用测试程序1 硬件原理图 图 1.12 修改设备树1、添加pinctrl信息首先在设备树文件中添加AP3216C设备的引脚信息,AP3216C使用的是I2C1接口,对应的是UART4_TXD 和 UART4_RXD两个引脚,所以需要在设备树中将这两个引脚复用成I2C1功能,AP3216C设备上还有一个中断引脚,使用了GIO1_IO01,如果用到中断功能的话,同样需要添加引脚信息。在本实验中暂时不使用中断。打开topeet_emmc_4原创 2021-01-13 09:18:00 · 268 阅读 · 0 评论 -
i.MX6ULL终结者Linux I2C驱动实验I2C设备驱动编写流程
文章目录1 设备信息描述2 I2C设备的数据收发和处理I2C总线驱动一般是不用用户自己编写的,而I2C设备驱动则需要用户自己编写。每个设备的驱动都不相同,但是编写流程是一样的。下面就来具体分析一下。1 设备信息描述1、不使用设备树文件当开始编写I2C设备驱动时,首先要添加设备信息。先来看一下在不使用设备树,使用平台文件时,如何在平台文件中添加I2C设备信息。在平台文件中通过i2c_board_info 结构体来描述一个具体的 I2C 设备。i2c_board_info 结构体如下:295 str原创 2021-01-12 09:33:35 · 228 阅读 · 0 评论 -
i.MX6ULL终结者Linux I2C驱动实验IMX6ULL的I2C总线驱动分析
在上一节中我们了解了I2C框架分为I2C核心、I2C总线驱动和I2C设备驱动三部分。其中I2C总线驱动就是SOC的I2C控制器驱动,一般来说都是SOC厂家实现好的。而I2C设备驱动是用户根据自己不同的设备具体实现的。在imx6ull平台下,NXP官方已经实现好了I2C总线驱动,下面简单分析一下。首先要找到设备树中关于I2C控制器的设备节点。打开imx6ull.dtsi文件,有如下内容:1 i2c1: i2c@021a0000 { 2 #address-cells = <1>;原创 2021-01-12 09:28:39 · 1063 阅读 · 0 评论 -
i.MX6ULL终结者Linux I2C驱动实验Linux I2C驱动框架简介
文章目录1 I2C总线驱动2 I2C设备驱动3 I2C核心在Linux内核中I2C的体系结构分为3个部分:① I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法等。② I2C总线驱动:I2C总线驱动是对I2C硬件体系结构中适配器端的实现,适配器可由CPU控制,甚至可以直接集成在CPU内部。③ I2C设备驱动:I2C设备驱动是对I2C硬件体系结构中设备端的实现,设备一般挂接在受CPU控制的I2C适配器上,通过I2C适配器与CPU交换数据。1 I2C总线驱动I2C总线和platfo原创 2021-01-11 17:57:00 · 134 阅读 · 0 评论 -
i.MX6ULL终结者Linux RTC驱动实验Linux系统下RTC时间设置与查看
文章目录1 查看RTC时间2 设置RTC时间1 查看RTC时间首先当Linux系统启动时我们可以看到系统时钟设备信息,如图 1.1所示: 图 1.1Linux 内核在启动的时候将 snvs_rtc 设置为 rtc0,不同的板子启动信息可能不一样。基本功能是一样的。在Linux系统下查看时间使用“date”命令,如图 1.2所示: 图 1.2上图显示当前时间为1970-01-01 00:06:11,显然时间是不对的,需要重新来设置一下时间。2 设置RTC时间RTC时间设置也是使用“d原创 2021-01-09 11:06:19 · 464 阅读 · 0 评论 -
i.MX6ULL终结者Linux RTC驱动实验i.MX6UL下的RTC驱动
RTC是一个非常普遍的设备,因此一般厂家都会编写好,所以NXP官方已经实现好了,不用我们自己去写了。但是我们要了解RTC驱动是如何实现的,下面就来分析一下。RTC作为一个设备,就需要有设备信息和驱动,先来看一下设备信息是如何在设备树中实现的。打开imx6ull.dtsi文件,找到snvs_rtc设备节点,节点内容如下:1 snvs_rtc: snvs-rtc-lp { 2 compatible = "fsl,sec-v4.0-mon-rtc-lp"; 3 regmap = <&原创 2021-01-08 13:33:08 · 457 阅读 · 0 评论 -
i.MX6ULL终结者Linux RTC驱动实验Linux内核RTC驱动简介
在Linux内核中,RTC设备驱动也是一个标准的字符设备驱动,在应用程序中通过open、close、read、write和ioctl等函数来操作RTC设备。在Linux内核中,RTC设备也有一个自己的设备结构体rtc_device,所以在RTC设备驱动的流程就是rtc_device结构体的申请、初始化,然后将rtc_device结构体注册到内核中。可以看出大多数设备都是这样一个流程,只不过对用的设备结构体和函数不同罢了。rtc_device 结构体定义在 include/linux/rtc.h 文件中,原创 2021-01-08 13:17:30 · 215 阅读 · 0 评论 -
i.MX6ULL终结者Linux LCD驱动实验运行测试
文章目录1 LCD屏幕基本测试2 LCD背光调节1 LCD屏幕基本测试1、编译设备树文件按照前面配置好设备树文件,重新编译设备树文件后,使用新的设备树文件启动开发板。2、使能Linux内核logo显示在Linux内核启动时,可以选择显示小企鹅logo图标,只要内核logo图标显示正常,说明LCD驱动基本正常工作,下面来配置一下内核,选择内核开机显示logo。首先使用“make ARCH=arm menuconfig”命令打开Linux内核图形化配置界面,按照下面的路径找到logo配置选项:De原创 2021-01-07 17:26:20 · 136 阅读 · 0 评论 -
i.MX6ULL终结者Linux LCD驱动实验编写LCD驱动程序
文章目录1 设备树中LCD屏幕GPIO配置2 LCD屏幕参数节点信息3 LCD屏幕背光节点信息i.MX6ULL的eLCDIF 接口驱动程序 NXP 已经编写好了,因此 LCD 驱动部分我们不需要去修改。我们需要做的就是按照所使用的 LCD 来修改设备树。重点要注意三个地方:① LCD 所使用的 IO 配置。② LCD 屏幕节点修改,修改相应的属性值,换成我们所使用的 LCD 屏幕参数。③ LCD 背光节点信息修改,要根据实际所使用的背光 IO 来修改相应的设备节点信息。接下来我们依次来看一下上面这原创 2021-01-07 17:16:24 · 491 阅读 · 0 评论 -
i.MX6ULL终结者Linux LCD驱动实验Linux下LCD驱动简介
文章目录1 framebuffer设备2 LCD驱动解析1 framebuffer设备LCD是Liquid Crystal Display的简称,也就是经常所说的液晶显示器。LCD能够支持彩色图像的显示和视频的播放,是一种非常重要的输出设备。如果我们的系统要用GUI(图形界面接口),这时LCD设备驱动程序就应该编写成frambuffer接口,而不是编写成仅仅操作底层的LCD控制器接口。framebuffer是Linux系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应原创 2021-01-06 09:47:25 · 645 阅读 · 0 评论 -
i.MX6ULL终结者Linux INPUT子系统实验linux自带按键驱动程序
文章目录1 Linux自带按键驱动程序源码2 Linux内核自带按键驱动程序的使用1 Linux自带按键驱动程序源码在Linux内核中也集成了按键的驱动程序,要使用的话,需要在内核中进行配置,按照下面路径找到相应的配置:Device Drivers --->Input device support --->[*] Keyboards ---><*> GPIO Buttons选中“GPIO Buttons”选项,这样驱动程序就会编译进 Linux 内原创 2021-01-06 09:25:00 · 316 阅读 · 0 评论 -
i.MX6ULL终结者Linux INPUT子系统实验运行测试
文章目录1 编译驱动程序2 编译应用测试程序3 运行测试1 编译驱动程序和前面章节中驱动测试程序一样需要一个Makefile文件,只是将obj-m的值改为key_input.o,Makefile文件内容如下:KERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_gaCURRENT_PATH := $(shell pwd)obj-m := key_input.obuild: kernel_moduleskernel_mo原创 2021-01-05 10:17:12 · 162 阅读 · 0 评论 -
i.MX6ULL终结者Linux INPUT子系统实验编写实验程序
文章目录1 编写驱动程序2 应用测试程序在本实验中使用按键KEY0设备。所以设备树节点不用修改,直接使用前面章节创建的key节点即可。1 编写驱动程序本实验例程路径:i.MX6UL终结者光盘资料/06_Linux驱动例程/17_key_input创建key_input.c文件,具体内容如下: 1 #include <linux/types.h> 2 #include <linux/kernel.h> 3 #include <linux/delay.h>原创 2021-01-05 10:05:37 · 98 阅读 · 0 评论 -
i.MX6ULL终结者Linux INPUT子系统实验Input子系统
文章目录1 input子系统简介2 input驱动程序编写流程3 input_event结构体1 input子系统简介input 子系统就是管理输入的子系统,和 pinctrl 和 gpio 子系统一样,都是 Linux 内核针对某一类设备而创建的框架。 input子系统处理输入事务,任何输入设备的驱动程序都可以通过input输入子系统提供的接口注册到内核,利用子系统提供的功能来与用户空间交互。输入设备一般包括键盘,鼠标,触摸屏等,在内核中都是以输入设备出现的。input子系统是分层结构的,总共分为三原创 2021-01-04 11:11:27 · 183 阅读 · 0 评论 -
i.MX6ULL终结者Linux MISC驱动运行测试
文章目录1 编译驱动程序2 编译应用测试程序3 运行测试1 编译驱动程序和前面章节中驱动测试程序一样需要一个Makefile文件,只是将obj-m的值改为beep_misc.o,Makefile文件内容如下:KERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_gaCURRENT_PATH := $(shell pwd)obj-m := beep_misc.obuild: kernel_moduleskernel_mo原创 2021-01-04 11:00:13 · 119 阅读 · 0 评论 -
【北京迅为】i.MX6ULL终结者Linux MISC驱动编写实验程序
文章目录1 修改设备树文件2 编写驱动程序在本实验中,使用misc设备驱动的方式来编写蜂鸣器的驱动,用 platform 来实现总线、设备和驱动,misc 主要负责完成字符设备的创建。1 修改设备树文件设备树中的beep设备节点直接使用36.3.2中创建的beep设备节点即可。2 编写驱动程序本实验例程路径:i.MX6UL终结者光盘资料/06_Linux驱动例程/16_beep_misc创建beep_misc.c文件,具体内容如下: 1 #include <linux/types.h&原创 2020-12-31 10:00:41 · 109 阅读 · 1 评论 -
i.MX6ULL终结者Linux MISC驱动misc设备驱动简介
所有的misc设备驱动的主设备号都为10,不同的设备使用不同的从设备号。当使用misc设备驱动时,misc设备会自动创建cdev,不用像以前一样需要手动创建,因此采用misc设备驱动可以简化字符设备驱动的编写。misc设备用miscdevice结构体表示,具体定义在include/linux/miscdevice.h 中,内容如下:57 struct miscdevice { 58 int minor; /* 子设备号 */ 59 const char *name;原创 2020-12-31 09:54:25 · 104 阅读 · 0 评论 -
i.MX6ULL终结者设备树下的Platform驱动运行测试
文章目录1 编译驱动程序2 编译应用测试程序3 运行测试1 编译驱动程序和前面章节中驱动测试程序一样需要一个Makefile文件,只是将obj-m的值改为led_driver.o,Makefile文件内容如下:KERNELDIR := /home/topeet/kernelCURRENT_PATH := $(shell pwd)obj-m := led_driver.obuild: kernel_moduleskernel_modules: $(MAKE) -C $(KERN原创 2020-12-30 11:53:26 · 98 阅读 · 0 评论 -
i.MX6ULL终结者设备树下的Platform驱动实验程序编写
文章目录1 修改设备树文件2 platform驱动程序3 应用测试程序1 修改设备树文件设备树文件可以直接使用第三十五章中添加的gpioled子节点即可,不用重复添加。2 platform驱动程序本实验例程路径:i.MX6UL终结者光盘资料/06_Linux驱动例程/15_gpioled_dts创建led_driver.c文件,具体内容如下: 1 #include <linux/types.h> 2 #include <linux/kernel.h> 3 #inc原创 2020-12-29 11:10:26 · 67 阅读 · 0 评论 -
i.MX6ULL终结者设备树下的Platform设备
Linux系统中platform平台框架包括总线、设备和驱动,其中总线不用我们去操心,Linux内核中会自动管理,我们只需要关系设备和驱动如何实现。在不支持设备树的内核中,我们需要分别实现 platform_device 和 platform_driver,其中platform_device是在平台文件中实现的。在支持设备树的内核中,我们就不用实现platform_device了,而是在设备树文件中添加设备信息。下面看一下在设备树文件中添加设备信息。在之前关于设备树语法的章节中,我们学习了如何在根节点“/原创 2020-12-29 11:06:59 · 83 阅读 · 0 评论 -
i.MX6ULL终结者Linux内核自带LED灯驱动运行测试
用新的 zImage 和 topeet_emmc_4_3.dtb 启动开发板,启动以后查看 /sys/bus/platform/devices/dtsleds 这个目录是否存在,配置正确如图 1所示: 图 1进入到leds目录下,有如下内容: 图 2在leds目录下有一个red子目录,这个就是在设备树中设备节点下的label属性值。然后测试一下LED等是否可用,首先查看一下系统中有没有“sys/class/leds/red/brightness”这个文件然后输入下列命令打开LED灯:e原创 2020-12-28 09:38:28 · 350 阅读 · 0 评论