Arm-Linux驱动开发
文章平均质量分 77
老表阿酷
这个作者很懒,什么都没留下…
展开
-
Linux-ref
1.我的Linux书架 2.玩转C链表 3.Linux内存映射之mmap 4.Linux内核开发之内存与I/O访问 5. Linux设备模型 6.Writing udev rules 7.Git 学习笔记 8.ARM linux的启动部分 9.arago-project原创 2014-07-02 09:38:20 · 1196 阅读 · 0 评论 -
S3C2440 NAND FLASH 模块及操作
典型的Nand Flash 引脚定义和内部结构框图 I/O0~I/O7 可以到I/O15 CLE 指令锁存使能 高电平时控制命令在WE上升沿锁存 ALE 地址锁存使能 高电平时 数据在WE上升沿锁存 nCE 片选信号 nRE 读信号 高电平锁存 nWE 写信号 高电平锁存 nWP 写保护引脚 RDY/B 可用/忙标志,控制操作的同步 Vcc Vss 小常识: 引脚上面带横杠原创 2013-03-20 21:37:49 · 1166 阅读 · 0 评论 -
S3C2440 中UART的实现
S3C2440A的有3个UART,都可以基于中断和DMA进行数据传输,可以支持最高115.2Kbps的比特率。每个UART通道包含两个64字节的FIFO。 UART的七种状态信号:溢出错误,奇偶校验错误,帧错误,断点,接收缓冲器数据就绪,发送缓冲空以及发送移位空,全部由状态寄存器(UTRSTATn/UERSTATn)标示。 波特率的产生:可以选择内部时钟和UEXTCLK,由UCONn设置并由1原创 2013-03-20 21:34:41 · 789 阅读 · 0 评论 -
2013-03-08 00:27 TFT LCD控制器
主流的显示器:TN。STN。TFT 目前应用最广泛的是TFT型LCD: 特性: 1.最大色彩1667万 2.效果比STN更佳 3.画面对比度高 4.反应速度快 LCD屏需要专门的LCD驱动器,一般厂商会将LCD驱动器和LCD显示屏做在一起,并提供相应的接口。以16位LCD为例,一般会提供40 pins。 LCD的显示分为三个部分 LCD控制器,产生像素时钟,各种信号 LCD驱原创 2013-03-21 21:51:18 · 1827 阅读 · 1 评论 -
framebuffer驱动
2013-03-12 23:15 分析1 帧缓冲(framebuffer)是linux系统显示设备的框架,将显示缓冲区抽象,屏蔽具体细节,用户可以直接操作帧缓冲,达到显示的目的。 常见的xwindow和qte也是基于帧缓冲而搭建,只需将图形的颜色值写入帧缓冲对应点,就能达到具体的显示效果。在嵌入式linux系统中, LCD驱动都是基于framebuffer框架,以达到轻量级的图形接口原创 2013-03-21 21:52:36 · 1660 阅读 · 0 评论 -
ARM虚拟内存及缓冲区实现/管理(无OS)
查到一些概念资料: 一)TLB 1)TLB的概述 TLB是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存. TLB是位于内存中的页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据. 2)TLB的原理 当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找. TLB中保存着虚拟地址(前20位)和页框号的对映关原创 2013-03-20 21:32:41 · 1593 阅读 · 0 评论 -
2011-10-07 10:59 ARM中的IRQ中断实现
ARM采用五级流水线技术(取码,译码,执行,缓冲,回写),对于ARM指令集而言,PC总是指向当前指令的下两条指令地址,即PC+8; 对异常的响应: 1)将下一条指令的地址存入相应连接寄存器LR,以便异常返回。若异常从ARM状态进入,LR寄存器保存的是下一条指令的地址PC+4,PC+8;与异常类型有关 2)将CPSR复制到相应异常模式的SPSR中 3)根据异常类型,强制设置CPSR的运行模式原创 2013-03-20 21:33:34 · 1260 阅读 · 0 评论 -
Linux内核链表
链表有单链表,双链表,循环链表等 在内核中大量使用双向循环链表,在include/linux/list.h头文件实现 链表数据结构的定义: struct list_head { struct list_head *next, *prev; }; 此链表只有指针域没有数据域,与C语言传统的链表有区别。 因为每个对象的数据域可能不同,实现通用访问; *初始化链表头 INIT_LIS原创 2013-03-21 21:46:27 · 698 阅读 · 0 评论 -
内核常见函数之list_for_each_entry/container_of
一、list_for_each 1.list_for_each原型 #define list_for_each(pos, head) \ for (pos = (head)->next, prefetch(pos->next); pos != (head); \ pos = pos->next, prefetch(pos->next)) 它实际上是一个 for 循环,转载 2014-04-22 15:43:10 · 959 阅读 · 0 评论 -
linux实现双电池
硬件配置:IMX53 双电池采用smbus接口 需求:android 能正确显示当前两块电池中电量高的那块容量等信息 问题:android 没有双电池架构,所以底层(linux驱动)实现两块电池是不可行 解决方案: 1.linux电池设备驱动调用两次,注册两个电池设备,在之上写一层驱动,负责产生向上报告事件 2.由于电池本身是i2c设备,可以注册i2c设备驱动,在该驱动内什么不做,只进原创 2013-04-18 22:25:39 · 1070 阅读 · 0 评论 -
ARM 2011-11-13 22:08 LDR 与ADR指令
之前在阅读arm的汇编代码时,碰到了adr指令,查arm的指令手册,只说该指令是采用相对地址的,但这个相对地址应该怎么理解,却没有具体说明。之后 在网上以adr指令为关键字进行搜索,也没有找到进一步的知识。结果,今天在搜索android资料的时候,意外的发现了adr指令与ldr指令的不同, 一下子解决了心中的问题。以adr指令与ldr指令对比作为关键字,甚至可以搜到好几篇文章,实在是......转载 2013-03-20 21:38:59 · 847 阅读 · 0 评论