1 在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。 所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。 在内核中用struct m...
分类:
系统相关 时间:
2014-07-22 00:17:34
阅读次数:
415
在学习编写linux驱动程序的时候,一般都是从写一个helloworld的模块开始。但是在编译完成后,进行模块加载的时候,有时会出现如下错误:
insmod: error inserting 'hello.ko': -1 Invalid module format
其实,出现这个问题的原因很简单,就是:编译的内核版本与实机运行的内核版本不一致。
所以解决起来也很简单,实机运行的系统的代码树位置一般在/usr/src/kernels。只要将Makefile中的代码树改成实际运行的内核代码即可。...
分类:
其他好文 时间:
2014-07-18 17:08:15
阅读次数:
300
ubuntu 14.04下的hello word模块编写过程...
分类:
系统相关 时间:
2014-07-18 11:34:39
阅读次数:
348
Linux网卡驱动程序编写[摘自 LinuxAID]工作需要写了我们公司一块网卡的Linux驱动程序。经历一个从无到有的过程,深感技术交流的重要。Linux作为挑战微软垄断的强有力武器,日益受到大家的喜爱。真希望她能在中国迅速成长。把程序文档贴出来,希望和大家探讨Linux技术和应用,促进Linux...
分类:
系统相关 时间:
2014-07-16 20:22:21
阅读次数:
344
前言
新买的笔记本E431装了最新版的Eclipse,搞定了Android开发话...
分类:
移动开发 时间:
2014-07-16 17:33:32
阅读次数:
200
前言
今天新买的Thinkpad E431到货了,500G硬盘72...
分类:
其他好文 时间:
2014-07-13 20:47:33
阅读次数:
218
本文摘自《嵌入式Linux驱动模板精讲与项目实践》一书中的“开发与调试技巧”。
Linux的强大威力就在于有很多开源项目可以使用,通常很多需求可以通过寻找相关的开源模块做为快速解决方案。要把这些开源模块应用到嵌入式中,其中一个关键点就是要使用交叉编译工具对开源项目进行交叉编译。
根据具体情况,下载的开源项目在组织上有很多情况,在此对各种情况进行归类介绍。
1. 下载的开源软件包找不到Ma...
分类:
系统相关 时间:
2014-07-12 18:57:32
阅读次数:
298
早先看linux驱动相关书籍的时候,隐约记得物理地址有动态映射和静态映射,当时写驱动都是想着自己动手写,所以一上手看着动态映射好用,就在自己的驱动上使用动态映射,将寄存器地址映射到内存上,即调用ioremap函数。在单线作战的时候ioremap确实好用,不需要改动内核的其他部分,直接将自己想用的物理地址映射到内存再操作。但很多时候当我们的设备需要在全局范围内被使用的时候,ioremap就会比较尴尬...
分类:
系统相关 时间:
2014-07-11 08:19:04
阅读次数:
316
Linux驱动注册有多种方式,通常是以内核提供的表征数据结构封装后按照内核子系统提供的接口函数进行注册,还有一些是比较复杂的以链表方式进行维护。以下对几种驱动注册方式进行介绍:
一、子系统有专门的驱动注册函数:
例如RTC子系统,提供rtc_device_register注册接口函数。
例如:
rtc_device_register(client->name,&client->dev, &...
分类:
系统相关 时间:
2014-07-10 22:13:06
阅读次数:
519
在Linux驱动中I2C系统中主要包含以下几个成员:I2C adapter 即I2C适配器I2C driver 某个I2C设备的设备驱动,可以以driver理解。I2C client 某个I2C设备的设备声明,可以以device理解。I2C adapter是CPU集成或外接的I2C适配器,用来控制....
分类:
系统相关 时间:
2014-07-09 17:21:36
阅读次数:
263