自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux应用程序获取驱动数据

Linux应用程序获取驱动数据一、应用程序获取驱动数据的几种方式和他们的关系Linux应用层的程序获取驱动层的数据有几种方式:1、查询 2、阻塞 3、非阻塞 4、异步通知。查询、阻塞、非阻塞都是应用层程序主动去获取驱动层的数据,异步通知是驱动主动告知应用程序。多说一句,为什么应用程序主动去获取驱动程序要分查询、阻塞、非阻塞那么多种,这是多任务系统和驱动数据非实时性的性质决定的,一个应用程序,只是系统运行的其中一个任务,如果驱动程序一直没有数据返回,用查询死等的方式,就会导致这个应用程序的CPU占

2021-01-06 23:55:11 869

原创 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 1612

原创 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 158

原创 Platform驱动代码示例

Platform驱动代码示例基于总线、设备和驱动这样的驱动框架,Linux内核提出来platform这个虚拟总线,相应的也有platform设备和platform驱动。在引入设备树后,platform设备的工作已经由设备树完成,只需要编写platform驱动部分代码。platform驱动的编写在普通驱动编写的基础上加入:增加of_match_table、probe函数、remove函数 声明设备匹配表 之前模块在init和exit完成的工作分别改到probe和remove函数实现 在模

2020-11-26 18:20:16 339

原创 总线、设备、驱动模型和三者的关系

总线、设备、驱动模型和三者的关系Q1:编写linux驱动指写什么?A1:一是指芯片控制器设备的驱动如LCD控制器,IIC控制器等;二是指芯片外接的设备的驱动如24C02、LED灯、按键等。前者一般由芯片厂商的BSP工程师编写,后者一般是应用的嵌入式工程师编写。Q2:嵌入式工程师写的驱动怎么保证最大的可重用性?A2:A2.1怎么做到更换了控制引脚的板子,主控芯片不变的情况下,外设驱动不用改?引脚等资源通过外部引用,不在驱动直接写死。如同样芯片做成的两款板子,主控一样,控制LED灯的一个

2020-11-26 16:33:36 361

原创 字符设备驱动程序框架

字符设备驱动程序框架定义字符设备结构体变量 创建设备号,也可以让内核分配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 646

原创 pinctrl和gpio子系统

pinctrl和gpio子系统1、pincrtl子系统传统配置pin的方式是直接操作寄存器,这种方式比较繁琐和容易出问题,pinctrl子系统就是为了解决这个问题而引入的。pinctrl子系统的主要工作内容如下:●获取设备树中的pin信息●根据获取到的pin信息来设置pin的复用功能●根据获取到的pin信息来设置pin的电气特性,比如上下拉,速度,驱动能力等对于使用者来说,在设备树提供相应的信息就可以了,pinctrl子系统会来完成剩下的工作。使用pinctrl的另外...

2020-11-25 11:58:32 557

原创 设备树概念和使用

设备树概念和使用设备树概念和使用 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 378

原创 基于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 7729 1

原创 Pyqt+PyCharm开发环境搭建

一、开发环境搭建         1、安装python                 2、安装pyqt5         3、设置Pyqt5环境变量                  4、安装QT(里面包含QtDesigner)                 5、安装Pycharm                  6、配置Pycharm                            ...

2018-05-07 09:49:49 296

单片机学习文档

彬太郎51开发板,程序文档,有汇编和C例程

2011-11-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除