自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只拖鞋

慢跑的蜗牛

  • 博客(48)
  • 资源 (1)
  • 收藏
  • 关注

原创 逻辑开发之LCD

概述本节主要阐述LCD的工作原理、控制器特性及使用方法以掌握LCD驱动的编写工作原理常见LCD主要分为4类:TN(扭曲项列型)、STN(超扭曲项列型)、DSTN(双层超扭曲项列型)、TFT(薄膜晶体管型)。其中TN、STN、DSTN基本原理相同,只是晶体的扭曲角度不同;TFT则完全不同工作原理:http://www.szjunxian.com/Article/yjpztnstnt....

2019-10-09 23:57:17 471

原创 裸机开发-spi

概述本节主要分析spi的工作原理,并以eeprom为例详述其操作机制spi原理spi简介SPI,是Serial Peripheral interface的缩写,即串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同...

2019-09-30 16:11:02 320

原创 MP4文件格式解析

https://www.cnblogs.com/ranson7zop/p/7889272.html文件格式规范-概述MP4文件格式系列

2019-09-09 15:55:14 175

原创 FLV封装格式介绍及解析

flv封装格式FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小、封装简单等特点,非常适合于互联网上使用。目前主流的视频网站基本都支持FLV。采用FLV格式封装的文件后缀为.flv。FLV封装格式是由一个文件头(flie header)和 文件体(file Body)组成。其中,FLV body由一对对的(Previous Tag Size...

2019-09-06 11:17:05 654

原创 MTD子系统剖析

概念MTD:Memory Technology Device即内存技术设备作用: 1.引入MTD层为NOR FLASH和NAND FLASH设备提供统一接口 2.MTD将文件系统与底层FLASH存储器进行了隔离MTD分层图及对应作用:MTD设备通常可分为四层,从上到下依次是:设备节点、MTD设备层、MTD原始设备层、硬件驱动层1.Flas...

2019-09-05 15:41:16 190

原创 驱动模块分析之NANDFLASH

硬件原理:NAND FLASH是一个存储芯片引脚图 主芯片连接引脚 NAND FLASH引脚: 引脚说明: 需求分析思考: 那么:这样的操作很合理“都地址A的数据,把数据B写道地址A”问1.原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地址?答1.在DATA0~DATA7上及传输数据,又传输地址 当ALE为高电平时传输...

2019-09-05 15:36:43 171

原创 framebuffer子系统

概述本系列文章将分析framebuffer的驱动作用(需求)、框架、接口实现和使用。按笔者一直倡导的Linuc学习理念---从软件需求的角度去理解Linux,对于Linux各个子系统,我们首要理解其软件需求,从中自然会清楚其存在的价值和作用;接下来是理解子系统在 Linux整个驱动框架中的层次、角色和如何交换;最后是理解驱动的接口如何实现软件需求,明确接口如何在各场景中使用。Linux设...

2019-09-05 15:15:12 507

原创 平台设备驱动详解

概念:平台总线只是一种设备模型,其管理的设备本质不变,因此应用访问平台总线上的设备通过/dev这个通道也不会发生改变,只是将设备(符合平台总线设备共性)塞入驱动框架的平台总线来管理,相比字符设备而言只是增加了sys目录下的视图关系。本章将以平台设备的添加、驱动的注册为切入点,逐步分析总线、平台总线设备的软件层次、组成框架来展示平台总线设备的详情。应用示例平台备添加设: stat...

2019-09-05 14:48:19 1860 1

原创 字符设备详解

概述本章节以应用开始访问字符设备为切入点,逐步深入分析字符设备的软件层次、组成框架和交互、如何编写字符设备驱动、设备文件的创建和mdev原理,并对相关接口及涉及到的结构体做一个简要介绍,展示字符设备驱动的全面详情应用示例int main(void) { char buf[10] = {0,}; int fd = open("/dev/led",O_RDWR); ...

2019-09-05 13:33:28 1566

原创 设备驱动模型与sysfs之间的关系

概述本节将对比分析字符设备驱动、平台设备驱动、设备驱动模型、sysfs文件系统,以此揭露之间的关系设备驱动linux设备驱动分为三种,字符设备驱动、块设备驱动、网络设备驱动字符设备驱动:只能按字节流先后顺序访问设备内存,不能随机访问(示例:鼠标、触摸屏、LCD等) 块设备驱动:可以随机访问设备内存的任意地址(示例:硬盘、SD卡、NAND FLASH等) 网络设备驱动:示例:网卡...

2019-09-04 16:20:36 645 1

原创 linux VFS文件系统(二)

概述本节将从VFS文件系统的挂载、打开并操作本地文件来详述其具体实现和机制VFS作用VFS只是一个基于软件的适配层,作用如下:提供文件系统的管理集,即文件系统注册管理列表缓存 提供文件的管理策略,即inode、dentry管理列表缓存、对缓存的管理以便高效、实时定位文件 提供文件系统的抽象管理集,用于重定向文件操作至具体文件系统下对应的操作文件系统的挂载操作分属具体文件系...

2019-09-03 14:04:02 487

原创 linux VFS文件系统(一)

概述本节重在讨论VFS文件系统的设计目标、涉及结构体的相关联系视图。unix标准文件类型有5种:普通文件、目录文件、符号链接文件、设备文件、管道文件,本节集中讨论前3者,后2者将另外分析。VFS的作用Linux宗旨是一切皆“文件”,广义的讲,凡是可以产生或者消耗信息的都是文件。文件系统是指操作系统用来管理文件以及对文件进行操作的机制和实现。将各文件按照上述分类即形成了不同的文件系统,为...

2019-09-01 17:04:16 263

原创 linux内核框架

概述本节将介绍linux操作系统的分层模型,并简述各层的作用,以便后续分析子模块时搭建一个整体的视图Linux操作系统分层视图内核作用:对下管理所有的硬件 对上提供系统调用接口以供应用访问(shell、库函数调用的本质依然是系统调用)内核切分为5大子系统以满足上述需求Process Scheduler(进程管理子系统):合理分配CPU资源,让各进程以合理的方式...

2019-09-01 17:03:00 498

原创 printf简介

概述本章节通过示例阐述printf分级控制打印实现细节注意事项必要的地方加: 日志输出是有代价的,特别是针对嵌入式这类实时性要求较高的系统 需要有宏开关,调试版本打开,发布版本关闭 需要有级别控制,便于调试输出 使用宏替换printf、printk,以便修改宏即可修改所有地方 针对各个模块可以单独控制 打印内容意义清晰,便于排查问题具体实现公共头文件定义宏开关...

2019-09-01 16:06:45 222

原创 linux之UART

概述linux下设备分几种:    1.协议类:UART,I2C,SPI,NAND,LCD    2.类似内存的接口:NOR,SDRAM,网卡    针对协议类设备,那么需要满足2个要求:    1.双方约定信号的协议    2.双方满足时序的要求一.UART原理简介        通用异步收发器简称UART,即Universal Asynchronous Receiver/Transmitter...

2018-04-08 14:53:08 1040

原创 linux之文件系统

概述:    1.应用层访问具体文件的层次图    2.    3.    4.    5.    6.一.应用层访问具体文件的层次图结构图:文件与文件系统的关系:    从上图中我们看出,文件首先分类,归属于不同的文件系统文件与进程之间的关系:    进程与文件的连接,即"已打开文件"是进程的私有财产,归具体进程所有,那么这种连接的file结构必然与进程的task_struct结构存在着联系st...

2018-03-29 15:28:33 160

原创 linux字符设备驱动

一. 概述本章节以应用开始访问字符设备为切入点,逐步深入分析字符设备的软件层次、组成框架和交互、如何编写字符设备驱动、设备文件的创建和mdev原理,并对相关接口及涉及到的结构体做一个简要介绍,展示字符设备驱动的全面详情二.应用示例int main(void) { char buf[10] = {0,}; int fd = open("/dev/led",O_RDWR...

2018-03-15 15:28:03 202

原创 linux设备树及设备添加

要点:    1.设备树概念:http://blog.csdn.net/smcdef/article/details/77387975    2.传统方式添加设备            方式:arm/mach/mach-s3c2410/mach-s3c2440.c                        在代码里面添加设备描述符并有machine-init时调用添加             ...

2018-03-13 17:40:58 2964

原创 Linux I2C总线详解

概述:    1.I2C概念    2.I2C硬件结构图    3.I2C总线初始化    4.I2C控制器device 节点添加及driver注册    5.I2C设备节点添加及driver注册    5.adapter设备及驱动添加要点及绑定过程    6.client设备及驱动添加要点及绑定过程    7.设备是如何使用I2C通讯的一.I2C概念:  I2C是philips提出的外设总线. ...

2018-03-12 09:13:51 18015 4

原创 linux设备加载分析

要点:1.设备注册2.设备驱动注册3.设备与驱动如何绑定4.驱动如何初始化设备资源当内核版本:linux 4.6.3以led为例(leds-sunfire.c)在设备树中创建led设备节点,在内核初始化时将所有节点创建出来(内核采用先创建节点,后初始化对应驱动,有设备无驱动则设备不工作,无设备则驱动初始化不起来)当前篇幅我们只分析驱动的加载:一.内核调用sunfire_leds_init流程:在编...

2018-03-08 17:14:02 468

原创 linux设备树的识别加载

主要内容:1.设备树文件编译2.设备树文件加载3.设备树文件解析4.设备树上的节点如何与驱动绑定(device与driver如何调用probe)5.如挂在I2C上,则中间I2C如何插入,两者之间如何与I2C交互参考:https://wenku.baidu.com/view/0a71422cb307e87101f696bf.htmlhttp://blog.csdn.net/gzzaigcnforev...

2018-03-08 16:19:22 1503

原创 linux驱动说开去(七)--驱动模块之应用层访问-mknod

概述:    linux下一切皆文件,设备文件也不例外,作为文件系统中代表设备的特殊文件,和普通文件相比不需要存放数据的记录块与之联系,原因在于设备文件的目的不在于存储和读取数据而只在于为应用程序提供一条通向具体设备的访问通道,是应用程序可以和具体的设备建立连接.    基于此,我们查看内核系统调用针对两者的区别:asmlinkage long sys_open(const char * file...

2018-02-28 09:57:43 201

原创 linux驱动说开去(六)--驱动模块函数与内核符号表的连接

http://blog.csdn.net/trochiluses/article/details/9446955

2018-02-27 15:22:42 157

原创 linux驱动说开去(五)--驱动模块的加载-insmod

概述:    linux采用整体时的内核结构,一般不支持动态增加新功能,为此linux提供了一套叫做模块的全新机制,可以根据需要在不重新编译连接内核的情况下将新的安装模块动态的插入/移除运行态的内核,使得内核映像保持最小化,从而达到灵活性及扩展性.    模块化并不仅局限于驱动模块同时也支持文件系统,但常见与驱动或与驱动紧密联系的模块,内核提供了4个系统调用以支持动态安装卸载:create_mod...

2018-02-23 23:35:48 463

原创 linux驱动说开去(四)--程序执行

概述:我们查阅大量资料试图寻找程序被执行过程的说明,发现基本上围绕着预处理、编译、汇编、链接(分别使用预处理器、编译器、汇编器、链接器,这四个程序构成了编译系统)四个步骤,将其翻译成可执行目标程序hello这样一个过程,究竟hello可执行程序是如何被运行的我们依旧是一头雾水,究其原因上述只是一个浅显的概念,那从操作系统层面来讲具体又是如何实现的呢?接下来我们将给出答案.预处理、编译、汇编、链接流...

2018-02-23 11:19:22 167

原创 linux驱动说开去(三)--模块的编译

在linux驱动开发(一)--示例中我们将hello模块编译为hello.ko是直接采用Makefile来编译,那么如何修改为linux内核统一的风格呢,接下来将做相关介绍关键点:    1.在menuconfig中添加子项目(Kconfig)    2.在Makefile中添加子项目的编译(Makefile)一.menuconfig菜单添加子项目    Kconfig背景知识:Kconfig总结...

2018-02-22 18:06:03 331

原创 linux驱动说开去(二)--模块安装、调试

关键点:    1.常用安装卸载命令    2.安装卸载涉及的常用符号:    3.常用调试手段一.安装卸载命令    1.lsmod        命令格式:lsmodshell@sc2410_box:/ $ lsmodvcodec_service 33766 0 - Live 0x00000000    2.insmod       命令格式:insmod hello.ko    shell...

2018-02-22 13:57:27 241

原创 linux驱动说开去(一)--模块示例

本系列将以一个简单的驱动开发例子扩展讲述驱动开发各要点一、基础知识Linux 设备打开依次跨越层次:应用程序->系统调用接口->VFS层->当前设备文件系统(如字符设备)->驱动->硬件Linux设备驱动分为:字符设备、块设备和网络设备。原理图如下:  二、代码实现2.1.1驱动层代码实现创建目录/home/workplace/sc2410_android/kernel/drivers/leon_...

2018-02-22 12:41:04 321

转载 arm 设备树的初始化

http://blog.csdn.net/liushi558/article/details/54928292本文代码均来自标准 linux kernel 3.10,可以到这里下载 https://www.kernel.org/    以 arch/arm/mach-msm/board-dt-8960.c 为例,在该文件中的 msm_dt_init 函数的作用就是利用 dt(device tree...

2018-02-08 14:50:29 331

转载 linux虚拟内存管理

原文:http://blog.csdn.net/ywf861029/article/details/6114794Linux内核中,关于虚存管理的最基本的管理单元应该是struct vm_area_struct了,它描述的是一段连续的、具有相同访问属性的虚存空间,该虚存空间的大小为物理内存页面的整数倍。  下面是struct vm_area_struct结构体的定义:

2017-12-03 14:08:37 448

转载 2017年人脸检测、人脸对齐、人脸识别源码

点击打开链接

2017-11-30 22:13:16 1098

转载 Linux内核源代码情景分析-从路径名到目标节点

先看外包装,__user_walk,假设name为/usr/local/hello.c[cpp] view plain copy int __user_walk(const char *name, unsigned flags, struct nameidata *nd)  {      char *tmp;      int err;        tmp =

2017-11-09 22:24:36 751

转载 Linux input子系统分析之一:软件层次

Linux input子系统分析之一:软件层次标签: input子系统tsliblinux驱动开发linux软件层次linux输入子系统2015-08-23 10:49 2808人阅读 评论(4)收藏举报分类: S5PV210(Cortex A8)(11) LINUX内核、驱动(17) 版权声明:本文为博主原创文章

2017-10-17 17:55:19 317

转载 Linux下的platform总线驱动(一)

Linux下的platform总线驱动(一)原创 2012年12月01日 09:22:43版权所有,转载请说明转自 http://my.csdn.net/weiqing1981127  原创作者:南京邮电大学  通信与信息系统专业 研二 魏清一.Platform设备驱动概念主要讲解平台设备驱动的模型和基本概念,同时因为驱动加载的方

2017-10-17 17:30:12 216

转载 linux下I2C驱动架构全面分析

linux下I2C驱动架构全面分析转载 2013年12月31日 11:04:31I2C 概述  I2C是philips提出的外设总线.  I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线。  因此,I2C总线被非常广泛地应用在EEPROM,实

2017-10-17 16:57:21 6968

转载 spice 优化音频降低cpu

http://blog.163.com/smilexiao_11015461/blog/static/212205218201452510149544/最近在研究Rk3066的硬解,为了怕事后忘记,特记录下来。有软解了为什么还选择硬解,主要因为软件太耗cpu,硬解刚好补这个缺陷;一、先看spice server这边对视频的操作,spice server是把视频流打包成mjp

2017-04-05 09:59:48 3048

转载 BSP板载初始化之MACHINE_START->MACHINE_STOP

BSP

2017-03-27 22:20:41 291

转载 Linux 字符设备驱动结构(三)—— file、inode结构体及chardevs数组等相关知识解析

前面我们学习了字符设备结构体cdev Linux 字符设备驱动开发 (一)—— 字符设备驱动结构(上)  下面继续学习字符设备另外几个重要的数据结构。       先看下面这张图,这是Linux 中虚拟文件系统、一般的设备文件与设备驱动程序值间的函数调用关系;        上面这张图展现了一个应用程序调用字符设备驱动的过程, 在设备驱动程序的设计中,一般而言,会关心

2016-12-19 21:45:35 402

转载 ffmpeg转码过程分析

转 http://blog.csdn.net/xiaocao9903/article/details/50635971一,ffmpeg架构1. 简介FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、

2016-12-02 09:53:36 2647

转载 SPICE协议之RedWorker线程

http://blog.csdn.net/haiq2006/article/details/50644506RedWorker是SPICE协议的架构的核心,该线程处理所有的display/cursor相关消息。RedWorker主函数red_worker_main()使用了异步事件处理框架,事件来源有:1、驱动消息,包括绘图指令、Surface创建销毁、UpdateArea等等。2

2016-11-24 15:23:50 861

mplayer中文适用手册

详细的介绍了mplayer如何适用,适合新手入门

2015-09-05

空空如也

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

TA关注的人

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