驱动学习
文章平均质量分 84
小浩09
这个作者很懒,什么都没留下…
展开
-
基于FFmpeg的视频播放器开发系列教程(二)
对于ffmpeg的架构介绍,请参考24岁“封神”雷霄骅的博客,他已离开江湖,但江湖仍有他的传说。FFmpeg源代码结构图 - 编码:https://blog.csdn.net/leixiaohua1020/article/details/44226355FFmpeg源代码结构图 - 解码:https://blog.csdn.net/leixiaohua1020...原创 2022-12-15 14:41:38 · 745 阅读 · 1 评论 -
FREERTOS 入门
以下为学习freertos的过程知识记录,源自网上学习,谢谢各位网友大神!现总结于此,便于日后温习。FREERTOS 官网: http://www.freertos.org/ freertos BSP开发包下载:http://sourceforge.net/projects/freertos/files/FreeRTOS/ ,这里可以下载最新版本和历史版本。可是找来好半天,再找到的。...转载 2018-08-15 10:17:28 · 3178 阅读 · 0 评论 -
FreeRTOS 手把手移植
FreeRTOS 手把手移植 建议直接从ST官网上下载开发包,然后根据需要将旧版本FreeRTOS 进行升级。这样的话,基本上就是直接替换。非常高效省时。Freertos官网:http://www.freertos.org/ Freertos官网右边栏,点击下载,即为最新版。 下载双击exe,解压后下图中 就是源码了, 在源码文件夹中“..\FreeRTOS...转载 2018-08-15 10:10:14 · 4883 阅读 · 0 评论 -
Makefile教程
1;常规makefile写法:我们就可以很方便地在我们的makefile中以“$(objects)”的方式来使用这个变量了,于是我们的改良版makefile就变成下面这个样子:说明 / 是换行符。缩进是tab 键。objects = main.o kbd.o command.o display.o /insert.o search.o files.o utils.oedit : $(obje...原创 2018-07-25 11:02:41 · 360 阅读 · 0 评论 -
android 电容屏:驱动调试之驱动程序分析篇
以goodix的gt8105为例一、总体架构硬件部分:先看一个总体的图吧,其实触摸屏原理也比较简单,触摸屏和主控芯片间的联系,如下主要有三部分: 1、IIC部分,初始化gt8105的数据和传回主控制的坐标位置信息就是通过IIC这条线传输的;2、INT,当gt8105初触摸时,会发出中断通知主控接收信息(坐标数据);3、gt8105电源、复位这一部分,不同芯片有所不同,可...转载 2018-07-16 17:31:05 · 1956 阅读 · 0 评论 -
android 电容屏:驱动调试之基本概念篇
电容屏驱动调试先了解Linux电容屏驱动中几个常用的概念: 中断下半部-工作队列; input机制; Linux与Android 多点触摸协议。 一、中断下半部-工作队列1、中断 先看一下宋宝华先生的《linux设备驱动开发详解》里面对中断的描述吧。这本书个人感觉...转载 2018-07-16 17:29:50 · 360 阅读 · 0 评论 -
Linux 软件看门狗 watchdog 喂狗
Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog程序。内核 watchdog 模块通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打开 /dev/watchdog 设备(俗称“开门放狗”),就会导致在内核中启动一个1分钟的定时器(系统默认时间),此后,用户空间程序需要...转载 2018-07-16 16:19:58 · 4450 阅读 · 1 评论 -
展讯平台 LCD(Mipi) 加载流程分析
stage1 阶段的详细分析参见 uboot 详细注释讲解 我们从 uboot 的 stage2 开始分析。加载流程分析首先是完成硬件的初始化。 函数调用流程为: u-boot64/arch/arm/board.c: board_init_r() u-boot64/common/stdio.c: stdio_init() u-boot64/common/lcd.c: drv_lcd_init() ...转载 2018-07-02 14:34:59 · 1465 阅读 · 0 评论 -
展讯平台 LCD(Mipi)移植步骤及问题归纳
PortingGuideBacklight背光的硬件设计有两种情况: 1. 内置并联背光 2. 外置串联背光 对于 1 的情况,步骤如下: 1.移植对应的 lcd 驱动。 2.设置u-boot\drivers\video\sprdfb\sprdfb_main.c中的背光为内置: void set_backlight(uint32_t value)函数中,添加white_led = 1; 3. 在 ...转载 2018-07-02 14:33:23 · 2663 阅读 · 1 评论 -
Linux驱动 hrtimer定时器分析
1,相关头文件:#include <linux/hrtimer.h>#include <linux/jiffies.h>#include <linux/timer.h>hrtimer为高分辨率kernel定时器,可以作为超时或周期性定时器使用。相关函数说明:1)hrtimer初始化:void hrtimer_init(struct hrtimer *timer,...原创 2018-05-23 11:43:43 · 1244 阅读 · 0 评论 -
Linux的原子操作分析
原子操作 所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念。 原子操作需要硬件的支持,因此是架构相关的,其API和原子类型的定义都定义在内核源码树的include/asm/atomic.h文件中,它们都使用汇编语言实现,因为C语言并不能实现这样的操作。 原子操作主要用...转载 2018-05-22 15:00:04 · 419 阅读 · 0 评论 -
Linux驱动timer定时器实例分析
1,相关头文件:#include <linux/timer.h>#include <linux/jiffies.h>#include <linux/module.h>2,相关函数介绍:定义定时器结构体变量:static struct timer_list test_timer;初始化内核定时器:init_timer(struct timer_list *tim...原创 2018-05-22 14:27:39 · 2859 阅读 · 0 评论 -
queue_delayed_work和queue_work区别
queue_delayed_work和queue_work一、参考文献:1)http://www.linuxidc.com/Linux/2011-08/41655.htmqueue_delayed_work的使用过程如下:--> 定义workqueue: struct workqueue_struct *test_workqueue; ...转载 2018-05-15 17:06:26 · 8879 阅读 · 0 评论 -
FreeRTOS之源码 及 移植详解
写在前面2018/1/15更新了文章中的部分错误。 FreeRTOS源码为最新版的10.0.1。FreeRTOS 10包含两个重要的新功能:流缓冲区和消息缓冲区。 从10.0.0开始,FreeRTOS的开源协议改为了MIT。源码目录 首先,从官网下载最新版的源码,目前最新版为10.0.1。下载后,解压得到源码,FreeRTOS的源码包中的内容还是相当丰富的。简略目录如下:├─...转载 2018-08-15 10:21:19 · 1493 阅读 · 0 评论 -
Driver Attributes/Device Attributes 及作为linux的一种读写接口的用法(timed_output实例)
(1)Driver Attributes struct driver_attribute { struct attribute attr; ssize_t (*show)(struct device_driver *driver, char *buf); ssize_t (*store)(struct device_driver *, const ch...转载 2018-09-12 15:50:11 · 334 阅读 · 0 评论 -
FFmpeg学习教程
一、FFmpeg库介绍FFmpeg一共包含8个库:avcodec:编解码(最重要的库)。avformat:封装格式处理。avfilter:滤镜特效处理。avdevice:各种设备的输入输出。avutil:工具库(大部分库都需要这个库的支持)。postproc:后加工。swresample:音频采样数据格式转换。swscale:视频像素数据格式转换FFmpeg解码函数简介:...转载 2019-05-08 09:30:33 · 289 阅读 · 0 评论 -
ffmpeg教程
FFMPEG视音频编解码零基础学习方法http://blog.csdn.net/leixiaohua1020/article/details/15811977ffmpeg教程http://blog.csdn.net/cffishappy/article/details/7352898FFMPEG-数据结构解释(AVCodecContext,AVStream,AVForm...转载 2019-05-08 09:28:45 · 121 阅读 · 0 评论 -
ffmpeg--编译ffmpeg-4.0的源码
1.首先要有个GNU的环境。如果在Windows系统下,就要弄一个虚拟环境,安装一个Cygwin。如果是Linux环境,那么Linux中是有GNU的。2.下载ffmpeg的源码,不用爬梯,直接官网可以下载:http://www.ffmpeg.org/download.html下载NDK,在Google官网下载,不用爬梯:https://developer.android.google...转载 2019-04-28 10:33:40 · 395 阅读 · 0 评论 -
音视频开发之入门篇
1. 成长的烦恼经常收到一些网友的来信或者留言,反馈如下这样的困惑:“我是一名应届毕业生,该如何快速地成长起来”“我只懂 C/C++,是学 Android 开发有前途,还是 iOS 开发有前途?”“我是一名 Android/iOS 开发,已经可以独立完成一个完整的 App 开发上线,该如何继续提升?”“我想从事音视频开发,该如何入门? 如何进阶 ?”很高兴看到大家有这样...转载 2019-03-13 10:42:39 · 660 阅读 · 0 评论 -
关于Linux的视频编程(v4l2编程)
一.什么是video4linuxVideo4linux2(简称V4L2),是linux中关于视频设备的内核驱动。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video0下。二、一般操作流程(视频设备):1.打开设备文件。int fd=open(”/dev/video0″,O_RDWR);2.取得设备的capability,看看设备具有什...转载 2019-03-13 10:09:08 · 454 阅读 · 0 评论 -
嵌入式程序员必须知道的16个问题(C语言方面)
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息.此外,撇开面试的压力不谈,这种测试也是相当有趣的。从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这个愚蠢的 问题吗?如要你答出某...转载 2019-03-13 10:01:19 · 362 阅读 · 0 评论 -
SDL开发教程
SDL开发库:http://www.libsdl.org/SDL中文开发教程:http://tjumyk.github.io/sdl-tutorial-cn/index.htmlSDL英文版开发教程:http://www.lazyfoo.net/SDL_tutorials/附:以上教程均可在Eclipse中做开发,只不过在开始之前需要安装SDL库的支持,Project引用SDL配...转载 2019-03-21 15:17:15 · 446 阅读 · 0 评论 -
零基础学习视频解码之解码图像
本文全部是在Ubuntu 14.04下使用Eclipse开发,本文假定你Eclipse已经安装好了CDT,以及安装好了FFmpeg和SDL。 解码流程详见上一篇博客[原]零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构。 如何安裝FFmpeg详见上一篇博客:[原]零基础学习视频解码之安装ffmpeg 下图是解码流程图(全图): 本文详解如何在Eclip...转载 2019-03-21 10:35:25 · 433 阅读 · 0 评论 -
零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构
在正式开始解码练习前先了解下关于FFmpeg中比较重要的函数以及数据结构。1.数据结构:(1)AVFormatContext AVFormatContext是一个贯穿始终的数据结构,很多函数都要用到它作为参数。FFmpeg代码中对这个数据结构的注释是:formatI/Ocontext此结构包含了一个视频流的格式内容。其中存有了AVInputFormat(orAVOut...转载 2019-03-21 10:33:32 · 168 阅读 · 0 评论 -
零基础学习视频解码之安装ffmpeg
注:本系列文章的开发环境:Ubuntu 14.04+Eclipse4.3.2+CDT+FFmpeg2.3+SDL1.25[原]零基础学习视频解码之安装ffmpeg[原]零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构[原]零基础学习视频解码之解码图像[原]SDL开发教程[原]零基础学习视频解码之解码声音[原]零基础学习视频解码之视频线程[原]零基础...转载 2019-03-21 10:32:47 · 208 阅读 · 0 评论 -
展讯SC9820E驱动配置之camera配置
展讯智能机android平台sc8920e添加新摄像头驱动主要改4个方面.1.添加驱动文件摄像头驱动主要在目录: vendor/sprd/modules/libcamera/sensor下添加及改动.比如现在添加的是bf20a1f驱动:一般是在sensor/sensor_drv/classic/下添加:2.修改配置文件文件:vendor/sprd/modules/libca...转载 2019-03-20 11:15:53 · 2542 阅读 · 1 评论 -
android串口通信——电子扫描枪
android串口通信——电子扫描枪 我们这里开始介绍电子扫描枪(串口的),在开发中我们可能用到电子扫描枪这么一个玩意。比如,我们在做一个可以说扫描条码的app的时候,就会用到,这种情况一般都是运行在终端上,往往不是我们手机上,那么我们来看看扫描枪这个玩意吧。串口的调用我们是基于android-serialport-api的,如有疑问,请看 android串口通信——android-serial...转载 2018-10-12 10:29:10 · 1455 阅读 · 0 评论 -
linux设备驱动之工作队列学习(workqueue)
首先要注意本文的两个概念:(1)使用内核提供的工作队列, (2)自己创建工作队列http://blog.csdn.net/fontlose/article/details/8286445 工作队列是一种将工作推后执行的形式,交由一个内核线程去执行在进程上下文执行,其不能访问用户空间。最重要特点的就是工作队列允许重新调度甚至是睡眠。工作队列子系统提供了一个默认的工作者线程来处理这些工作。默认的工作...转载 2018-05-15 17:04:08 · 441 阅读 · 0 评论 -
Tasklet机制
一、tasklet使用Tasklet的使用比较简单,只需要定义tasklet及其处理函数并将两者关联例子:Void my_tasklet_func(unsigned long)DECLARE_TASKLET(my_tasklet,my_tasklet_func,data)代码DECLARE_TASKLET实现了定义名称name为my_tasklet的tasklet并将其与my_tasklet_fu...原创 2018-05-14 16:57:52 · 673 阅读 · 0 评论 -
workqueue的使用
Workqueue编程接口序号接口函数说明: 1、 create_workqueue用于创建一个workqueue队列,为系统中的每个CPU都创建一个内核线程。输入参数:@name:workqueue的名称2、 create__singlethread_workqueue用于创建workqueue,只创建一个内核线程。 输入参数:@name:workqueue名称3、 destroy_workqu...原创 2018-05-19 15:44:30 · 902 阅读 · 0 评论 -
中断的上下半部
以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。因为输入类设备的输入都是异步事件,因此一般使用中断来处理和响应。1、中断处理的注意点中断处理程序处于中断上下文中,不能和用户空间数据交互(不能使用copy_to(from)_usr函数);中断处理程序不能交出CPU(不能休眠、不能schedule);ISR运行时间尽可能短,越长则系统响应特性越差。2、中断下半部2种解决方案当中断处...转载 2018-04-27 10:53:42 · 174 阅读 · 0 评论 -
Linux总线设备驱动框架的理解
以下内容源于微信公众号:嵌入式企鹅圈。有格式内容上的修改,如有侵权,请告知删除。Linux的设备驱动框架,即某类设备对应的驱动的框架。这里是“Linux总线设备驱动框架”,应该这样理解,(Linux的总线设备)驱动框架,即总线式设备对应的驱动的框架。(个人理解)1、总线总线代表着同类设备需要共同遵守的工作时序,不同的总线对于物理电平的要求是不一样的,对于每个比特的电平维持宽度也是不一样,而总线上传...转载 2018-04-27 10:52:47 · 385 阅读 · 0 评论 -
Linux字符设备驱动剖析
以下内容转载于博客http://blog.csdn.net/yueqian_scut/article/details/45938557。有删改和格式调整,如有侵权,请告知删除 。一、应用层的程序很简单,open设备文件,read、write、ioctl,最后close退出。[cpp] view plain copyint main(int argc ,char *argv[]) { un...转载 2018-04-27 10:51:54 · 100 阅读 · 0 评论 -
Linux 设备文件的创建和mdev
内容转载于http://blog.csdn.net/yueqian_scut/article/details/46771595。有格式的调整和内容的删改,如有侵权,请告知删除 。本文将从代码级去理解Linux设备类和设备文件的创建过程。一、设备类相关知识设备类是虚拟的,并没有直接对应的物理实物,只是为了更好地管理同一类设备导出到用户空间而产生的目录和文件。整个过程涉及到sysfs文件系统,该文件系...转载 2018-04-27 09:51:16 · 196 阅读 · 0 评论 -
platform_device和platform_driver的注册过程,及probe函数何时调用的分析
转载于http://blog.chinaunix.net/uid-7828352-id-3833188.html参考资料:http://blog.csdn.net/xiafeng1113/article/details/8030248参考资料:http://www.linuxidc.com/Linux/2017-08/146261.htm参考资料:https://www.cnblogs.com/d...转载 2018-04-27 09:46:52 · 700 阅读 · 0 评论 -
workqueue中断实例
static struct work_struct cvbs_det_eint_work;static struct workqueue_struct *cvbs_det_eint_workqueue=NULL;static irqreturn_t cvbs_det_eint_func(void){queue_work(cvbs_det_eint_workqueue,&cvbs_det_e...原创 2018-05-17 16:37:10 · 278 阅读 · 0 评论 -
Linux用dd命令制作一个100m的文件和一个100m的.img
1,文件dd if=/dev/zero of=/file bs=1024 count=102400或者dd if=/dev/zero of=/file bs=1M count=1002, .imgdd if=/dev/zero of=fd.img bs=1024 count=102400在linux下使用dd命令制作可启动img镜像,制作完成后初始化,如果想要修改img内容,可以将img镜像挂在到...原创 2018-05-02 11:37:10 · 7635 阅读 · 0 评论 -
制作根文件系统时的错误解决
2017年11月09日 19:27:31阅读数:1221、不能打开/etc/sysconfig/HOSTNAME文件错误解决方法,创建root/rootfs/etc/sysconfig/HOSTNAME文件,然后在里面敲入文本xjh后保存。http://blog.csdn.net/oqqhutu12345678/article/details/72246299二7处有说明。2、单引号缘故。由于是根...转载 2018-05-02 11:12:11 · 192 阅读 · 0 评论 -
嵌入式Linux中的根文件系统
以下内容转载于http://mp.weixin.qq.com/s/O6MklgKekSc9gbM7zQSMEQ,有删改。一、首先要明白的是“什么是文件系统?”,文件系统是对一个存储设备上的数据和元数据进行组织的机制。这种机制有利于用户和操作系统的交互。在一篇oracle的技术文章中看到这样一句话“尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具。这对Linux来说尤其如...转载 2018-05-02 11:11:29 · 1403 阅读 · 0 评论 -
使用BusyBox制作根文件系统的操作步骤
参考博客http://www.cnblogs.com/Charles-Zhang-Blog/p/3419301.html一、构建根文件系统该有的目录即在/rootfs/目录下创建该有的空目录;一般有dev/ etc/ lib/ usr/ var/ proc/ tmp/ home/ root/ mnt/ bin/ sbin/ sys/ ;/bin /s...转载 2018-05-02 11:10:48 · 2207 阅读 · 0 评论