基于FPGA的uClinux系统移植及实现web-server[1]
最近一直在做niosII上的操作系统,最终实现web-server.
将整个过程与大家分享一下.
主要有以下几个部分,
1>.NIOS2 IDE下实现 uClinux 的嵌入,以及相关软,硬件设计
(红色飓风RC2-1C6, Microtronix Nios II Linux Distribution v1.4).
2>.Linux系统(CentOS5.3)下实现uClinux(2.6.26)的嵌入,
操作流程.
3>.uclinux DM9000a的驱动配置,调试.
4>.uclinux SPI方式 SD卡的驱动配置,调试.
5>.uclinux web-server的实现
一.NIOS2 IDE下实现 uClinux 的嵌入
引言:
1.为什么要在CPU里运行操作系统?
简单的说,
就像PC上使用Windows操作系统一样,
它负责底层的东西,如各种硬件接口,内存管理,资源分配等等,没有操作系统,是不可能完成这么复杂的功能的.
使用操作系统的好处主要有:
(1)操作系统提供库函数、底层驱动程序、工具包等,方便用户开发应用程序.
(2)操作系统能有效管理内存,分配系统资源,而不用用户操心.
(3)操作系统能够把硬件虚拟化,使开发人员避免编写复杂的驱动程序.
2.uClinux还是uC/OS?
这个看实际情况而定,两个都是比较常用,免费且公开源码的嵌入式操作系统.
比较如下:
uC/OS:
适合小型控制系统,具有执行效率高,占用空间小,实时性能优良和可扩展性强等特点,最小内核可编译至2k.
使用nios时,用FPGA上的on-chip-memory就能运行,且Nios IDE下已经集成了uC/OS,可直接使用.
uClinux:
继承了标准Linux的优良特性,针对嵌入式处理器的特点设计的一种操作系统,具有内嵌网络协议,支持多种文件系统,
可以直接使用linux下的许多资源,相应的驱动也较多,其编译后目标文件可控制在几百K量级.
一般要使用SRAM或SDRAM来运行.
由于开发板上硬件资源较丰富,也为方便支持更多的设备,所以选择嵌入uClinux.
3.在NIOS中嵌入uClinux的方法:
两种方法,一种是在nios IDE下完成,另一种是在linux下安装.
分别介绍:
(1).IDE
在Windows下,使用Microtronix公司为Nios2专门开发的uClinux工具包--Microtronix Nios II Linux Distribution v1.4.
安装后,以nios IDE的插件形式使用.
优点:不需要复杂的移植过程,对于不熟悉linux使用的人,
较为方便.
缺点:不能让使用者对操作,编译过程有一个深入的了解,不利于后续开发,同时驱动较少.
(2).Linux
通用的方法,在Linux操作系统下建立交叉编译环境,进行内核的配置,编译,程序的开发等.
这种方法适用于所有的嵌入式设备的系统移植,具有广泛性.
可以直接安装Linux系统或是在虚拟机(VMware)下安装Linux操作系统.
相比第一种方法,安装过程是比较复杂,但后续使用过程中会比较顺利.
最主要的是Microtronix's Distribution v1.4,内核版本为Linux 2.6.11,已经很长时间没有更新了.
且它的库函数和应用程序都不是很全.
我们采用uClinux-dist,内核版本为较新的2.6.26,意味着更多的驱动,更少的Bug,并且加入了EPCS,VGA,PS/2,Altera SPI等新的驱动.
步骤已经整理好文档,供大家下载.
http://www.fpgadev.com/down_view.asp?id=63