Linux内核的嵌入式系统应用.docx

上传人:安*** 文档编号:17789719 上传时间:2022-05-26 格式:DOCX 页数:10 大小:21.60KB
返回 下载 相关 举报
Linux内核的嵌入式系统应用.docx_第1页
第1页 / 共10页
Linux内核的嵌入式系统应用.docx_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《Linux内核的嵌入式系统应用.docx》由会员分享,可在线阅读,更多相关《Linux内核的嵌入式系统应用.docx(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Linux内核的嵌入式系统应用caojing导语:在数字信息技术和网络技术高速开展的后PC时代,嵌入式技术越来越与人们的生活严密结合。随着多媒体技术与通讯技术相结合的信息技术的快速开展和互联网的广泛应用,PC时代也过渡到了后PC时代。在数字信息技术和网络技术高速开展的后PC时代,嵌入式技术越来越与人们的生活严密结合。操纵系统为用户使用计算机及其外部设备提供最根本的接口程序,治理计算机上的资源。随着应用领域的扩大,为了适应不同的应用场合,考虑到系统的灵敏性、可伸缩性以及可裁剪性,一种以应用为中心、以计算机技术为根底、软硬件可裁剪、适应应用系统对功能、可靠性、本钱、体积、功耗要求严格的专用计算机系

2、统嵌入式操纵系统随之延生。Linux操纵系统是一种性能优良、源码公开且被广泛应用的免费操纵系统,由于其体积小、可裁减、运行速度高、良好的网络性能等优点,可以作为嵌入式操纵系统。随着2.6内核的发布,Linux向现有主流的RTOS提供商在嵌入式系统市场提出了宏大挑战,例如VxWorks和WinCE,具有很多新特性,将成为更优秀的嵌入式操纵系统。Linux的低本钱和开放性,为其在嵌入式系统领域的应用营造了肥沃的土壤。本文着重介绍Linux2.6内核的新特性及其嵌入式应用中的上风,并将其移植到嵌入式平台中,成功支持H.264编解码多媒体系统。1Linux2.6内核针对嵌入式开发显著特点实时可靠性是嵌

3、入式应用较为普遍的要求,尽管Linux2.6并不是一个真正的实时操纵系统,但其改良的特性可以知足响应需求。Linux2.6已经在内核主体中参加了进步中断性能和调度响应时间的改良,其中有三个最显著的改良:采用可抢占内核、更加有效的调度算法以及同步性的进步4。在企业效劳器以及嵌入式系统应用领域,Linux2.6都是一个宏大的进步。在嵌入式领域,Linux2.6除了进步其实时性能,系统的移植更加方便,同时添加了新的体系构造和处理器类型包括对没有硬件控制内存治理方案的MMU-less系统的支持,可以支持大容量内存模型、微控制器,同时还改善了I/O子系统,增添更多的多媒体应用功能4。1.1可抢占内核在先

4、前的内核版本中包括2.4内核不允许抢占以核心态运行的任务包括通过系统调用进入内核形式的用户任务,只能等待它们自己主动释放CPU。这样必然导致一些重要任务延时以等待系统调用完毕。一个内核任务可以被抢占,为的是让重要的用户应用程序可以继续运行。这样做最主要的上风是极大地增强系统的用户交互性。2.6内核并不是真正的RTOSRealTimeOperationSystem,其在内核代码中插入了抢占点,允许调度程序中止当前进程而调用更高优先级的进程,通过对抢占点的测试防止不公道的系统调用延时。2.6内核在一定程度上是可抢占的,比2.4内核具备更好的响应性。但也不是所有的内核代码段都可以被抢占,可以锁定内核

5、代码的关键局部,确保CPU的数据构造和状态始终受到保护而不被抢占。软件需要知足最终时间限制与虚拟内存恳求页面调度之间是互相矛盾的。慢速的页错误处理将会破坏系统的实时响应性,而2.6内核可以编译无虚拟内存系统防止这个问题,这是解决问题的关键,但要求软件设计者有足够的内存来保证任务的执行。1.2有效的调度程序2.6版本的Linux内核使用了由IngoMolnar开发的新的调度器算法,称为O1算法,如图1所示。它在高负载情况下执行得极其出色,并且当有很多处理器并行时也可以很好地扩展2。过去的调度程序需要查找整个readytask队列,并且计算它们的重要性以决定下一步调用的task,需要的时间随tas

6、k数目而改变。O1算法那么不再每次扫描所有的任务,当task停当时被放入一个活动队列中,调度程序每次从中调度合适的task,因此每次调度都是一个固定的时间。任务运行时分配一个时间片,当时间片完毕,该任务将放弃处理器并根据其优先级转到过期队列中。活动队列中任务全部调度完毕后,两个队列指针互换,过期队列成为当前队列,调度程序继续以简单的算法调度当前队列中的任务。这在多处理器的情况更能进步SMP的效率,平衡处理器的负载,防止进程在处理器间的跳跃。图1O1调度算法1.3同步原型与分享内存多进程应用程序需要分享内存和外设资源,为防止竞争采用了互斥的方法保证资源在同一时刻只被一个任务访问。Linux内核用

7、一个系统调用来决定一个线程阻塞或者是继续执行来实现互斥,在线程继续执行时,这个费时的系统调用就没有必要了。Linux2.6所支持的FastUser-SpaceMutexes可以从用户空间检测是不是需要阻塞线程,只在需要时执行系统调用终止线程。它同样采用调度优先级来确定将要执行的进程4。多处理器嵌入式系统各处理器之间需要分享内存,对称多处理技术对内存访问采用同等优先级,在很大程度上限制了系统的可量测性和处理效率。Linux2.6那么提供了新的治理方法NUMANonUniformMemoryAccess。NUMA根据处理器和内存的拓扑布局,在发生内存竞争时,给予不同处理器不同级别权限以解决内存抢占

8、瓶颈,进步吞吐量。1.4POSIX线程及NPTL新的线程模型基于一个1:1的线程模型一个内核线程对应一个用户线程,包括内核对新的NPTLNativePOSIXThreadingLibrary的支持,这是对以前内核线程方法的明显改良。2.6内核同时还提供POSIXsignals和POSIXhigh-resolutiontimers。POSIXsignals不会丧失,并且可以携带线程间或者处理器间的通讯信息。嵌入式系统要求系统按时间表执行任务,POSIXtimer可以提供1kHz的触发器使这一切变得简单,进而可以有效地控制进度。1.5微控制器的支持Linux2.6内核参加了多种微控制器的支持。无M

9、MU的处理器以前只能利用一些改良的分支版本,如uClinux,而2.6内核已经将其整合进了新的内核中,开场支持多种流行的无MMU微控制器,如Dragonball、ColdFire、HitachiH8/300。Linux在无MMU控制器上仍然支持多任务处理,但没有内存保护功能。同时也参加了很多流行的控制器的支持,如S3C2410等。1.6面向应用嵌入式应用有用户定制的特点,硬件设计都针对特定应用开发,这给系统带来对非标准化设计支持的问题如IRQ的治理。为了更好地实现,可以采用部件化的操纵系统。Linux2.6采用的子系统架构将功能模块化,可以定制而对其他局部影响最小。同时Linux2.6提供了多

10、种新技术的支持以实现各种应用开发,如AdvancedLinuxSoundArchitectureALSA和Video4Linux等,对多媒体信息处理更加方便;对USB2.0的支持,提供更高速的传输,增加蓝牙无线接口、音频数据链接和面向链接的数据传输L2CAP,知足短间隔的无线连接的需要;而且在2.6内核中还可以配置成无输入和显示的纯粹无用户接口系统。2应用研究在S3C2410开发板上移植嵌入式Linux2.6.11.7内核系统,应用于构建H.264多媒体系统。2.1建立穿插编译环境在RedHat9的主机上进展内核移植开发,首先需要建立穿插编译环境。由于2.6内核中采用了一些新的特性和指令,需要

11、采用较新的工具集,采用binutils-2.15、gcc-3.4.2、glibc-2.2.5、linux-2.6.8、glibc-linuxthreads-2.2.5来建立穿插编译工具链,建立之后将工具链途径参加系统途径$PATH中。2.2内核修改Linux2.6.11.7内核参加了对S3C2410芯片的支持,不再需要任何补丁文件。修改内核源码中Makefile的穿插编译选项ARCH=arm,CROSS_COMPILE=arm-linux-。针对硬件配置,需要在arch/arm/mach-s3c2410/devs.c或smdk2410.c中添加FLASH的分区信息s3c_nand_info,如

12、表1。然后在s3c_device_nand中增加.dev=.platform_data=&s3c_nand_info,在arch/arm/mach-s3c2410/mach-smdk2410.c中的_initdata局部增加&s3c_device_nand,使内核在启动时初始化NANDFLASH信息。2.3内核编译加载对内核进展适当的配置是一个量体裁衣的经过。由于2.6内核会根据本地系统配置进展初始设置,可以导入内核源码默认s3c2410的配置文件,方便加载内核根本配置,然后再选择所需选项。对MTD配置选择支持MTD设备驱动以及NANDFLASH驱动;选择支持要用到的各类文件系统DEVFS、T

13、MPFS、CRAMFS、YAFFS、EXT2、NFS以及网络设备和协议,本系统加载了网络芯片CS8900以及USB支持;在H.264多媒体系统中还需要加载Framebuffer以支持LCD显示功能。使用穿插编译工具编译内核源码后,会在arch/arm/boot/下生成名为zImage的内核映像,在Bootloader的命令提示形式下使用下载命令完成内核加载到开发板的存储设备FLASH中。编译经过相对以前版本的编译经过,2.6内核编译有所简化:makemrpropermakemenuconfig字符界面,或用makexconfig图形界面,但需要Qt库的支持,而makegconfig那么需要GT

14、K库的支持makemakebzImage2.4文件系统Linux采用文件系统组织系统中的文件和设备,为设备和用户程序提供统一接口。Linux支持多种文件系统,本系统使用CRAMFS格式的只读根文件系统,而将FLASH中的USER区使用支持可读写的YAFFS文件系统格式,方便添加自己的应用程序。在根文件系统中,为保护系统的根本设置不被更改,采用CRAMFS格式。采用DEVFS来实现根本设备的建立挂载,同时使用BusyBox也是一个缩小根文件系统的方法,提供了系统的根本指令;还需要建立一些必备的目录,添加所需配置文件,如fstab、inittab等;还有一个重要的工作就是添加系统应用必备的动态函数

15、库。使用生成工具mkcramfs将整个根文件目录里的内容制作成映像文件。mkcramfsrootfsrootfs.ramfsYAFFS文件系统格式的支持需要将驱动参加到内核代码树下fs/yaffs/,修改内核配置文件,就可以在内核编译中加载对该文件系统的支持。使用mkyaffs工具将NANDFLASH分区格式化为YAFFS分区,将mkyaffsimage生成的应用程序镜像烧写进YAFFS分区,在启动时通过写入fstab自动加载YAFFS分区即可。2.5网络设备驱动系统中采用CS8900A的10M网络芯片,它使用S3C2410的nGCS3和IRQ_EINT9,相应修改linux/arch/arm

16、/mach-s3c2410/irq.c,并在mach-smdk2410.c的smdk2410_iodesc中增加SMDK2410_ETH_IO,S3C2410_CS2,SZ_1M,MT_DEVICE,内核源码中参加芯片的驱动程序drivers/net/arm/cs8900.h和cs8900.c,并且配置网络设备驱动的Makefile和Kconfig文件,参加CS8900A的配置选项,这样可以在内核编译时加载网络设备的驱动。在Linux2.6应用的同时,也要看到其与以前版本内核比拟存在的一些问题。在内核的编译时间、内核镜像大小、内核占用RAM空间大小、系统启动时间相对Linux2.4而言都存在不同程度的缺乏,但在硬件条件日益进步的现今可以承受,而且一局部也是由于功能加强必然带来的。固然Linux并非一个真正的实时操纵系统,但2.6内核的改良可以知足大局部的应用需求,所以Linux2.6内核将会在嵌入式系统领域大展身手。0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com