当前位置:文档之家› uclinux移植教程

uclinux移植教程

学习开发套件V3.0中嵌入Uclinux的步骤和方法在学习开发套件V3.0中嵌入Uclinux的步骤和方法,硬件系统为EP1C6,2Mflash,8Msdram.开发环境:SOPC学习开发套件V3.0,型号EP1C6。

QII5.1+SP2,NiosII IDE5.1+SP1。

一 .安装nios2linux开发包nios2linux-1.4二 .建立硬件系统1. QII中建一工程linux_nios,并添加NIOSII CPU,QII工程和平常的建立并没有什么区别,只要得加上flash和sdram,因为这里只是对linux的简单调试,所以SOPC中只添加LED和UART等几个简单外设。

如下图:注意为防止不必要的麻烦,这里尽量使用默认名字。

如果想用USB连接电脑,在QII中把串口连接到USB线的IO管脚上即可。

我们的工程中是两个口都接了,使用串口或者USB口都行。

三.建立软件环境打开NIOSII IDE3.1 建立linux内核file-> new-> project 后如下图:注意:在安装Microtronix_uclinux_nios2开发包后在IDE中分增加出如上图的Microtronix NiosII选项如果没有可以按下面方法解决:1)、打开cmd,在 开始->运行 那里输入cmd2)、cd到你的NiosII的工作目录下面,我的NiosII安装在D盘,如下:3)、在这里输入命令nios2-ide.exe –clean,进入NiosII IDE的clean模式,选择workspace:这是在New->Other那里你就可以看到那个linux的目录项了。

关了IDE窗口和cmd窗口,这样就可以正常看到Microtronix_linux了。

3.2 输入内核名字按next:finish完成四. 构建内核:4.1 右键内核名,在弹出菜单中选择Configure Kernel如下:注意:如果右键菜单中没有Configure Kernel项,请在IDE菜单Windows->show view-> navigator, 在navigator窗口下使用右键便可。

后进入如下界面:因为flash只有2M因此构造的内核应尽可能的小,其大小不能超过1M(对于8M的Flash大小不能超过2M)。

因此在这里要去掉没用到的选项:按空格键 取消或者选择General setup:processor type and features:这里选择的是Microtronix Cyclone board support,不是Altera在Device drivers除以下默认及保留串口外,其它都去掉Generic Driver Options --->Memory Technology Devices (MTD) --->Block devices --->串口位置及设置如下:Device drivers--ÆCharacter devices --->Serial drivers --->:注:如果Flash是intel公司生产的需要在Device Drivers>Memory Technology Device<MTD> RAM/ROM/Flash chip drivers 在这里选上support for intel/sharp flash chips。

默认情况是不支持intel公司的Flash。

AMD公司Flash:AM29系列。

Intel公司Flash:JS28F、E28F等。

设置完这里后其它便可使用默认,然后esc退出保存。

4.2 修改两个脚本文件D:\altera\kits\nios2_51\bin\eclipse\plugins\com.microtronix.nios2lin ux.kernel_1.4.0\linux-2.6.x\arch\nios2nommu\kernel\ vmlinux.lds.inc文件以及同目录下的vmlinux.lds.S文件 改成如下以符合我们的2Mflash: (注:如果是8M Flash不必修改,使用默认即可)在D:\altera\kits\nios2_51\bin\eclipse\plugins\com.microtronix.nios2lin ux.kernel_1.4.0\linux-2.6.x\drivers\mtd\maps\ 中找到microtronix.c文件,修改以下画线部分以及把BUSWIDTH 由2改为1(2表示16位总线,1表示8位总线,请根据开发板具体情况修改,V3.0实验板上的flash使用8位总线所以这里要改为1。

注表:开发板版本V2:16位,V3:8位,V4:16位,V5:8位。

以下的两个文件是内核文件和文件系统文件在Flash中的映射,如果是8M的flash 使用默认即可,如果不是8M可以根据具体情况设置),如下图:五..完成后编译内核:经过相当长时间的等待便可看到编译生成的内核vmlinux.bin二进制文件:六.用flash programer下载此内核到flash中的从0地址开始:七.建立文件系统:7.1 在IDE中 File->new->projectNext 输入名字:继续Next:NEXT:点击Install Minimal:Finish后有警告,不管,确定后完成。

