Linux嵌入式驱动
文章平均质量分 82
wzyhb123456789
这个作者很懒,什么都没留下…
展开
-
Linux嵌入式驱动初体验(二)--- 内核装载
<br /> 对于有操作系统的嵌入式开发来说,在开发板上肯定要有一个可以运行的操作系统,就拿3250上的Linux移植来说,首先要做的就是编译内核源码,下面就说一下整个内核移植的过程吧。<br /> 首先要有内核源代码,但是要知道,这个源代码不是电脑上用的那个源码,而是经过裁剪修改过的,适合3250CPU使用的Linux内核,在3250光盘里提供的内核源码是 linux-2.6.27.8 的,把源码包 linux-2.6.27.8-smartarm3250_V1.00.tar.bz2 复原创 2010-09-09 16:17:00 · 1920 阅读 · 0 评论 -
Linux嵌入式驱动初体验(三)--- 模块接触
对于驱动的开发,说的简单些,就是一个模块编程,然后编译成内核模块,加载到内核中运行。下面就先介绍一个简单的模块程序,然后再慢慢引出我们需要关注的重点:#include #include static int __init hello_init(void) { printk(KERN_ALERT"/nHello Kernel World/n"); return 0; } static void __exit hello_exit(void) {原创 2010-09-10 18:21:00 · 1295 阅读 · 0 评论 -
Linux嵌入式驱动初体验(五)--- LED驱动解析
<br /> 在编写驱动程序的时候,入门的应用应该就是LED的驱动了,它的地位就像是Hello World之于C语言。其实LED灯是一种原子设备(我记得我们一个硬件老师说了这么一个名字,如果我说错了,就怨我没记住吧),意思就是只有0和1两种结果,就是只有亮和不亮两种结果,要是非和我抬杠说有半亮不亮的状态,那我也没话说了。所以对于一个原子设备来说,它的驱动还是比较容易弄懂的,而且对于一个简单的LED驱动来说,可以不用考虑一个最让人头疼的部分,就是---中断,所以还是比较好上手的。<br />原创 2010-09-13 21:06:00 · 3236 阅读 · 1 评论 -
Linux嵌入式驱动初体验(四)--- 驱动结构分析
<br /> 在Linux系统上编写驱动程序,说简单也简单,说难也难。难在于对算法的编写和设备的控制方面,是比较让人头疼的;说它简单是因为在Linux下已经有一套驱动开发的模式,编写的时候只需要按照这个模式写就可以了,而这个模式就是它事先定义好的一些结构体,在驱动编写的时候,只要对这些结构体根据设备的需求进行适当的填充,就实现了驱动的编写。<br /> 首先在Linux下,视一切事物皆为文件,它同样把驱动设备也看成是文件,对于简单的文件操作,无非就是open/close/read/wri原创 2010-09-13 10:05:00 · 1704 阅读 · 0 评论 -
Linux嵌入式驱动初体验(一)--- 准备工作
<br /> 开发嵌入式驱动,其实不止是驱动程序,应用程序也是如此,都需要有个准备工作,下面我就以SmartArm3250和Linux系统作为依据,说一下需要准备什么,其实也不是给别人说教什么,只是自己记录一下,如果有能帮别人的地方,也算是我助人为乐了。<br /> 首先,既然是嵌入式,就是以嵌入的方式把一个开发出来的东西放到一个载体上去运行,这个载体也就是开发板。对于Arm来说,它上面的资源是很小的,3250这块开发板的Nand Flash是256MB,根本放不下什么开发环境的,而且在原创 2010-09-08 22:12:00 · 2149 阅读 · 4 评论 -
Linux嵌入式驱动初体验(六)--- LED驱动测试程序
<br /> 通过上一篇文章,我们已经写好了一个LED驱动,但是如果光运行这个驱动程序(其实它是一个模块程序,不能称之为运行),LED灯是不会亮的,驱动程序的作用其实就相当于编写了一些库函数一样,当驱动程序通过编译,然后以模块的形式加载到内核之后,这些函数就是可以用的了,然后通过调用这些函数来实现设备的使用。原理就是这么个原理,下面就根据上一篇文章得到的那些函数,来写一个能够让LED闪烁的,称之为测试程序的代码。<br /> 其实代码并不长,重点在于编写的模式和思路。对于一个设备来说,L原创 2010-09-25 21:31:00 · 3139 阅读 · 1 评论 -
Linux嵌入式驱动初体验(七)--- LED驱动之字符设备篇
Linux中的设备可以分为三类:字符设备、块设备、网络设备,对于上一篇文章中的驱动编写的方法,是基于platform结构的,下面我们把它改变成字符设备的驱动编写模式,原理和方法基本是一样的,只是换了一个外壳而已。 首先还是看一下依照字符设备驱动编写所设计的数据结构:static struct file_operations led_fops = { .owner = THIS_MODULE, .open = led_open, .release = led_releas原创 2010-09-26 21:58:00 · 1683 阅读 · 0 评论