欢迎来到天天文库
浏览记录
ID:40572503
大小:115.00 KB
页数:4页
时间:2019-08-04
《uClinux在NiosII嵌入式平台上的移植研究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、uClinux在NiosII嵌入式平台上的移植研究 1.NiosII嵌入式处理器广告插播信息维库最新热卖芯片:74HCT244DUPC8106T-E3GL386SPW20N60C3EPM5032PC-20LX8385-00CDDOP27FJACS4025SMPC603RRX200LCXC4008E-2PQ208C NiosII是运行在FPGA上的五级流水线、单指令的RISC处理器,它专门针对Altera的可编程逻辑器件及片上可编程的设计思想做了相应的优化。作为一种可配置的精减的RISC处理器,它可以与用户自定义逻辑结合构成SOPC系统,并下载到Altera的可编程器件中。
2、32位的NiosII软核,结合外部闪存以及大容量存储器,可以构成一个功能强大的32位嵌入式处理器系统。此外,利用Altera提供的IDE(Integrateddevelopmentenvironment)开发工具可以方便的在调试模式下调试处理器,提高开发的速度。 作者使用CycloneII版NiosII应用开发板NIOS-DEVKIT-2C35作为移植实现的平台,开发板主要包括CycloneIIEP2C35器件、EPM7128AECPLD配置控制逻辑、存储器、串行配置连接器、FPGA和CPLD的JTAG接口等。 2.移植 2.1.uClinux嵌入式操作系统 uCli
3、nux是Linux的一个嵌入式版本,它经过小型化改造,形成了一个高度优化、代码紧凑的嵌入式Linux,并保留了Linux的大多数优点。最新的2.6版本在内核主体中加入了提高中断性能和调度响应时间的改进,其中有三个最显著的改进:采用可抢占内核、更加有效的调度算法以及同步性的提高。 2.1.1.uClinux操作系统的移植 uClinux源代码绝大部分都是使用的C语言,只有那些直接与处理其硬件相关的代码如开关CPU中断等操作才采用汇编语言编写,因此uClinux具有很好的移植性。一般来说,uClinux的移植大致分为三类: 1)结构层次的移植。如果待移植的处理器结构不同于任
4、何已经支持的处理器结构,则需要修改linux/arch目录下的相关处理器结构的文件。uClinux内核代码的大部分是独立于处理器和其体系结构的,但是其最底层的代码也是特定于各个系统的。他们的中断处理上下文、内存维护、任务上下文和初始化过程都是独特的。对一个新型的体系,其下层程序可以模仿与其相似的体系程序编写。 2)平台层次的移植。待移植处理器是某种uClinux已支持体系的分支处理器,即如果待移植的处理器是基于NiosII内核的,而NiosII内核已经被uClinux支持,则需要在相关体系结构目录platform下建立相应目录并编写相应代码,这些代码主要是跟踪程序(实现用户
5、程序到内核函数的接口等功能)、中断控制调度程序和内存初始化程序等。 3)板级移植。如果所用处理器(如CycloneII版本系列)已经被uClinux支持的话,就只需要板级移植了。板级移植需要修改或添加linux/arch/Nios2nommu/scripts目录中的文件,该目录中主要是与具体硬件平台相关的配置,可以利用NiosII自带的SOPCBuilder软件生成具体平台对应的配置文件。 对于uClinux已经支持的硬件架构,移植的过程相对较为简单,主要考虑修改与硬件开发平台相关的具体因素,如内存大小、外围设备的配置等。一般现在做的大部分移植都是平台层次移植和板级移植。
6、 2.1.2.initramfs文件系统 作者使用的uClinux2.6操作系统中,用initramfs文件系统取代了以前的romfs文件系统。 1.romfs文件系统。romfs文件系统是在uClinux2.4以及之前版本广泛用到的文件系统,这种文件系统相对于一般的ext2/ext3文件系统要求更少的空间。romfs文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟RAM盘的方法进行处理(RAM盘采用ext2/ext3文件系统)。 2.initramfs文件系统[2]。initramfs是在2.5版本内核中引入的技术,它的基本思想是:在内核镜像中附加一个
7、cpio包,cpio包中包含了一个小型的文件系统,当内核启动时,内核将cpio包解开,并且将其中包含的文件系统作为初始的根文件系统,内核中的一部分初始化代码会放到这个文件系统中作为用户层进程来执行。这样带来的明显的好处是精简了内核的初始化代码,例如寻找真正的启动盘、启动时的网络安装、ACPI的安装等,这些代码都可以从内核中移出,把它们都转移到用户空间完成,这样使得开发者在用户层就可以定制自己的启动过程,而不需要去修改内核代码,使定制启动过程变得更加容易。 2.2.开发环境的建立 1.建立交叉编译环境
此文档下载收益归作者所有