未停丶
这个作者很懒,什么都没留下…
展开
-
UART driver -- 注册
入口函数 - imx_serial_initstatic int __init imx_serial_init(void){ int ret = uart_register_driver(&imx_reg); /* 注册uart drv */ ret = platform_driver_register(&serial_imx_driver); /* 注册平台drv: 处理设备树信息 */ return ret;}static struct uart原创 2021-07-28 11:29:11 · 125 阅读 · 0 评论 -
中断的重要数据结构-笔记
共享中断原创 2021-06-28 19:10:12 · 319 阅读 · 2 评论 -
基于GPIO和pinctrl的LED灯实验
1、修改dts编译dtslw@tc01-MS-7B46:~/imx6ull/100ask_imx6ull-sdk/Linux-4.9.88$ make dtbs CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h CHK include/generated/bounds.h原创 2021-06-23 12:09:25 · 227 阅读 · 1 评论 -
GPIO子系统的重要概念
设备树中指定引脚100ask_imx6ull-14x14.dts文件中leds { compatible = "gpio-leds"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_leds>; led0: cpu { label = "cpu"; gpios = <&gpio5 3 GPIO_ACTIVE_LOW>; // 表示gpio5中的第3个引脚,低电平有效 defau原创 2021-06-16 17:58:51 · 159 阅读 · 0 评论 -
pinctrl-bindings.txt
== Introduction ==Hardware modules that control pin multiplexing or configuration parameterssuch as pull-up/down, tri-state, drive-strength etc are designated as pincontrollers. Each pin controller must be represented as a node in device tree,just lik原创 2021-06-16 16:40:50 · 145 阅读 · 0 评论 -
pinctrl子系统的重要概念
原创 2021-06-16 16:39:41 · 129 阅读 · 0 评论 -
按键驱动程序:02-查询方式读取按键值
分析key1 - GPIO5_1 :未按下时,GPIO5_1(SNVS_TAMPER1)电平是高电平;按下时,电平是低电平。key2 - GPIO4_14:未按下时,GPIO4_14 电平是高电平;按下时,电平是低电平。修改dts文件由于gpio5_1已被设备树的gpio-keys使用,先禁止掉dts文件:Linux-4.9.88\arch\arm\boot\dts\100ask_imx6ull-14x14.dts将编译生成的100ask_imx6ull-14x14.dtb替换开发板中的原创 2021-06-16 11:09:48 · 219 阅读 · 0 评论 -
led设备驱动程序:设备树实现
内核将设备树dts文件转换成 platform_device ,然后与platform_driver匹配,调用probe函数。怎么使用设备树写驱动程序1、设备树compatible属性要与 platform_driver 能匹配2、platform_driver需要啥资源,要由设备树提供3、程序① 设备树100ask_imx6ull-14x14.dts文件中添加:② 相对于总线设备驱动的程序,删除了led_dev.c,且修改了led_drv.c③ 源程序:led_drv.c#.原创 2021-06-11 10:25:45 · 108 阅读 · 2 评论 -
内核对设备树的处理
内核是怎么处理设备树的?从源代码dts文件开始,设备树的处理过程为:1. 将 dts 在 PC 端编译成 dtb 文件;2. uboot 将 dtb 文件给内核,内核将dtb文件的每1个节点都转换成 device_node 结构体;3. 对于某些 device_node 结构体,会被转换为 platform_device 结构体。根节点被保存在全局变量 of_root (struct device_node *of_root; )中,从 of_root 开始可以访问到任意节点。哪些设备树原创 2021-06-10 15:22:56 · 161 阅读 · 0 评论 -
设备树的基础知识及编译和更换设备树
1、Imx6ull对应的设备树文件是:arch/arm/boot/dts/100ask_imx6ull-14x14.dts 会被编译成100ask_imx6ull-14x14.dtb,给开发板使用,对应的开发板目录:/boot/100ask_imx6ull-14x14.dtb。2、 设备树是供内核中的驱动使用的,由bootloader将dts传给内核dts属性介绍#include "imx6ull.dtsi"/ { // 表示.原创 2021-06-09 15:06:25 · 875 阅读 · 0 评论 -
led驱动程序:总线设备驱动模型Platform driver、device实现点亮LED
基于Imx6ull-pro开发板,参考韦东山老师led驱动视频做的笔记led_dev.c#include <linux/module.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/miscdevice.h>#include <linux/kernel.h>#include <linux/major.h>#include <linux/原创 2021-06-08 17:28:46 · 255 阅读 · 0 评论 -
GPIO子系统中的设备树
1、在ti-5708的dtb.dts.tmp中对于各个GPIO组有如下描述gpio1: gpio@4ae10000 { compatible = "ti,omap4-gpio"; reg = <0x4ae10000 0x200>; interrupts = <0 24 4>; ti,hwmods = "gpio1"; gpio-controller; #gpio-cells = <2>; interrupt-controller原创 2021-05-29 11:30:55 · 731 阅读 · 0 评论 -
栈空间在进程调度时的处理过程
图是韦东山老师的驱动视频中摘下的。1、CPU在执行进程A的程序a=a+b时的操作2、CPU在执行该4个指令期间,如果中途被调度出去执行进程B,先要保护现场保护现场:CPU在切换出去瞬间将寄存器信息保存在进程栈里面;再去执行进程b的程序,等进程b被调度后再去执行进程a...原创 2021-05-31 15:15:44 · 156 阅读 · 0 评论 -
按键驱动程序:01-APP读取按键值的4种方式
APP读取按键值的4种方式:1、查询方式2、休眠-唤醒方式3、poll方式4、异步通知方式这 4 种方法没有优劣之分,在不同的场合使用不同的方法。1、查询方式时不时进房间看一下。简单,但是累2、休眠-唤醒方式进去房间陪小孩一起睡觉,小孩醒了会吵醒她。不累,但是妈妈干不了活了3、poll方式妈妈要干很多活,但是可以陪小孩睡一会,定个闹钟。要浪费点时间,但是可以继续干活。妈妈要么是被小孩吵醒,要么是被闹钟吵醒。和select函数类似,不占用CPU资源。3秒超时时间到,fd没有更新,原创 2021-06-02 11:29:42 · 330 阅读 · 0 评论