嵌入式系统设备驱动程序开发Word文件下载.docx
《嵌入式系统设备驱动程序开发Word文件下载.docx》由会员分享,可在线阅读,更多相关《嵌入式系统设备驱动程序开发Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
200730580426
指导老师:
孙道宗老师、殷建军老师
日期:
2010.12.21~2010.12.31
华南农业大学工程学院
前言
嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统。
嵌入式系统与通用计算机系统的本质区别在于系统应用不同,嵌入式系统是将一个计算机系统嵌入到对象系统中。
这个对象可能是庞大的机器,也可能是小巧的手持设备,用户并不关心这个计算机系统的存在。
嵌入式系统一般包含嵌入式微处理器、外围硬件设备、嵌入式操作系统和应用程序4个部分。
嵌入式领域已经有丰富的软硬件资源可以选择,涵盖了通信、网络、工业控制、消费电子、汽车电子等各种行业。
当前,嵌入式技术的应用越来越广泛,从航天科技到民用产品,嵌入式产品的身影无处不在,而这些嵌入式产品的核心——处理器解决了产品的市场和性能。
在32位嵌入式处理器市场中,ARM处理器占有很大的份额。
ARM不仅是一个公司、一种技术,也是一种经营理念,即由ARM公司提供的核心技术,只售芯片的IP授权,采取了别具一格的“Chipless模式”(无芯片的芯片企业),不参与生产,而是由合作厂商去生产具体的芯片和产品。
现在由于存储空间等原因,在嵌入式芯片上编程有较大的困难,选取合适的平台就显得很重要。
Linux自出现以来,得到了迅猛的发展。
Linux是开发源码的操作系统,吸引着全世界的程序员参与到发展和完善的工作中来,所以Linux保持了稳定而且卓越的性能。
Linux在服务器领域已经占有很大的份额,在图形界面方面也不输于Windows。
由于源码可以修改、移植,Linux在嵌入式领域中的应用也越来越广泛了。
选用Linux作为平台,可以根据具体需要自由地裁剪源码,打造适合目标平台的环境,编写最有效率的应用程序。
可以预见,ARM与Linux的未来会更加壮大,在嵌入式产品市场上会占有越来越大的份额。
在这种形势下,学习研究ARM与Linux非常有必要,S3C2410是ARM9系列中非常优秀的一款处理器,应用广泛。
这次课程设计是在以linux为系统、s3c2410为处理器、ARM920T为内核的基础上进行设备驱动程序的开发。
在开发前,必须掌握一些基本功能:
建立嵌入式linux的开发环境的方法,BootLoader的编译及配置方法,以及编写makefile的基本方法
【摘要】
Linux操作系统将所有的设备(而不是在存储器里的文件)全部都看成文件,都纳入文件系统的范畴,都通过文件的操作界面进行操作。
用户程序不能直接操作硬件,而是使用统一的接口函数调用硬件驱动程序。
这组接口在交叉工具链的文件ioctl.h等文件中定义。
对于上述每个接口函数,驱动程序中都有一个与之对应的函数。
这次课程设计是在以linux为系统、s3c2410为处理器、ARM920T为内核的基础上进行设备驱动程序的开发(驱动程序代码是在网上和书本上找的)。
基于Linux系统的嵌入式系统设备驱动程序开发之前,需要了解开发的流程:
建立嵌入式Linux的开发环境、编译和配置Bootloader和编写makefile以及移植内核。
移植了内核后,从简单到困难,我们依次完成了HelloWorld、中断、LED驱动和IIS音频的设备驱动实验。
尝试着做IICLED驱动和s_uart驱动。
【关键字】
Linux操作系统硬件驱动程序交叉工具链开发环境移植内核
【abstract】
LinuxOperationSystemregardsthewholedevices(theyarenotthefilesinthememory)astheallfiles,rangesthewholedeviceswithinthescopeofthefilesystem,operatesthewholedevicesthroughthefileoperationsurface.Thehardwarecannotbeoperateddirectlybytheuserprogram,itisusedtodriveprogrambyusingtheunifiedinterfacefunction.Thegroupofinterfaces,whicharematchedbyfunctionsindriverprogram,aredefinedincross-tool-chainfiles,likefileioctl.handsoon.
Thiscourse-designingistodevelopthedevice-driver-program(itisfindedonthewebandinthebooks)basedonLinuxsystem、processers3c2410andcoreARM920T.
ItisnecessarytounderstandthedevelopingprocedurebeforetheEmdededSystemdevicesdriverprogrambeingdevlopedbasedonLinuxsystem.Theprocedureis:
BuildingthedevelopingenvironmentonLinuxsystem、CompilingandSettingBootloader、WritingmakefileandMovingandPlantingtheCPUcore.AftermovingandplantingtheCPUcore,wehadfinishedsequentlyHelloWorlddriver、Interruptdriver、LEDdriverandIISviocefrequencydriverfromeasyonetohardone.AndwehadtriedtodoothertwoexperimentslikeIICLEDdriverands_uartdriver.
【keywords】
LinuxoperationsystemHardwaredriverprogramCrosstoolchain
DevelopingenvironmentMovingandplantingtheCPUcore
1环境介绍
1.1硬件介绍
一台台式电脑、一条网线、一条串口线、一条并口线、一条下载线和一个GX_ARM9_2410EP实验箱。
下面具体介绍试验箱。
GX_ARM9_2410EP是一款基于三星S3C2410X16/32位RISC处理器(ARM920T)的针对高校嵌入式教学和实验科研的平台。
图11硬件开发环境
S3C2410X包含一个16/32bit的RISC的CPU内核,独立的指令和数据的缓存,勇于虚拟内存管理的MMU单元,LCD控制器,非线性FALSH的引导单元,系统管理器,三个通道的一部串口,四个通道的DMA,四个通道的带脉宽调制的定时器,输入输出端口,是实施中单元,带有触摸屏接口的八个通道的ADC,IIC总线接口,IIS总线接口,USB的主机单元,USB的设备接口,SD卡和MMC卡接口,两个通道的SPI接口和锁相环时钟发生单元。
以下是GX_ARM9_2410EP试验箱的实物图(图11)。
1.2软件介绍
1.2.1Linux操作系统
GNU交叉编译工具
2.95.2:
用来编译vivi
3.3.2和3.4.4:
用来编译内核和程序
1.2.2目标板最后运行的环境
启动程序:
viviBootloader
内核:
linux-2.4.18
2内核移植
2.1建立开发环境
绝大多数的Linux软件开发都是以native方式进行的,即本机开发、调试,本机运行的方式。
这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机运行开发工具和调试工具。
通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。
交叉编译调试环境建立在主机上,对应的开发板叫做目标板。
具体如图12。
图21硬件图示
开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码,然后把可执行文件下载到目标机上运行。
调试时的方法很多,可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器所提供的支持做出选择。
宿主机和目标板的处理器一半都不相同,宿主机为Intel处理器,而目标机为SAMSUNGS3C2410,GNU编译器提供这样的功能,在编译器编译时可以选择开发所需的宿主机和目标机从而建立开发环境。
2.2配置和编译vivibootloader
2.2.1介绍vivi
Vivi是MIZI公司提供的一种可以支持NandFlash启动的ARMlinuxbootloader。
本试验仪采用的ARM9处理器S3C2410支持Nandflash启动,采用vivi作为bootloader,可以直接采用Nandflash启动。
2.2.2具体操作
进入linux系统,打开命令框图,如图2-2。
图22命令框
进入工作目录,在黑点上敲入命令:
cd/s3c2410_linux/Experiment
敲完后,黑点左边的字符串从[root@linux9root]#变成[root@linux9Experiment]#,接下来的同样的命令都是表示进入某个文件,root相应的变成某个根文件名。
解压netvivi:
tarzxvfnetvivi.tar.gz
进入Bootloaderv1:
cd/s3c2410_linux/Experiment/Bootloaderv1/Bootloader
清楚以前编译残留的中间件:
makeclean
清楚后,命令框出现如下的信息:
配置vivi:
makemenuconfig
输入后会进入下面的画面,但是这次实验前,老师已经帮我们配置好,所以无需再配置。
如图2-3。
图23vivi配置画面
编译vivi:
make
回车后即完成vivibootloader的配置和编译。
2.3编译linux内核
一下步骤与以上编译vivi步骤的含义一样。
进入工作目录:
进入内核文件:
cd/s3c2410_linux/Experiment/linux-2.4.18
编译依赖关系:
makedep
裁剪内核:
编译内核镜像:
makezImage
2.4制作文件系统
解压文件系统:
tarzxvfroot_china.yaffs.tar.gz
2.5烧写内核
2.5.1硬件准备
系统连线请注意,将