Stm32mp157A-DK1评估Linux LED驱动
文章平均质量分 86
寒门过河卒
12年入坑51,14年入坑LPC,16年入坑STM32,18年开始跑UCOS轻量级操作系统,20年入坑ITOP4412,今年开始mp1。三本差生,单兵作战,求指点,求解惑,求大神带。
展开
-
Stm32mp157A-DK1评估Linux LED驱动-7 linux自带led驱动
Stm32mp157A-DK1评估Linux LED驱动-7 linux自带led驱动Linux驱动编写,以led灯为例,有七种写法:字符设备、新字符设备、设备树、gpio子系统、platform设备、设备树platform设备、linux自带led驱动其实linux的内核中自带多种驱动,通过platform来驱动各种外设,使用的时候只需要修改stm32mp15-pinctrl.dtsi和stm32mp157a-dk1.dts两个文件就可以了。首先得片选Linux自带的led驱动,打开图形配置界面:.原创 2021-07-29 17:22:24 · 174 阅读 · 0 评论 -
Stm32mp157A-DK1评估Linux LED驱动-6设备树platform设备
之前编辑了一个platform设备,我们需要写一个设备程序,之前使用设备树发现设备程序中的内容我们都可以用设备树来实现,因此我们可以通过platform总线驱动设备树中的硬件设备,这样我们就可以只写一个驱动程序就可以了。使用platform总线和设备树中的节点之间有一个pinctrl节点来关联,这里需要改动的文件有两个:stm32mp15-pinctrl.dtsi和stm32mp157a-dk1.dts两个。stm32mp15-pinctrl.dtsi中添加pinctrl节点:led_pins_xhy原创 2021-07-29 17:20:42 · 267 阅读 · 0 评论 -
Stm32mp157A-DK1评估Linux LED驱动-5 platform设备
之前的程序说到底只是对字符设备的一种简化写法,使用设备树进行寄存器的地址定义然后使用gpio子系统对寄存器进行设置。但是这些程序都是直接写了一个驱动对Linux进行操作,在实际的工程应用中这种做法的风险很大,如果有多个应用程序希望对同一个设备进行操作,此时会发生两种可能,一种是误操作,一种时堵塞。在实际应用中会有一个中间层负责调度,从而解决这个问题。接下来我们要做的就是把新字符设备的驱动例程拆分为两部分:驱动程序、设备程序中间通过platform接口进行链接。新建文件leddevice.c,用于原创 2021-07-29 17:16:40 · 217 阅读 · 0 评论 -
Stm32mp157A-DK1评估Linux LED驱动-4 gpio子系统
我们之前的程序都是对需要的gpio寄存器地址进行映射,从而实现对gpio口的配置,在Linux内核中可以调用某些API接口实现对gpio口的设置,这就是gpio子系统。可以将设备树下的led节点改为:stm32mp1_led { compatible= "stm32mp1-led"; status= "okay"; reg= <0X50000A28 0X04 /* RCC_MP_AHB4ENSETR */ ...原创 2021-07-29 17:14:11 · 251 阅读 · 0 评论 -
Stm32mp157A-DK1评估Linux LED驱动-3设备树
设备树就是DTS文件其内容是用于描述开发板的硬件信息,在之前编译Linux内核的时候生成的stm32mp157a-dk1.dtb就是Stm32mp157A-DK1板子的设备树,在mylinux/arch/arm/boot/dts中搜索可以看到有stm32mp157a-dk1.dtb和stm32mp157a-dk1.dts两个文件,其中stm32mp157a-dk1.dts为源代码,stm32mp157a-dk1.dtb为编译文件。打开stm32mp157a-dk1.dts可以看到里面只有..原创 2021-07-29 17:11:42 · 323 阅读 · 0 评论 -
Stm32mp157A-DK1评估Linux LED驱动-2新字符设备
由上一篇中的字符设备可知我们需要定义设备号,设备号分为主设备号和次设备号,比如上篇中定义的主设备号为200,次设备号为:0。其中主设备号和次设备号必须未被其他设备使用。由ls /dev/ -l可以看到所有的设备号。新字符设备就是想办法实现动态分配设备号,这样既可以简化操作也可以防止设备号冲突。打开led.c,首先把设备号,改为设备个数#define LED_MAJOR 200 改为#define LED_MAJOR 1 // 设备号个数 设备名称改为ne...原创 2021-07-29 17:05:54 · 79 阅读 · 0 评论 -
Stm32mp157A-DK1评估Linux LED驱动-1字符设备
Linux驱动编写,以led灯为例,有七种写法:字符设备、新字符设备、设备树、gpio子系统、platform设备、设备树platform设备、linux自带led驱动。Linux中程序的运行为:应用程序->Linux库->Linux内核->驱动程序->硬件这里需要写的是应用程序和驱动程序。首先明白:Linux万物皆文件再Linux中所有的软硬件必须遵循同一套数据协议,比如要写的led灯,必须作为一个可读写文件存在,类似于单片机开发中的寄存器读写操作,字符设备就是一个一个字原创 2021-07-29 16:42:43 · 248 阅读 · 0 评论