linux内核驱动
文章平均质量分 80
沐白001
c,c++,c#,java 全职菜鸟
展开
-
等待队列 wait_queue
等待队列原创 2022-06-17 13:43:03 · 594 阅读 · 0 评论 -
工作队列 work_queue
工作队列原创 2022-06-17 13:13:03 · 1317 阅读 · 0 评论 -
Linux 下V4l2摄像头采集图片,实现yuyv转RGB,RGB转BMP,RGB伸缩,jpeglib 库实现压缩RGB到内存中,JPEG经UDP发送功
最近自己所在小组做了一个智能家居系统,本人主要负责摄像头图像采集部分,需要完成的功能是实现摄像头数据采集,而且图片需要在LCD上显示,需要经过网络远程发送,自己小白一个,做之前什么都不懂,经历各种查资料请教过后总算出效果了,感触颇深。这期间CSDN上各位大神的各种博客对自己帮助很大,在此一并谢过!!!!!同时也发现很多博客都只包含一个小部分,感觉如果有一个篇完整的介绍可能对新手会有帮助,因此在此简单介绍摄像头采集整个流程。第一次发博客,恳请各位大神多多指教,如有不妥之处,还请见谅。 废话少说,直接..原创 2020-12-21 12:00:43 · 1747 阅读 · 0 评论 -
Linux 平台设备 获取设备树源文件(DTS)里的资源
在linux使用platform_driver_register() 注册 platform_driver 时, 需要在 platform_driver 的probe() 里面知道设备的中断号, 内存地址等资源。这些资源的描述信息存放在 resource 数据结构中, 相同的资源存放在一个树形树形数据结构中, 通过父节点,兄弟节点, 子节点相连。比如中断资源, IO端口资源, IO内存资源, DMA资源有不同资源树。Linux使用 struct resource 来描述一个resouc...原创 2020-12-09 15:13:34 · 1468 阅读 · 0 评论 -
工作队列(workqueue)
项目需要,在驱动模块里用内核计时器timer_list实现了一个状态机。郁闷的是,运行时总报错“Scheduling while atomic”,网上搜了一下:"Scheduling while atomic" indicates that you've tried to sleep somewhere that you shouldn't - like within a spinlo转载 2017-06-13 10:05:45 · 790 阅读 · 0 评论 -
什么是workqueue?
Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程, Workqueue机制的实现Workqueue机制中定义了两个重要的数据结构,分析如下:转载 2017-06-13 09:55:45 · 1097 阅读 · 0 评论 -
Ft5x06_ts驱动程序的重写
我们分析内核源码可知,Ft5x06_ts触摸屏驱动程序涉及如下内容:1. Linux下I2C驱动框架2. Linux下中断系统3. Linux下workqueue机制4. Linux下输入子系统5. 中断初始化、I2C控制器相关初始化。在arch/arm/mach-exynos/mach-smdk4x12.c中的s3c_i2c1_set_pla转载 2017-04-21 10:24:34 · 1160 阅读 · 0 评论 -
Linux I2C(一)之常用的几种实例化(i2c_client ),i2ci2c_client
前言:因为工作是音频驱动,所以经常涉及到I2C、I2S等常用的总线,想将I2C相关的东西总结一下,让自己更加了解I2C。基于:Linux3.10方式一:使用arch/arm/mach-s3c24xx/mach-mini2440.c举例:static struct i2c_board_info mini2440_i2c_devs[] __initdata = {转载 2017-04-19 11:53:58 · 2292 阅读 · 1 评论 -
Linux中的工作队列
工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队列的数据结构发生了一些变化,因此本文分成两个部分对2.6.20之前和之后的版本分别做介绍。转载 2017-04-12 22:11:33 · 211 阅读 · 0 评论 -
交叉编译环境以及开发板上-/bin/sh: ./hello: not found(使用arm-linux-gcc -static -o 来进行静态编译)
目标板是S3C2440.至于交叉编译环境的搭建就不多说了,网上很多教程.搭建好了交叉编译环境后,第一件事就是传说中的”Hello,World!”.一. 主机编译环节我使用的系统是ubuntu10.04,搭建好交叉编译环境后,终端输入arm-linux-gcc -v能够正常显示版本信息,但是输入sudo arm-linux-gcc -v后却显示命令无法找到.我试过很多转载 2017-03-21 22:44:49 · 691 阅读 · 0 评论 -
平台demo
#ifndef __GPIO_BUTTONS_H__ #define __GPIO_BUTTONS_H__struct gpio_button {int code;//按键值char *desc;//描述信息int gpio;//对应的管脚编号 }; #endif #include #include #include #原创 2016-11-28 21:46:47 · 533 阅读 · 0 评论 -
tiny4412 lcd驱动
fbmem.c文件提供了framebuffer驱动程序的通用文件操作接口,自定义的framebuffer驱动程序可以使用fbmem.c中提供默认的接口。用EXPORT_SYMBOL导出到其他文件中应用s3c-fb.c是针对的三星开发板的lcd驱动文件接口(s3c_fb_probe等)。一下都是在友善tiny4412的linux3.5内核中移植lcd平台资源1.需要添转载 2016-12-29 14:52:22 · 1417 阅读 · 1 评论 -
平台设备总线
平台设备总线 bus_type总线 driver/base/platform.cstruct bus_type plarform_bus_type = {.name = "platform",.dev_attrs = platform_dev_attrs,.match = platform_match,.uevent = platform_ueve原创 2016-11-26 12:28:06 · 400 阅读 · 0 评论 -
LCD驱动学习
LCD时序图各时序参数VSYNC 帧同步信号,每发出一个脉冲,表示新的一屏图像数据开始传输HSYNC 行同步信号,每发出一个脉冲,表示新的一行图像数据开始传送VCLK 像素时钟信号,每发出一个脉冲,表示新的一个点图像数据开始传送LEND 行结束信号VBPD 表示在一帧图像开始时,帧同步信号后无效的行数,对应驱动中的upper_marginVFPD 表示在一帧原创 2016-11-24 13:54:56 · 485 阅读 · 0 评论 -
linux内核中断
中断编程1,中断申请int request_irq(unsigned int irq,irq_handler_t,unsigned long irqflags,consr char *name,void *dev_id);irq: 待申请的中断号handler: 待注册的中断处理函数irqflags: 中断标志位name: 中断设备的名称dev_id: 传递给中原创 2016-11-24 13:53:11 · 582 阅读 · 0 评论 -
spi子系统结构
下图是安装成功后,sys目录下的主要结构,由于目录非常复杂仅仅列出了主要的结构sys目录下spi子系统结构 接下来将从各struct开始进行分析,struct是构成内核对象的基础,函数是动态的构建和执行的工具。所以梳理脉络就从结构开始。linux下的设备模型包括几个主要的概念sysfs (dev是用户空间接口,根据sysfs下的class目录由mdev负责建立)bu转载 2016-12-01 15:08:59 · 1040 阅读 · 0 评论