LINUX DRIVER
linphusen
work as a developer of linux device driver,I focus on the ARMbased embedlinux develop.
展开
-
理‘解统一编址与独立编址、I/O端口与I/O内存“
本文转自:http://blog.chinaunix.net/u3/96613/showart_1926286.html 引言: 从CPU连出来一把线:数据总线、地址总线、控制总线,这把线上挂着N个接口,有相同的,有不同的,名字叫做存储器接口、中断控制接口、DMA接口、并行接口、串行接口、AD接口……一个设备要想接入,就用自己的接口和总线上转载 2009-09-26 17:48:00 · 1983 阅读 · 1 评论 -
MTD NAND Analysis 1
<br />MTD 驱动程序是专门针对嵌入式Linux的一种驱动程序,相对于常规块设备驱动程序(比如PC中的IDE硬盘)而言,MTD驱动程序能更好的支持和管理闪存设备,因为它本身就是专为闪存设备而设计的。具体地讲,基于MTD的FLASH驱动,承上可以很好地支持cramfs,jffs2和yaffs等文件系统,启下也能对FLASH的擦除,读写,FLASH坏块以及损耗平衡进行很好的管理。所谓损耗平衡,是指对NAND的擦写不能总是集中在某一个或某几个block中,这是由NAND芯片有限的擦写次数的特性决定的。总之,转载 2011-05-06 01:21:00 · 1227 阅读 · 0 评论 -
内核驱动模型
<br /><br />内核驱动模型的初衷<br />2.6 内核增加了一个引人注目的新特性——统一设备模型 (device model) 。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:<br />l 代码重复最小化。<br />l 提供诸如引用计数这样的统一机制。<br />l 可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。<br />l 可以将系统中的全部设备结构以树转载 2011-05-06 01:25:00 · 1004 阅读 · 0 评论 -
FLASH HARDWARE KNOWLEDGE And driver
<br /> <br /> <br />问题:<br /> <br />开发板上的Nand Flash型号是K9F1G08U0B,芯片手册上写读出的数据应该是 EC F1 00 95 40,<br />但我读出的是 EC 40 00 EC 40<br /> <br /> <br />关于NAND FLASH ID、读、写都不正确的问题。<br />在移植的过程中发现对FLASH ID、读、写都不正确,开始以为是UBOOT对FLASH的操作有问题,但后来发现写入的数据总是32位往里写入。导致每次写入的数据都不转载 2011-05-06 01:48:00 · 1325 阅读 · 0 评论 -
进程上下文和中断上下文
<br />进程上下文是一种内核所处的操作模式,此时内核代表进程执行--例如执行系统调用或运行内核线程。<br />上下文context: 上下文简单说来就是一个环境,相对于进程而言,就是进程执行时的环境。具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。<br /> 一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。<br /> 用户级上下文: 正文、数据、用户堆栈以及共享存储区;<br /> 寄存器上下文: 通用寄存器、程序寄存器转载 2011-05-02 23:35:00 · 453 阅读 · 0 评论 -
Linux内核内存泄露,分析方法
<br /><br />Way1:打桩<br /> <br /><br />只适合自己开发的驱动或者内核代码<br /> <br />from<br />http://www.powerpcdev.net/blog/index.php/archives/77.html<br /> <br />meng zhao <zhaomeng2009*gmail*com><br />你可以使用打桩的方法,具体如下:<br />例如你写的程序调用到了kmalloc函数,那你可以自己实现另外一个内存分配函数,比如叫stub原创 2011-05-02 16:54:00 · 1641 阅读 · 1 评论 -
关于Linux驱动的平台注册方式-- platform_driver_register
<br /><br />http://hi.baidu.com/deep_pro/blog/item/754f7764b73099fbf636544a.html<br /> <br />cdev_add 、register_blkdev 这样的驱动注册函数<br />platform_driver_register这样的写法,<br />但是没有看到哪本书介绍了相关内容<br /><br /><br />简要说,使用这种方式,可以轻松的实现device和driver的匹配,即热插拔<br />因为平台驱动提原创 2011-05-02 23:51:00 · 987 阅读 · 0 评论 -
宏定义里的 do{} while (0)以及我的认识
<br /><br />无论是Linux内核还是其他著名的c、c++库里都能见到 do{} while (0)<br />这样的写法看似没有意义,其实出自名家之手,是在宏定义里使用的<br />以前就了解到在程序里使用宏定义的函数后面的分号容易导致问题,今天算是深入认识了<br />先看一个简单的宏<br />#define SAFE_FREE(p) do {free(p);p=NULL;} while(0)<br />如果去掉了do... while(0)<br />即定义SAFE_FREE(p)为<br原创 2011-05-02 23:32:00 · 575 阅读 · 0 评论 -
Android Camera Architecture
From:http://blog.csdn.net/qikaibinglan/archive/2010/12/21/6088337.aspx1、Camera成像原理介绍Camera工作流程图Camera的成像原理可以简单概括如下:景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过IO接口传输到CPU中处理,通过DISPLAY就可以看到图像了。电荷耦合器件(转载 2011-05-02 22:56:00 · 5436 阅读 · 2 评论 -
LCD debug memo
<br /><br />porority of HSYNC, VSYNC is very important in LCD debug follow<br /> <br />Steps for Debug<br />1) check the power supply is correct<br />2) check the clock for LCD is correct and output normally<br />3) check the CPU side Pads(Pin/GPIO) settin原创 2011-05-02 22:25:00 · 2786 阅读 · 2 评论 -
LCD 接口和参数
<br /><br />BPP <br /> Bits Per Pixel<br /><br /><br />Vertical<br />--------------------------------<br />VBP<br /> Vertical back porch is the number of inactive lines at the start of a frame, after vertical synchronization period.<br /><br />VFP<br原创 2011-05-04 01:12:00 · 2886 阅读 · 0 评论 -
LCD debug memo--s3c2410&2440
<br /> <br />Keywords:<br /> <br />1 polarity(Hsync,VSync)<br />2 Gram<br />3 RGB/GBR/BGR hardware interface<br /> <br />Should pay more attention on above signal and make sure you know how to calculate the HSYNC, VSYNC, VCLK,MCLK.<br /> <br /> <br />TFT L原创 2011-05-04 01:04:00 · 1310 阅读 · 0 评论 -
将Linux启动信息同时输出到LCD和串口终端
<br />linux启动参数指定<br />console=tty0 可以输出到LCD<br />console=ttySAC0,115200 可以输出到串口终端<br /><br />想要它们同时生效<br />console=tty0 console=ttySAC0,115200 <br />即可,就这么简单<br />注意console=ttySAC0,115200一定要在后面,否则启动后无法输入了<br />这时Linux的logo似乎不可用,还得再研究下原创 2011-05-02 23:40:00 · 1602 阅读 · 0 评论 -
V4l2 Capture Sequence
<br />V4l2 Capture Sequence <br /><br />v4l2 操作实际上就是 open() 设备, close() 设备,以及中间过程的 ioctl() 操作。对于 ioctl 的调用,要注意对 errno 的判断,如果调用被其他信号中断,即 errno 等于 EINTR 的时候,要重新调用。 <br /><br />Video capture device 的实际功能就是采集视频信号,并将数字化的图像保存在 memory 中,现在几乎上所有的相关设备都能采集 25/30 帧 /转载 2011-05-02 22:59:00 · 846 阅读 · 0 评论 -
内存对齐.结构体对齐
<br />gcc 中的"__attribute__ ((packed))"<br /> <br /><br />__attrubte__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。<br /><br />#define __u8 unsigned char<br />#define __u16 unsigned short<br /><br />/* __attribute__ ((packed)) 的位置约束是放于声明的尾部“;”之前转载 2011-05-02 22:43:00 · 13614 阅读 · 4 评论 -
volatile keyword
<br />http://blog.21ic.com/user1/2949/archives/2007/35599.html一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: <br /> 1). 并行设备的硬件寄存器(如:状态寄存器) <br /> 2). 一个中断服务子程序中会访问到的非自动变量转载 2011-05-02 16:41:00 · 359 阅读 · 0 评论 -
Shell Makefile 中的符号
hell脚本中一些特殊符号1、{} 大括号:用法一:通配符扩展代码: ls my_{finger,toe}s这条命令相当于如下命令的组合:代码: ls my_fingers my_toesmkdir {userA,userB,userC}-{home,bin,data}我们将得到 userA-home, userA-bin, userA-data, userB-home,原创 2011-06-20 23:46:00 · 2777 阅读 · 1 评论 -
Linux FB Console---boot logo and the flash cursor
1 Remove the flash cursor when booting into Linux kenrel(开机光标)drivers/video/console/fbcon.c change: static void fb_flashcursor(void *private) { ...} static void fbcon_cursor(struct vc_data *vc, int mode) {...}To: static void fb_flashcursor(void *p原创 2011-05-26 17:38:00 · 2030 阅读 · 0 评论 -
FLASH HARDWARE KNOWLEDGE And driver
<br /><br />1. 硬件特性:<br />【Flash的硬件实现机制】<br />Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性,从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了转载 2011-05-06 01:32:00 · 1039 阅读 · 0 评论