linux驱动开发
沧海一庶
生活就要学会去爱,爱,爱!
展开
-
关于内存地址需要对齐的问题
<br />最近有个项目,调试过程中出现了“不可思议的现象”,在PC上调试完全正确,移植到ARM平台发现居然出错,报错"segment fault".比较郁闷,调试了将近两天,才终于跟踪到,发现居然是因为内存地址没有对齐,导致读取数据发生高16位和低16位发生对换,所以为了更好的记住这个教训,特意到网上搜索相关地址不对齐的解释,现摘录如下:<br /> <br />ARM程序由于字节对齐引起的问题深入分析2007-10-27 14:53<br /> 首先说说,什么叫对齐。如果一个数据是从偶地址开始的连转载 2010-07-04 09:52:00 · 2170 阅读 · 1 评论 -
linux设备模型之uart驱动架构分析
<br />:http://ericxiao.cublog.cn/------------------------------------------一:前言接着前面的终端控制台分析,接下来分析serial的驱动.在linux中,serial也对应着终端,通常被称为串口终端.在shell上,我们看到的/dev/ttyS*就是串口终端所对应的设备节点.在分析具体的serial驱动之前.有必要先分析uart驱动架构.uart是Universal Asynchronous Receiver and Transmi转载 2010-06-16 16:23:00 · 193 阅读 · 0 评论 -
linux设备驱动之USB主机控制器驱动分析
<br />http://ericxiao.cublog.cn/------------------------------------------一:前言Usb是一个很复杂的系统.在usb2.0规范中,将其定义成了一个分层模型.linux中的代码也是按照这个分层模型来设计的.具体的分为usb设备,hub和主机控制器三部份.在阅读代码的时候,必须要参考相应的规范.最基本的就是USB2.0的spec.它定义了USB协议.另外的一个是USB控制器的规范.有UHCI,EHCI,OHCI三种.其中UHCI是Inte转载 2010-06-16 19:18:00 · 693 阅读 · 0 评论 -
可变参数的用法笔记(转)
<br />前言:本文在很大程度上改编自网友kevintz的“C语言中可变参数的用法”一文,在行文之前先向这位前辈表示真诚的敬意和感谢。<br />一、什么是可变参数<br />我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: <br />int printf( const char* format, ...); <br />它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式: prin转载 2010-06-22 14:45:00 · 168 阅读 · 0 评论 -
Linux设备驱动编程--内存与I/O
对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分——用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间,如下图: 内核空间中,从3G到v转载 2012-03-20 17:28:32 · 171 阅读 · 0 评论 -
ffmpeg命令使用详解
ffmpeg真得太棒了,刚接触就感受到了它的强大,轻松几条命令就可以完成你的工作。把darkdoor.[001-100].jpg序列帧和001.mp3音频文件利用mpeg4编码方式合成视频文件darkdoor.avi:$ ffmpeg -i 001.mp3 -i darkdoor.%3d.jpg -s 1024x768 -author skypp -vcodec mpeg4 darkd转载 2012-05-31 17:03:20 · 203 阅读 · 0 评论