随笔分类 -  Linux Driver

摘要:我们知道printk分为两步,一是把要输出的信息放到缓冲区log_buf,另外一个是通过控制台输出信息。 这里构造myprintk函数,仿照printk的输出信息到缓冲区,并且把缓冲区对应/proc/mymsg文件节点,当cat /proc/msg的时候会输出缓冲区信息 关于log_buf缓冲区的重 阅读全文
posted @ 2012-12-30 03:34 TaigaComplex 阅读(702) 评论(0) 推荐(1) 编辑
摘要:以下源码基于Linux-2.6.32.2 printk是Linux内核空间的信息输出函数,printk入口位于kernel/Printk.c 以下是printk的流程解析: 以上流程可以知道,printk最终会调用到控制台的写函数,用于输出数据另外,在设置bootargs的时候,设置了console 阅读全文
posted @ 2012-12-29 22:01 TaigaComplex 阅读(1066) 评论(0) 推荐(0) 编辑
摘要:ASOC(ALSA system on chip)。是由wolfson公司做的一个针对嵌入式移动设备的声音驱动的架构。支持三种不同的CODEC接口:AC97(Intel),I2S(Philips),PCM接口。ASOC在实现上区分了具体的平台和CODEC,从而使得同一个CODEC芯片可以在不同的体系 阅读全文
posted @ 2012-12-08 00:45 TaigaComplex 阅读(1499) 评论(0) 推荐(0) 编辑
摘要:uda1341连接soc的引脚分为两类:数据引脚、控制引脚。 数据引脚用于音频码流的传输, 控制引脚用于该声卡芯片控制,比如说音量控制等 如下图为uda1341的声卡 其中连接soc的引脚用红框框了出来 上面那个是数据传输引脚 下面的是控制引脚 引脚说明: CDCLK : uda1341的工作时钟 阅读全文
posted @ 2012-12-07 21:46 TaigaComplex 阅读(2893) 评论(0) 推荐(1) 编辑
摘要:对于字符设备驱动,当file_operations注册好了之后,这只是实现了该驱动的内部功能,我们还要向用户提供操作接口,也就是在/dev/目录下创建字符设备节点,其中device_create函数就用于实现该功能。 创建设备节点是device_create的功能之一,下面主要分析该功能的主要流程。 阅读全文
posted @ 2012-12-06 17:36 TaigaComplex 阅读(3626) 评论(0) 推荐(0) 编辑
摘要:DMA(Direct Memory Access,直接内存存取) 一般来说,计算机对内存数据进行处理的时候,需要从内存把数据读进寄存器,然后进行进一步的操作(比如运算处理)。 但是有些数据并不需要运算处理这一类型的操作,只是单纯的移动数据,而把数据读进寄存器,然后再把数据从寄存器写进内存会消耗cpu 阅读全文
posted @ 2012-12-03 12:40 TaigaComplex 阅读(1501) 评论(0) 推荐(1) 编辑
摘要:首先来了解新的字符设备驱动注册方式。 对于Linux字符设备驱动注册方式 2.4及其之前的内核: register_chrdev(0,"hello",hello_fops); 该函数所注册的字符设备是以主设备号为单位的,一个主设备号只能对应一个fops,只能支持256个驱动 2.4以后的内核 : a 阅读全文
posted @ 2012-11-29 18:33 TaigaComplex 阅读(785) 评论(0) 推荐(0) 编辑
摘要:本驱动基于linux2.6.32.2 i2c遵循的也是总线设备驱动框架,具体流程如下: 当加入驱动(driver)时: i2c_add_driver //进行驱动注册 i2c_register_driver(THIS_MODULE, driver); driver_register(&driver- 阅读全文
posted @ 2012-11-23 23:21 TaigaComplex 阅读(1851) 评论(0) 推荐(2) 编辑
摘要:说到网络,对于学过计算机网络的人来说,大概会先想到网络5层协议,但是由于一般的操作系统都集成了网络协议模块,所以网卡驱动模块跟协议模块的关系其实是微乎其微的,硬要说是在协议中的哪一部分的话,应该是在物理层,网卡驱动就是连接物理层跟其它上层协议的模块。 网卡驱动的主要功能有: 1.接收硬件传来的数据, 阅读全文
posted @ 2012-11-21 23:01 TaigaComplex 阅读(989) 评论(0) 推荐(0) 编辑
摘要:首先,nor flash驱动作为块设备驱动,大部分的流程跟nand flash一样,只是最底层的硬件操作层跟协议层有区别, 代码如下 不过Linux的nor驱动一般使用总线设备驱动框架,在probe函数内部进行芯片识别(do_map_probe)跟分区(add_mtd_partitions). 最后 阅读全文
posted @ 2012-11-17 23:33 TaigaComplex 阅读(1376) 评论(0) 推荐(0) 编辑
摘要:当我们需要在操作系统上读写普通文件的时候,总是需要一层层往下,最终到达硬件相关操作,当然底层设备大多数都是块设备 NAND FLASH就作为一个最底层的块设备。 而我们写驱动,就是要构建硬件与操作系统之间的联系,因此我们需要知道nand flash在Linux操作系统下的框架。 框架如下: 1.即使 阅读全文
posted @ 2012-11-17 17:33 TaigaComplex 阅读(1114) 评论(0) 推荐(0) 编辑
摘要:总线设备驱动框架是一种类似于输入子系统的框架。 总线设备驱动,顾名思义,共有三个模块,负责硬件资源的设备(device),负责处理硬件事务并且连接其他功能模块的驱动(driver),还有就是连接这两者的总线(bus)。 上图以usb为例子展示了总线设备驱动,其过程分为以下步骤: 1.当加入一个设备时 阅读全文
posted @ 2012-11-15 03:36 TaigaComplex 阅读(353) 评论(0) 推荐(1) 编辑
摘要:平台:S3C2440 触摸屏的硬件相关模块其实有两个: 一个是触摸屏本身,当然就是用于触摸响应。当被触摸屏被按下的时候产生电信号,当按下被松开的时候又产生电信号。 另外一个就是adc,也就是模数转换模块。当触摸屏被按下的时候会产生电信号(电压)而我们需要通过该电压得到触摸屏按下的位置,因此需要利用a 阅读全文
posted @ 2012-11-10 09:23 TaigaComplex 阅读(2610) 评论(0) 推荐(0) 编辑
摘要:今天发现了个问题 写驱动的时候写错了个驱动出口(module_exit给拼错了),结果导致加载驱动成功,确无法卸载: rmmod的时候显示can't unload 'xxx': Device or resource busy 然后用lsmod查看了下,发现驱动多了个属性: xxx 1816 0 [p 阅读全文
posted @ 2012-11-06 18:43 TaigaComplex 阅读(3092) 评论(0) 推荐(0) 编辑
摘要:Linux输入子系统源文件入口在drivers/input/input.c目录下 输入子系统分为两层: 1.核心层: 主要功能 注册主设备号 对于swi进入的open函数进行第一层处理,并通过次设备号选择handler进入第二层open,也就是真正的open所在的file_operation,并返回 阅读全文
posted @ 2012-11-05 22:40 TaigaComplex 阅读(754) 评论(0) 推荐(0) 编辑
摘要:大体上跟windows的消息处理机制差不多 app所要做的事情 1.绑定信号处理函数 2.通知驱动该程序的pid,好让驱动能够通过pid返回信号 3.设置异步标志位 驱动程序所要做的事情: 1.添加.fasync函数 2.构造fasync_struct结构体指针,该结构体用于存放pid 3.中断处理 阅读全文
posted @ 2012-11-04 13:20 TaigaComplex 阅读(239) 评论(0) 推荐(0) 编辑
摘要:分析转自韦东山: 所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。 一、内核框架: 对于系统调用poll或se 阅读全文
posted @ 2012-11-03 20:18 TaigaComplex 阅读(602) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2012-11-03 17:04 TaigaComplex 阅读(298) 评论(0) 推荐(0) 编辑
摘要:驱动代码: 测试代码: 流程如下: 阅读全文
posted @ 2012-11-03 16:47 TaigaComplex 阅读(1503) 评论(0) 推荐(0) 编辑
摘要:内核版本:2.6.32.2 错误: error:implicit declaration of function 'request_irq' error:implicit declaration of function 'free_irq' 解决方法: #include <linux/interru 阅读全文
posted @ 2012-11-03 14:34 TaigaComplex 阅读(4998) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示