DIY_DE2移植uClinux

一、摘要

在DIY_DE2开发板上移植uClinux。

 

二、实验平台

1、虚拟机:VMWare

2、Linux系统:ubuntu10.04

3、Quartus II 6.0 + Nios II 6.0

 

三、软件准备

1、下载nios2gcc-20080203

http://www.niosftp.com/pub/gnutools/nios2gcc-20080203.tar.bz2 

或者

ftp://ftp.altera.com/outgoing/nios2gcc-20080203.tar.bz2 

或者

http://sopc.et.ntust.edu.tw/pub/gnutools/nios2gcc-20080203.tar.bz2 

或者

 ftp://sopc.et.ntust.edu.tw/pub/gnutools/nios2gcc-20080203.tar.bz2

2、下载nios2-linux-20100621

http://www.niosftp.com/pub/linux/nio...x-20100621.tar

或者

http://sopc.et.ntust.edu.tw/pub/linu...x-20100621.tar

或者

ftp://sopc.et.ntust.edu.tw/pub/linux...x-20100621.tar

  网上有人说在window操作系统下下载上述文件的时候可能会损坏软件,我这里就是在window下下载的,倒也没出什么问题。

  下载完毕,将nios2gcc-20080203tar.bz2和nios2-linux-20100621.tar放在共享文件夹LinuxShare下,即上篇博文中建立的共享文件夹。

 

四、配置交叉编译环境

1、获取root权限

  为了后面的方便,这里使用root权限,打开终端,输入指令

    sudo su

  输入登陆时候的密码,便获得了root权限。

2、将nios2gcc-20080203tar.bz2放在/usr/local/src目录下

  在ubuntu下,将nios2gcc-20080203.tar.bz2从共享文件夹copy到/usr/local/src目录下,在终端下输入如下命令:

    cp /mnt/hgfs/LinuxShare/nios2gcc-20080203.tar.bz2 /usr/local/src/nios2gcc-20080203.tar.bz2

3、解压nios2gcc-20080203.tar.bz2

  进入/usr/local/src目录

    cd /usr/local/src

  解压nios2gcc-20080203.tar.bz2

    tar jxvf nios2gcc-20080203.tar.bz2

  这样,就在usr/local/src下生成一个opt的目录,就是解压后的结果。

4、设置交叉gcc编译的路径

   对于Ubuntu的用户来说,开启终端是要重新加载profile这个文件,所以我们需要更改这个文件。打开profile文件,还是在usr/local/src路径下

    gedit ~/.profile

  加上cross gcc的路径,在最后面加上如下语句

    export PATH=$PATH:/usr/local/src/opt/nios2/bin

  如下图所示

  当更改profile文件之后,需要重新logout以及login,在这里,我们可以用下面一个命令,让profile文件生效。

    source ~/.profile

5、检查cross gcc路径是否设置正确  

  输入指令:

    echo $PATH

  当出现下面的路径

  则说明cross gcc路径设置正确。

6、检查cross gcc安装成功

  输入指令:

    nios2-linux-uclibc-gcc -v

  如果安装成功的话,就会出现下面的结果

   至此,cross gcc就安装成功啦!在这步安装的时候,基本上不会出现什么问题,如果有任何小问题的话,大家应该都能解决的。

 

五、配置及编译linux内核

  这一步出现一些问题,也耽误了一些时间,因为实验室的电脑没有联网,因此在安装一些指令的时候总是出现错误,后来用自己的电脑在联网情况下成功安装这些指令,所用到的指令下面将详述。

1、将nios2-linux-20100621.tar放在/usr/local/src目录下

  在ubuntu下,将nios2-linux-20100621.tar从共享文件夹copy到/usr/local/src目录下,在终端下输入如下命令:

    cp /mnt/hgfs/LinuxShare/nios2-linux-20100621.tar /usr/local/src/nios2-linux-20100621.tar

2、解压nios2-linux-20100621.tar

  还是在usr/local/src这个路径下,执行下面的命令解压nios2-linux-20100621.tar

    tar -C /usr/local/src -xvf nios2-linux-20100621.tar

  这样,就usr/local/src下生成一个名为nios2-linux的目录

3、配置内核

  进入内核目录。

    cd /nios2-linux/uClinux-dist

  执行下面的命令,配置内核。

    make menuconfig

  做到这一步的时候连续出现2个错误。

