- 博客(10)
- 资源 (1)
- 收藏
- 关注
原创 linux应用程序获取驱动数据
Linux应用程序获取驱动数据一、应用程序获取驱动数据的几种方式和他们的关系Linux应用层的程序获取驱动层的数据有几种方式:1、查询 2、阻塞 3、非阻塞 4、异步通知。查询、阻塞、非阻塞都是应用层程序主动去获取驱动层的数据,异步通知是驱动主动告知应用程序。多说一句,为什么应用程序主动去获取驱动程序要分查询、阻塞、非阻塞那么多种,这是多任务系统和驱动数据非实时性的性质决定的,一个应用程序,只是系统运行的其中一个任务,如果驱动程序一直没有数据返回,用查询死等的方式,就会导致这个应用程序的CPU占
2021-01-06 23:55:11 975
原创 linux的定时器和中断
一、定时器Linux的时钟节拍率可以在配置的时候设置,默认为100,单位是HZ。系统里面定义了HZ的宏为100,即一个时钟节拍为10ms。同时系统定义了jiffies来记录系统启动以来的系统节拍数。系统初始化的时候会初始化为0。即jiffies/HZ就是运行时间,单位为S。jiffies和ms、us、ns之间的转换函数: 函数 描述 int jiffies_to_msecs(const unsigned long j) ...
2020-12-15 11:04:27 1771
原创 linux并发竞争处理机制
一、原子操作(对整形变量或者位保护)用到的函数: 函数 描述 ATOMIC_INIT(int i) 定义原子变量的时候对其初始化。 int atomic_read(atomic_t *v) 读取v的值,并且返回。 void atomic_set(atomic_t *v, int i) 向v写入i值。 void atom
2020-11-27 16:19:50 183
原创 Platform驱动代码示例
Platform驱动代码示例基于总线、设备和驱动这样的驱动框架,Linux内核提出来platform这个虚拟总线,相应的也有platform设备和platform驱动。在引入设备树后,platform设备的工作已经由设备树完成,只需要编写platform驱动部分代码。platform驱动的编写在普通驱动编写的基础上加入:增加of_match_table、probe函数、remove函数 声明设备匹配表 之前模块在init和exit完成的工作分别改到probe和remove函数实现 在模
2020-11-26 18:20:16 413
原创 总线、设备、驱动模型和三者的关系
总线、设备、驱动模型和三者的关系Q1:编写linux驱动指写什么?A1:一是指芯片控制器设备的驱动如LCD控制器,IIC控制器等;二是指芯片外接的设备的驱动如24C02、LED灯、按键等。前者一般由芯片厂商的BSP工程师编写,后者一般是应用的嵌入式工程师编写。Q2:嵌入式工程师写的驱动怎么保证最大的可重用性?A2:A2.1怎么做到更换了控制引脚的板子,主控芯片不变的情况下,外设驱动不用改?引脚等资源通过外部引用,不在驱动直接写死。如同样芯片做成的两款板子,主控一样,控制LED灯的一个
2020-11-26 16:33:36 392
原创 字符设备驱动程序框架
字符设备驱动程序框架定义字符设备结构体变量 创建设备号,也可以让内核分配alloc_chrdev_region 定义自己的file_operations结构体 实现对应的drv_open/drv_read/drv_write等函数,填入file_operations结构体 初始化cdev把file_operations结构体告诉内核 添加注册cdev 创建类 创建设备 提供入口函数 提供出口函数用到的函数说明: 自动分配设备号并注册: int alloc
2020-11-25 17:46:05 683
原创 pinctrl和gpio子系统
pinctrl和gpio子系统1、pincrtl子系统传统配置pin的方式是直接操作寄存器,这种方式比较繁琐和容易出问题,pinctrl子系统就是为了解决这个问题而引入的。pinctrl子系统的主要工作内容如下:●获取设备树中的pin信息●根据获取到的pin信息来设置pin的复用功能●根据获取到的pin信息来设置pin的电气特性,比如上下拉,速度,驱动能力等对于使用者来说,在设备树提供相应的信息就可以了,pinctrl子系统会来完成剩下的工作。使用pinctrl的另外...
2020-11-25 11:58:32 619
原创 设备树概念和使用
设备树概念和使用设备树概念和使用 1、在linux源代码目录下用make dtbs生成 2、设备树详细语法规格参考: 《Device tree Specification V0.2.pdf》 《Power_ePAPR_APPROVED_v1.12.pdf》 3、源文件dts(板级) 包含文件dtsi(SOC级) 4、设备节点 节点由一堆的属性组成根节点 : /节点名字:label: node-name@unit-address...
2020-11-25 11:33:15 415
原创 基于Qt Designer和pyuic开发UI界面的方法
1、 打开Qt Designer选择一个模板2、按照以下步骤建立窗体界面(下面步骤从《Python Qt GUI快速编程》的7.1节摘录) 3、 从Qt Designer生成的xxx.ui文件生成Python代码 cmd中打开xxx.ui所在路径例如:cd C:/work 然后输入pyuic5 -o xxx.py xxx.ui 回车.其中,-o 后的参数为输出文件的名称 -o 后第二个...
2018-05-15 14:47:24 7802 1
原创 Pyqt+PyCharm开发环境搭建
一、开发环境搭建 1、安装python 2、安装pyqt5 3、设置Pyqt5环境变量 4、安装QT(里面包含QtDesigner) 5、安装Pycharm 6、配置Pycharm ...
2018-05-07 09:49:49 323
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人