移植Linux内核至DSP平台方案研究.pdf
- 文档编号:14660120
- 上传时间:2023-06-25
- 格式:PDF
- 页数:3
- 大小:119.81KB
移植Linux内核至DSP平台方案研究.pdf
《移植Linux内核至DSP平台方案研究.pdf》由会员分享,可在线阅读,更多相关《移植Linux内核至DSP平台方案研究.pdf(3页珍藏版)》请在冰点文库上搜索。
收稿日期:
2003-07-06作者简介:
张力(1976),男,四川乐山人,硕士研究生,研究方向为嵌入式系统与DSP技术。
移植Linux内核至DSP平台方案研究张力,王建英(西南交通大学计算机与通信工程学院,四川成都610031)摘要:
DSP操作系统是实现复杂DSP应用的关键技术。
Linux是一种免费的操作系统,很适合嵌入式应用。
文章针对DSP应用的特点,分析了如何将Linux内核加以裁减、改造,使其适合DSP应用,形成通用的DSP操作系统。
移植后的Lin-ux内核,大小可以控制在200kB以下,减小了DSP平台上应用软件的开发难度,大大降低了DSP系统的开发成本。
关键词:
Linux内核;数字信号处理;嵌入式系统中图分类号:
TP316.2文献标识码:
A文章编号:
1005-3751(2004)01-0069-03ResearchonPortingLinuxtoDSPPlatformZHANGLi,WANGJian-ying(SchoolofComputerandComm.,SouthwestJiaotongUniversity,Chengdu610031,China)Abstract:
DSPRTOSisanimportantpartofcomplexDSPapplications.Asallknown,Linuxisafreesoftwareandagoodchoiceinembed-dedsystems.ThispaperpresentshowtoreduceLinuxkernelandbuildageneralDSPRTOSforDSPapplications.UsingthisportedLinuxkernelonDSPplatformcanmakeyourworkmoreeasilyandreducethecostforDSPdevelopment.Keywords:
Linuxkernel;DSP;embeddedsystem0引言DSP技术已经广泛地应用于通信、控制、测试/测量、电子娱乐等领域。
伴随其应用领域的扩大,应用的复杂性也在增加。
采用对芯片直接编程的方法难以适应复杂应用的要求,开发DSP操作系统势在必行。
现在的DSP操作系统按支持的平台范围可分为专用操作系统和通用操作系统。
专用操作系统一般由DSP芯片的开发商自己开发,只支持该公司的芯片,如TI公司的DSP/BIOS。
在这种系统上开发的软件,运行效率高,但移植性很差。
另一种是通用的DSP操作系统,它们支持广泛的DSP芯片类型,在其上开发的软件可移植性好,但是这种操作系统的费用昂贵,如风河(WINDRIVER)公司的VSPWoks、EneaOSESystemAB公司的OSE操作系统。
众所周知,Linux是一种免费的操作系统。
它开放源代码,内核功能强大(支持多任务、多线程),大小和功能都可定制,具有良好的开发环境,软件资源丰富,系统实时性较好,非常适合嵌入式的应用。
将Linux移植到DSP芯片上,形成嵌入式的DSP操作系统,是一种低成本、高效率的DSP开发解决方案。
1Linux内核结构1.1Linux内核的组成Linux内核采用单块结构,由进程调度、内存管理、虚拟文件系统、网络接口、进程间通信5个子系统组成1。
(1)进程调度控制进程对CPU的访问。
Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。
(2)内存管理采用基于分页存储管理的虚拟存储器技术。
任务运行时,只将其部分页面调入内存运行,其余部分则暂时存放在外部存储器上(一般为硬盘)。
只有当需要访问的页面不在内存中时,才将它们调入内存(此时有可能要将内存中的部分页面调出至外部存储器,称为页面置换),同时修改页表。
多个任务同时运行时,进程切换的重要部分就是完成对进程页表的切换。
Linux的存储管理技术同时支持对进程存储空间的保护,允许多个进程安全地共享主内存区域。
(3)虚拟文件系统(VFS)使用逻辑文件系统和设备驱动程序两个概念层,隐藏了各种逻辑文件系统和硬件设备的具体细节,支持多种逻辑文件系统和物理设备。
逻辑文件系统指Linux所支持的文件系统,如ext2,fat等;设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。
(4)网络接口提供了对各种网络协议和多种网络硬件的支持。
它将网络设备和协议的实现细节抽象化,使用户不需要知道目前使用的网络设备和网络协议。
第14卷第1期2004年1月微机发展MicrocomputerDevelopmentVol.14No.1Jan.2004(5)进程间通信(IPC)支持多种进程间通信机制,信号和管道是最基本的两种。
上述五个子系统相互依赖。
进程调度是核心,其它四个子系统需要挂起和恢复进程的运行都必须通过进程调度程序来完成。
其他子系统也很重要:
进程调度在启动进程时需要内存管理子系统进行内存处理;进程间通信系统需要内存管理实现进程间的内存共享;虚拟文件系统需要使用网络接口实现网络文件系统,而且使用内存管理子系统实现ramdisk设备;内存管理需要使用虚拟文件系统实现内存的交换。
5个子系统的关系如图1所示,箭头表示资源依赖的对象。
图1Linux内核的组成1.2Linux内核的层次Linux内核的层次十分清晰,如图2所示。
内核的5个子系统都通过硬件抽象层(HardwareAbstractLayer,HAL)访问硬件,这使得Linux移植到不同的硬件平台非常容易,只需改动硬件抽象层中与硬件相关的代码即可。
图2Linux内核的硬件抽象层2移植Linux系统至DSP平台Linux的内核不是针对DSP平台设计的,目前也不支持DSP芯片。
移植的工作主要包括两方面:
(1)对内核进行裁减、改造,使其适合DSP应用;
(2)重写内核中与平台相关的代码。
2.1要考虑的因素*DSP芯片主要应用在实时性强、数据量大、计算密集的领域2,它不适合处理跳转指令较多的程序;*DSP应用采用的存储设备种类少,一般为RAM/ROM/FLASH,存储空间要求低;*Linux内核本身不支持DSP平台;*Linux内核采用单块结构,进程调度算法采用基于优先级的调度算法,可以保证对实时任务较好的支持,但它不能应用于硬实时任务;*对内核结构和运行体制的改动要考虑到兼容性的问题。
2.2总体方案Linux内核最初并不是为嵌入式应用而设计的,它采用单块结构,在移植时须对内核进行相应的裁减、改造以适应DSP应用。
改造主要涉及到进程调度、内存管理、文件系统等方面。
进程调度是Linux内核的核心,它使用基于简单优先权的调度算法来选择下一个占用CPU的进程。
优先权的确定和多个因素有关,其中一个重要的因素就是进程是否为实时进程,实时进程的优先权高于普通进程。
同为实时进程,采用FIFO(先来先服务调度)和RR(时间片轮转法)进行调度。
虽然调度程序保证了实时进程可以优先获得CPU资源,甚至抢先运行(preempt),但是它不能满足硬实时任务的需要。
RT-Linux提供了一种改进方案,它建立了一个直接面对处理器的小内核,此内核独立于原Linux的标准内核,并且拥有自己的调度程序。
原Linux内核在这个小内核的基础上以最低的优先权与其它实时任务分享处理器,由此保证对硬实时任务的支持。
Linux内核的存储器管理子系统是针对有内存管理单元的处理器设计的,它采用了基于分页存储管理的虚拟存储器技术。
虚拟地址被送到内存管理单元(MMU),把虚拟地址映射为物理地址。
DSP芯片一般不包含内存管理单元,而且DSP应用对存储空间的要求也不高,采用虚拟存储技术既复杂效率又低。
考虑到兼容性问题,保留Linux的分页存储管理方案。
精简后的存储器管理子系统采用分页存储管理方案,不支持虚拟内存,不提供对进程存储空间的保护。
程序执行时,必须一次将其全部页面调入内存,程序设计人员必须要考虑到程序所需存储空间的大小及实际存储空间的大小,避免出现存储空间不足的情况。
Linux内核采用虚拟文件系统(VFS),可以支持十几种不同的逻辑文件系统。
DSP应用的存储设备一般采用RAM/ROM/FLASH,存储空间也不大(一般在1兆以内),数据管理的复杂度小。
在DSP平台上采用VFS,占用存储空间大(约230kB左右),执行效率低。
改进的方法有两种。
其一是采用嵌入式文件系统,它本身占用的存储空间较小,另外内核支持该文件系统所需的代码更少,可以大大减小Linux内核文件系统占用的存储空间。
如ROMFS,一种非常小的只读文件系统;RAMFS文件系统,用于将文件暂时保持在主存中;JFFS文件系统,用于将文件保存在FLASH中。
另一种方法是将文件系统作为一#70#微机发展第14卷个存储设备的驱动程序来实现。
进行数据读/写时,通过设备驱动程序直接访问存储设备中的数据。
较前一种方法,该方法所需的存储空间更小,适用于数据管理简单的应用。
除了以上谈到的三方面外,还有一些问题需要考虑。
为了在目标系统上引导Linux内核,必须要有一个引导程序。
内核引导成功后,要加载系统初始化进程。
另外,内核中还必须包含相应的设备驱动程序,如DSP芯片自带的串口的驱动程序,它们和具体的DSP平台相关。
一个完整的嵌入式Linux系统至少包括以下部分3:
*引导程序:
用于在目标系统上引导Linux内核;*Linux内核:
由内存管理、进程管理和定时服务构成;*初始化进程;*硬件驱动程序;*一个或多个进程,提供所需功能。
在某些应用中,你可能需要加上:
a.一个文件系统;b.TCP/IP网络堆栈。
2.3代码移植Linux内核不支持DSP平台,要完成内核移植,必须修改、编写内核中与平台相关的代码。
Linux内核中与平台相关的代码都放在arch目录下,arch又依据不同平台,分为不同目录(以后简称为arch/xxx目录)。
如目录arch/arm表示内核源代码中与arm平台相关的代码。
arch/xxx目录又至少包含三个子目录:
kernel,lib和mm。
kernel目录存放内核中与平台相关的代码,如信号量的实现等;lib目录存放与平台相关的通用函数的实现;mm目录中存放与平台相关的内存管理代码4。
除了这三个目录外,arch/xxx目录下还包括其它一些目录,如boot目录存放在该平台上启动内核所实用的程序的源代码。
从arch/xxx目录下,可以找出Linux内核中与特定的平台相关的代码,从而在向DSP平台移植时,就可以参照着写出与DSP平台相关的Linux内核源代码。
2.4移植所需环境Linux内核移植环境至少包括:
*安装有Linux操作系统的PC机一台;*一套DSP目标板;*一个交叉平台的编译器,用于在PC机上编译生成目标板上的可执行代码。
目前,Linux平台上最好的交叉平台编译器是GCC,其最新版本已经支持TI公司的TMS320C3x、TMS320C4x浮点运算DSP处理器;*目标平台上的编译链接库。
3结束语由于Linux内核本身不支持DSP平台,故移植工作量很大。
内核中与平台相关的代码:
包括约2万行的C语言代码和2千行的汇编语句,都必须针对DSP平台重写。
若只保留Linux内核的进程调度、进程间通信,内存分配采用分页存储管理,文件系统作为一个驱动程序实现,内核大小可以控制在200kB以下。
移植成功后,可以有效利用GNULinux免费的软件资源,减小DSP系统的开发难度,从而大幅度地降低开发成本。
参考文献:
1BovetDP,CesatiM.UnderstandingtheLinuxkernelM.CA:
O.Reilly&Associates,Inc.2000.2王念旭.DSP基础与应用系统设计M.北京:
北京航空航天大学出版社,2001.3YaghmourK.BuildingEmbeddedLinuxSystemsM.CA:
O.Reilly&Associates,Inc.2003.4毛德操,胡希明.LINUX内核源代码情景分析(上下册)M.杭州:
浙江大学出版社,2001.(上接第68页)
(1)XMLSchema没有规定简洁的文档规则。
(2)XMLSchema不允许开发人员借助参数实体专门化。
(3)如果文档由文本字符串构成,XMLSchema就会太复杂。
(4)它是用XML编写的,因此有XML的扩充性,支持名字空间。
(5)提供了较强大的数据类型化能力,提供一个广泛且可扩展的类及类型系统。
(6)支持混合内容建模。
3结束语尽管文中没有将XMLSchema与DTD作一个完全的比较,然而却已将它们之间的主要不同作了详细的说明。
XMLSchema和DTD是目前应用最广泛的两种模式,两者都有各自的最佳应用点,然而也有一些局限。
由于XMLSchema是专为检验XML文档而制定的,因此,它比DTD具有更大的优势,已逐渐成为模式的主流;但作为一种最简单的XML模式,XMLDTD也还将会在一段时间内发挥作用。
参考文献:
1WalmsleyP.XMLSchema权威教程M.陈维军,乔安平,英宇译1北京:
清华大学出版社,2003.2ValentineC,DykesL,TittelE.XMLSchema数据库编程指南M.毛选,魏海萍等译1北京:
电子工业出版社,2002.3BirbeckM.XML高级编程M1裴剑锋,高伟,徐继伟等译1北京:
机械工业出版社,2002.#71#第1期张力等:
移植Linux内核至DSP平台方案研究
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 移植 Linux 内核 DSP 平台 方案 研究