(1)第一个错误

  "make: *** No rule to make target `menuconfig'.  Stop."

  后来查找资料发现缺少指令,用checkout检查缺少什么指令。

  进入目录 /usr/local/src/nios2-linux

    cd /usr/local/src/nios2-linux

  输入 checkout

    ./checkout

  如下图所示

  这一步说明git指令没有安装,继续google,得到解决方法,安装git-core,在终端输入命令:

    apt-get install git-core

  ubuntu便从源下载所需数据包,之后自动安装,中间有个选择,输入Y即可。

  Do you want to continue [Y/n]? Y    <—— 这里输入Y

  再在目录/usr/local/src/nios2-linux下用checkout检查,其结果如下:

  这说明所需指令安装完成。

  然后在上一步的基础上进入内核目录。

    cd uClinux-dist

  执行下面的命令,配置内核。

    make menuconfig

  又遇到第二个错误。

(2)KEY_MAX没有定义

  执行下面命令,解决上述问题。

    apt-get install libncurses5-dev

  如下图所示:

  之后再次回到内核目录。

    cd uClinux-dist

  执行下面的命令,配置内核。

    make menuconfig

  则成功进入内核配置界面,如下图所示:

  第一项Venddor/Product Selection 设置,如下图所示:

  按照上图设置,之后按E退回到前一界面,对Kernel/Library/Defaults Selection设置,如下图所示:

  选择第一个Default all Setting(按键盘Y键选择),之后,就exit,exit,yes,就ok啦!

4、根据sopc生成的ptf文件设置硬件makefile

  将sopc生成的ptf文件拷贝到当前的/usr/local/src目录下

    cp /mnt/hgfs/LinuxShare/system_0.ptf /usr/local/src/system_0.ptf

  执行一下命令,设置硬件的makefile

    make vendor_hwselect SYSPTF=/use/local/src/system_0.ptf

  这里又出现一个问题了,就是说nios2-linux-gun-gcc命令找不到,咋一看,还以为是交叉环境没有安装好呢,但是仔细来看,发现,这个和nios2-linux-uclibc-gcc还是有区别,这是什么原因呢?最终在google上找到问题的解决办法!

http://www.alteraforum.com/forum/showthread.php?t=23549

  上面是问题的解决办法,大家不明白的可以进里面慢慢看看!我这里稍微解释一下。里面说,有两种branch,一种是trunk,一种是test-nios2,而uClinux是安装在test-nios2 branch下的,所以呢,需要转到test-nios2 branch目录下,没有办法啊,执行下面的命令转到test-nios2 branch下。当前目录为/usr/local/src。

  cd linux-2.6

  git checkout test-nios2

  cd uClinux-dist

  git checkout test-nios2

  如果成功的话,就会出现“Switching to test-nios2 branch”,如下图所示。

  再次执行一下命令,设置硬件的makefile

    make vendor_hwselect SYSPTF=/usr/local/src/system_0.ptf

  之后会有2个选择,一个选择cpu,另外一个选择SDRAM,如下图所示。

5、编译内核

  内核目录为/usr/local/src/nios2-linux/uClinux-dist,输入指令,编译内核。

    make

  这里我遇到过2种错误:

(1)"nasys_clock_freq" is not defined

  Google之后找到原因

  就是用SOPC定制的时候缺少了一个 full-featured 定时器。

(2)yacc:command not found

  google找到原因,安装

  解决完这2个问题之后,再做编译内核。

  输入指令:

    make

  这步需要等待一下,有一定的时间。至此,内核就编译成功啦!

  最终在/usr/local/src/nios2-linux/uClinux-dist/linux-2.6.x/arch/nios2/boot下生成镜像文件zImage。

   

   有时候编译出错的话,可以使用命令:

    make clean

  进行清除之前的编译结果,之后再重新编译即可。

 

六、下载

1、第一步

  将zImage文件复制到windows下的 D:\altera\kits\nios2_60\examples下面,如果安装了VMWare Tools,则可以直接用复制粘贴功能在windows和ubuntu下。

2、第二步

  将配置文件.sof复制到windows下的 D:\altera\kits\nios2_60\examples下面。

3、第三步

  启动“开始——>所有程序——>Altera——>Nios II EDS6.0——>Nios II Command Shell”

4、第四步

  下载.sof文件到FPGA,输入指令:

    nios2-configure-sof DE2_NIOS.sof

  如下图所示。

5、第五步

  下载镜像文件zImage到SDRAM,输入指令:

    nios2-download -g zImage

  如下图所示。

6、第六步

  启动linux,输入指令:

    nios2-terminal

  如下图所示。 

   至此,uClinux在FPGA上的移植成功完成。

 

 

PS:

   有时候重新启动系统,运行

    make vendor_hwselect SYSPTF=/usr/local/src/cpu.ptf

  的时候会出现nios2-linux-uclibc-gcc找不到的错误,这个时候需重新调用指令:

    source ~/.profile 

   另外,需要注意,各个命令中的空格。

 

posted @ 2012-03-16 21:38  sunev  阅读(2961)  评论(1编辑  收藏  举报