Linux驱动
Ralph_sqd
这个作者很懒,什么都没留下…
展开
-
linux子系统分析及触摸屏驱动浅析
在linux2.6以后,linux对输入设备进行了抽象,抽象出了输入子系统,该系统(Input子系统)是所有I/O设备驱动的中间层,为上层提供了一个统一的界面,将事件的上报和处理分离开,采用了分层模式,在我们的driver中,我们只需要关注事件的上报,其他的都由linux自己处理。在上层系统中,它不需要知道底层有多少键盘,鼠标,轨迹球,触摸屏等设备,只需要把上报上来的input事件做相应的处理就行了。一.Input输入子系统的框架Input子系统将整个将输入驱动分成三块: driver,input core原创 2010-10-11 14:33:00 · 3156 阅读 · 2 评论 -
console_init()解惑
<br />console_init()在start_kernel()中调用,用来对控制台初始化,这个函数执行完成后,串口可以看到内核<br />用printk()函数打印的信息<br />这里还有个问题就是,在console_ini()之前用printk()也能打印出来,这个因为,如果没有注册console,<br />printk只是将信息放到缓冲区中,console_init->con_init->register_console,在register_console时输<br />出缓冲区中暂存的信息原创 2011-05-03 14:25:00 · 4046 阅读 · 0 评论 -
vmalloc/kmalloc
在内核空间中主要存在kmalloc分配的物理连续空间和vmalloc分配的非物理连续空间。kmalloc分配的空间往往被称为内核逻辑地址,由于它是连续分配(直接处理物理页框),而且分配首地址一定,所以其分配的内核虚拟地址对应的实际物理地址很容易获得:内核虚拟地址—PAGE_OFFSET(0xC0000000)(内核有对应例程virt_to_phys)即等于物理地址,而且其对应的页表属于内核页表(swapper_pg_dir)——在系统初始化时就以建立,因此省去了建立页表的工作。而vmalloc分配的空间被称原创 2011-05-25 10:22:00 · 841 阅读 · 0 评论 -
去掉SVN管理kernel编译后版本自动变化
去掉SVN管理kernel编译后版本自动变化 由于版本变化导致wifi驱动insmod检测时出错退出,提示:# insmod wlan.ko [ 47.274680] wlan: version magic '2.6.32.9 mod_unload ARMv5 ' should be '2.6.32.9-svn47 mod_unload ARMv5 ' insmod: init_module 'wlan.ko' failed (Exec format error)查找到2.6.27-svn47是在$原创 2011-03-31 17:17:00 · 3354 阅读 · 1 评论 -
Porting WiFi drivers to Android
<br />http://blog.linuxconsulting.ro/2010/04/porting-wifi-drivers-to-android.html<br />Porting WiFi drivers to Android <br /> <br />PaNiC Random Rant (or how we used to call it: .plan)<br />Thursday, April 29, 2010<br />Porting WiFi drivers to Android<br /原创 2011-02-23 17:10:00 · 145 阅读 · 0 评论 -
linux内存管理(转)
而这篇则是参考了陈莉君老师的博客,对linux的内存管理进行了一个简要概述。我们首先从进程的角度,来看linux中的内存空间。****************************************************************************************************************************************Linux中的地址空间(一)有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间在什么范围内?内核编转载 2010-11-03 14:34:00 · 564 阅读 · 0 评论 -
Linux驱动开发调试中的一些小技巧
在写linux驱动是难免需要调试,但如果每次都需要用户的角度或者每次都在上层写一个测试程序去打开设备在通过传统的ioctrl等调试的话未免有点麻烦,偶然的一次看到通过sys系统提供给上层接口来调试和操作硬件的办法 sysfs设备模型有很多用处,主要是用在设备管理方面的,我这里做的只是利用sysfs提供给上层的一个接口,让我们在开发时可以轻易的调用到硬件。 首先,填充一个bin_attribute的结构体,以下是做GPS底层驱动用到的一个结构体,重要的就是那个read和write值,其他的具体什么意思也没去原创 2010-11-03 15:27:00 · 2316 阅读 · 1 评论 -
等待队列和工作队列
<br /><br />对这2个容易混淆的队列做简单概念上的区别,至于怎么用,资料一大堆,不多说,等需要的时候再去找吧<br /> <br />等待队列在内核中有很多用途,尤其适合用于中断处理,进程同步及定时。我们在这里只说,<br />进程经常必须等待某些事件的发生。例如,等待一个磁盘操作的终止,等待释放系统资源,或者<br />等待时间经过固定的间隔。<br /> <br />等待队列实现了在事件上的条件等待,希望等待特定事件的进程把自己放进合适的等待队列,并<br />放弃控制权。因此。等待队列表示一原创 2010-12-17 09:46:00 · 179 阅读 · 1 评论 -
linux内核中读取文件
做CTP芯片驱动时,供应商需要我在驱动层做一个升级他们FW的接口,现贴出linux内核驱动中读取文件的代码struct file *srcf; char *buffer; int orgfsuid, orgfsgid, retval; mm_segment_t orgfs; buffer = kmalloc(MAX_BUFFER_SIZE,GFP_ATOMIC); if(buffer == NULL) { printk("failed to kmalloc mem/n");原创 2010-10-19 15:38:00 · 985 阅读 · 0 评论 -
《深入理解Linux内核》读书笔记之内存寻址
<br /><br /><br />《深入理解Linux内核》读书笔记<br />-----内存寻址<br /><br />题记: 最近在看《深入理解linux内核》这本书,看的时候记了些笔记,主要是书上一些重要知识点的謫录还有就是自己的一些个人理解,其实一些地方我也没大看懂,还需要继续研究,先把东西记在这,一些地方记的也有点乱,主要是为以后自己再回去学习这方面知识做一些线索指导,也希望对大家学习这方面只是有些帮助,有什么不正确的地方还请指正<br /><br />三种地址<br />逻辑地址(logica原创 2010-12-06 15:02:00 · 1185 阅读 · 0 评论 -
GPIO模拟SPI接口代码
关于SPI,不同的芯片具体通信方式可能会不大一样,所以要具体问题具体分析,下面是最近做LCD时碰到的两个模拟SPI协议的代码,芯片通信方式不同,代码也就不同了 SPI的工作原理不多说,网上一大把。 1.一款夏普的屏,hx8363A,和host的接法是三线的SPI 写: 读: 如上图,发命令D/CX是0,如果是参数D/CX就是1. 下面是相关代码 #define原创 2011-11-03 11:25:40 · 3242 阅读 · 1 评论