7.2 编译此文件系统后生成romfs.bin文件,同上面烧写内核的方法,把此文件烧写到flash 中去,注意offset地址为:0x100000(注:对于8M的flash这里的偏移量为0x200000,偏移地址为多少是根据上面那两个根本文件中对flash的设置而定。

客户也可以根据自己的实际需要做修改)此图中我把romfs.bin文件拷到了C盘,所以file中是:c:\romfs.bin八.ok下载成功后,接上USB (或者串口),打开串口调试工具,按一下板子上的reset 键后可看到串口工具接收窗中显示如下信息:linux系统便启动成功了。

输入命令:ls bin九.建一个LED闪动程序。

9.1 在IDE中File->New->project:一路next到finish.9.2. 建一个C文件:在弹出的对话窗输入文件名:hello.c注意要加.c后缀:9.3 把…altera/kits/nios2/examples/software/linux/apps 目录下samples/hello 文件夹里的makefile复制到my_app工程下。

注意:makefile文件的选择是有讲究的。

具体请参阅:在目录..altera\kits\nios2_51\documents\linux\ 下的Linux Reference Guide.pdf 文档第19页。

在hello.c中输入以下程序:#include <stdio.h>main(){int i;char led=0x1;while(1){for(i=0;i<100000;i++);* (int*) 0x80202040=led; //0x80202040是led灯的地址led=~led;}}说明:其它外面地址在内核工程nios2_system.h中定义,如下图9.4 右键my_app工程:选择如下图:在弹出以下对话窗:点Ceate完成。

9.5.右键my_app工程:选择如下图:开始编译程序。

9.6 编译完成后没问题的话就可生成hello.exe运行文件:9.7.把生成的hello.exe文件复制到文件系统目录下的BIN文件夹,如下图:9.8.编译此文件系统:9.10.最后把生成的文件系统romfs.bin用flashprogramor下载到flash中。

方法和上面烧写文件系统到flash相同。

十.于是我们便完成了整个linux的移植和简单开发过程。

运行结果:插好USB线,打开串口调试工具,按一下reset:输入ls bin 回车。

输入hello 回车此时便可看到核心板上两个LED交替闪动。

linux系统移植uclinux到EP1C6的过程如下:(仅供参考)nios2linux-1.4开发包仅支持到QuartusII6.0版本,且一直没有更新,在使用QII更高版本时以上移植就行不通了,以下是传输的移植方法,适合与任何QII版本,但仅供参考,不保证肯定其正确性。

一、 首先我们用SOPC builder建立一个nios2的系统,在QuartusII里面分配好引脚和编译生成我们CPU核的工程。

其中的nios_c.ptf就是我们等会儿用来在linux下面生成我们这个cpu系统相关信息的文件。

二、 在linux系统下面,我用的是Feodra4+vmware5.0,其他的发行版本也可以的。

下面是操作的具体步骤:三、 以一般用户的身份进入linux,在系统目录下面用mkdir download命令建立一个叫做download的目录,去niosforum那里下载nios2linux-1.4.zip文件和build0411.zip文件(由Hippo提供),把这两个文件放在linux的~/download,用命令unzip build0411.zip 解压缩build0411.zip文件,里面有一些补丁和脚本文件,然后输入./build运行build这个脚本,如果你的网络不行的话可以自己修改这个脚本,把wget那些命令屏蔽掉,然后自己下载到download目录下面。

四、 运行完这个脚本之后在~/目录下有这些文件:在建立buildroot的时候有一些软件下载不了的可以自己先下载,然后放在~/download目录下面。

五、cd 到linux-2.6.x目录,把我们的编译工具的目录加到系统的命令路径里去,输入命令PATH=$PATH:~/buildroot/build_nios2/staging_dir/bin,或者在~/.bash_profile那里添加也可以的,设置完了可以用命令nios2-linux-uclibc-gcc –v来测试是否成功。

六、把我们第一步生成的project.ptf (project是你的nios2系统工程的名字)拷贝到~/linux-2.6.x,用命令: make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- hwselect SYSPTF=project.ptf生成与系统相关的头文件七、输入命令make ARCH=nios2nommu CROSS_COMPILE=nios2-linux-uclibc- menuconfig配置系统的内核:Device Drivers ---> Character devices ---> Serial drivers --->选择你的串口,我这里用的是jtag uart,如果你用的是一般的串口,你要选择Nios serial support,同时关闭下面的那个jtag uart。

相关主题