在niosii上跑uClinux.doc_第1页
在niosii上跑uClinux.doc_第2页
在niosii上跑uClinux.doc_第3页
在niosii上跑uClinux.doc_第4页
在niosii上跑uClinux.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

标签: 无标签在niosii上跑uClinux概述NIOSII是altera公司针对FPGA推出的一个CPU软核,它可以综合到任何一款altera的FPGA中。用户可以基于sopcbuilder搭建自己的系统。一个基于NIOSII的系统如图:除了sopcbuilder提供的一些外设以外,用户可以按照avalon总线标准来实现自己的模块,而且可以很容易的集成到系统里面去。niosii有三个不同的版本:niosii-e、niosii-s、niosii-f。Niosii-e针对低成本应用,内部没有流水线结构,不带指令/数据CACHE,所以实现所需要的逻辑较小(600-700LEs)。Niosii-s有五级流水结构,带指令cache(size根据用户配置),实现需要1200-1400LEs。Niosii-f有六级流水结构,带指令和数据cache,实现需要1400-1800LEs。建立niosii系统在建立系统之前检查一下软硬件配置:1、使用最新版本的Quartus和Nios软件,低版本软件可能存在bug。我之前用QuartusII5.1试了好几次都没有完全把uClinux跑起来,在boot开始以后就挂死了,百思不得其解,后来换成QuartusII6.1以后,重新编译了一下逻辑就把跑起来了。郁闷了我好久2、uClinux需要在linux环境下编译(基于cygwin也可以编译,不过我说的这个过程是在linux上的),所以你必须有一个linux操作系统。有几种办法:A,装一个linux版本的QuartusII,所有的操作都在linux下完成。B,用两台计算机,一台用windows,跑quartus等软件,另一台装linux。C,在windows下装个虚拟机vmware,在虚拟机上装linux,通过虚拟机来编译uClinux,然后把image文件导入到windows下调试。我就是使用虚拟机的方法,但是要求你的PC内存比较大才行,否则系统会很慢。3、你板子上FPGA的容量要能装的下一个系统,外部的SDRAM容量至少要8Mbyte。我用的是一个EP1C6的FPGA加8Mbyte的SDRAM。不需要FLASH。以上条件都满足了,就可以开始了。首先,建立一个工程,然后建立一个小系统,配置如下:最小系统至少要包括:一个niosiicpu,一个sdram控制器,cfi_flash控制器(在单板上不需要flash),全功能的timer,用于通信的jtaguart或serialuart。可以根据单板的硬件资源来适当配置逻辑,比如加入一些led和key等等。在linux里面中断0是自动识别的,所以在硬件系统里面不要使用0号中断。生成好系统以后,在Quartus里面把引脚连好,包括设置好用于SDRAM的PLL:系统编译好以后,先用NIOSII IDE写个程序来测试一下SDRAM和系统是不是可以运行。如果程序能正确运行的话,就可以进入下一步了。建立uClinux的交叉编译环境要把uClinux放到niosii中运行首先必须把uClinux代码编译成niosii的指令。这个编译的过程需要相应的程序来完成。下载nios2gcc.tar.bz2软件包。进入linux操作系统,打开一个shell界面,执行如下操作:把下载的nios2gcc.tar.bz2软件包放到home下,如/home/duckfly/然后切换到rootsu#输入root密码tarjxf/home/duckfly/nios2gcc.tar.bz2 -C /exitniosii的交叉编译工具链就会安装到/opt/nios目录下,我们需要把这个目录加入到path变量中去,让shell能自动寻找。打开home下载.bash_profile文件,这个文件是隐藏文件,需要用lsa才能看见。ls-avi .bash_profile#把PATH变量修改为:PATH=$PATH:/opt/nios2/bin:$HOME/binsource .bash_profile#让修改的环境变量生效nios2-linux-gcc v#查看是否安装好了,打印出版本信息编译uClinux交叉编译环境安装好以后,就可以编译uClinux了。首先到/pub/uClinux/dist/下载一个uClinux的代码包。然后下载uClinux-dist-20070130-nios2-02.diff.gz软件包,这是把uClinux移植到niosiiCPU上的补丁。在linux下使用如下命令:#使用普通用户登陆cd#解压uClinux代码tarjxf/download/uClinux-dist-20070130.tar.bz2#进入uClinux根目录cduClinux-dist#打补丁,这一步只能做一次,否则会引起错误zcat /download/uClinux-dist-20070130-nios2-02.diff.gz| patch -p0#还是停在uClinux-dist目录,不要切换目录#配置uClinux内核makemenuconfig#选择Vendor/ProductSlection#配置Vendor和Product#回到主界面,选择Kernel/Library/Default Selection#配置Library和Kernel参数为默认值#选择#保存配置#把在QuatusII下生成的系统的ptf文件拷贝到一个目录,比如/home/duckfly/sys.ptf#根据系统硬件配置uClinuxmakevendor_hwselectSYSPTF=/home/duckfly/sys.ptf#根据硬件配置选择相应的选项#建立romfs目录,第一次make可能会报错,忽略。必须在第一次编译内核之前运行makeromfs#编译内核,第一次编译内核时可能报错,如果出错,那么重新再make一次make#如果错误,重新再make一次make#重新生成image文件makelinuximage#到这里,uClinux的image文件就产生了,把它拷贝到windows下面下载并运行下载硬件在Quatus里面把编译好的系统下载到FPGA里面去下载uClinuximage文件FPGA配置完以后,就可以下载软件了。打开NIOSII的命令行#进入到zImage文件所在的目录,下载软件nios2-download gzImage#下载完成以后,打开nios2-terminal,接口串口发送的信息nios2-terminal# JTAG串口上打印如下信息Uncompressing Linux. Ok, booting the kernel.Linux version2.6.19-uc1 (duckflylocalhost.localdomain) (gccversion 3.4.6) #22 PREEMPT Sun Jun 17 16:22:49 CST 2007uClinux/NiosIIAlteraNiosII support (C) 2004MicrotronixDatacomLtd.Built 1zonelists.Total pages: 2032Kernel command line: duckflyPID hash table entries: 32 (order: 5, 128 bytes)Dentrycache hash table entries: 1024 (order: 0, 4096 bytes)Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)Memory available: 6892k/8192k RAM, 0k/0k ROM (871k kernel code, 336k data)Mount-cache hash table entries: 512ioschedulernoopregisteredioscheduler deadline registered (default)NIOS serial driver version 0.0ttyS0 (irq= 2) is abuiltinNIOS UARTFreeing unused kernel memory: 260k freed (0xe2000 - 0x122000)Shell invoked to run file: /etc/rcCommand: hostnameuClinuxCommand: mount -t procproc/procCommand: mount -tsysfssysfs/sysCommand: mount -tusbfsnone /proc/bus/usbmount failed: No such file or directoryCommand:mkdir/var/tmpCommand:mkdir/var/logCommand:mkdir/var/runCommand:mkdir/var/lockCommand:mkdir/var/emptyCommand:ifconfiglo ifconfig: Bad command or file nameCommand: route add -net netmask loroute: Bad command or file nameCommand: cat /etc/motdWelcome to _ _ _ / _| |_| _ _| | | | _ _ _ _ _ _ | | | | | | | | _ | | | | / / | |_| | |_| | | | | | |_| |/ | _|_|_|_| |_|_|_/_/ | | |_|For further information check:/Execution Finished, ExitingSash command shell (version1.1.1)/#可以使用linux下的一些命令如:/lsbindevetchomelibmntprocusrvarsystmpinitsbin/psPIDUidVmSizeStat Command1 rootSW/init duckfly2 rootSWN ksoftirqd/03 rootSW events/04 rootSW khelper5 rootSW kthread6 rootSW kblockd/07 rootSWpdflush8 rootSWpdflush9 rootSW kswapd010 rootSWcdtmp/tmplsmoduletest/tmpcdtest/tmp/testlsledstringled2基于NIOS平台的嵌入式uclinux学习笔记-(一)-安装uclinux2009-06-26 14:44安装有很多方式,我使用:Windows版的Quartus II和SOPC Builder产生.sof和.ptf文件,并在VMWare上安裝Linux进行Clinux的交叉编译.做之前确认虚拟机硬盘大小8G.具体步骤:一 安装交叉编译环境 Nios II gcc cross compiler一下载nios2gcc.tar.bz2或Altera原厂的nios2gcc-20080203.tar.bz2至/usr/local/src二将nios2gcc.tar.bz2解压缩到/opt/nios2rootlocalhost src# tar -jxvf nios2gcc.tar.bz2 -C /三设定cross compiler路径rootlocalhost src# vi /.bash_profile修改bash_profile的內容如下所示,加上/opt/nios2/bin路径# .bash_profile# Get the aliases and functionsif-f /.bashrc;then . /.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/bin:/opt/nios2/binexport PATHunset USERNAME四重新执行bash_profile script,让所设定的路径马上生效,因而不必再重新登出登入rootlocalhost src# source /.bash_profile五测试Nios II gcc cross compiler是否安装成功rootlocalhost src# nios2-linux-uclibc-gcc -v若出现以下结果,表示Nios II gcc cross compiler已经设定成功Reading specs from /opt/nios2/lib/gcc/nios2-linux-uclibc/3.4.6/specsConfigured with: /root/buildroot/toolchain_build_nios2/gcc-3.4.6/configure -prefix=/opt/nios2 -build=i386-pc-linux-gnu -host=i386-pc-linux-gnu -target=nios2-linux-uclibc -enable-languages=c -enable-shared -disable-_cxa_atexit -enable-target-optspace -with-gnu-ld -disable-nls -enable-threads -disable-multilib -enable-cxx-flags=-staticThread model: posixgcc version3.4.6二 编译uCLinux内核一下载Clinux到/usr/local/src,uClinux-dist-20070130.tar.gz二将uClinux-dist-20070130.tar.gz解压rootlocalhost src# tar -zxvf uClinux-dist-20070130.tar.gzuClinux-dist-20070130.tar.gz解压后很大,如果解压出错,可能是虚拟机空间不够大.三下载补丁,Clinux kernel patch for Nios II:uClinux-dist-20070130-nios2-02.7z到/usr/local/src/uClinux-dist四安裝补丁 Clinux kernel patch for Nios IIrootlocalhost src# cd uClinux-distrootlocalhost uClinux-dist# gunzip -c uClinux-dist-20070130-nios2-02.diff.gz | patch -p0若出现一下结果,表示补丁成功patching file vendors/Altera/nios2nommu/config.archpatching file vendors/Altera/nios2nommu/config.linux-2.6.xpatching file lib/libpng/Makefilepatching file linux-2.6.x/include/asm-nios2nommu/ide.hpatching file linux-2.6.x/include/linux/elf-em.hpatching file linux-2.6.x/usr/Makefilepatching file linux-2.6.x/arch/nios2nommu/kernel/vmlinux.lds.Spatching file linux-2.6.x/arch/nios2nommu/drivers/Kconfigpatching file linux-2.6.x/arch/nios2nommu/drivers/altcf.cpatching file linux-2.6.x/arch/nios2nommu/drivers/pci/Kconfigpatching file linux-2.6.x/arch/nios2nommu/drivers/pci/pci-auto.cpatching file linux-2.6.x/arch/nios2nommu/drivers/pci/pci.cpatching file linux-2.6.x/arch/nios2nommu/drivers/pci/Makefilepatching file linux-2.6.x/arch/nios2nommu/drivers/spi.cpatching file linux-2.6.x/arch/nios2nommu/drivers/Makefilepatching file linux-2.6.x/drivers/mtd/maps/altera.cpatching file linux-2.6.x/drivers/mtd/maps/Kconfigpatching file linux-2.6.x/drivers/net/Kconfigpatching file linux-2.6.x/drivers/net/Makefilepatching file linux-2.6.x/drivers/net/dm9ks.cpatching file linux-2.6.x/drivers/net/open_eth.cpatching file linux-2.6.x/drivers/net/dm9000.cpatching file linux-2.6.x/drivers/net/Space.cpatching file linux-2.6.x/drivers/net/smc91x.cpatching file linux-2.6.x/drivers/net/smc911x.cpatching file linux-2.6.x/drivers/net/mtip1000.cpatching file linux-2.6.x/drivers/usb/Kconfigpatching file linux-2.6.x/drivers/usb/host/Kconfigpatching file linux-2.6.x/drivers/usb/host/isp1362-hcd.cpatching file linux-2.6.x/drivers/usb/host/Makefilepatching file linux-2.6.x/drivers/usb/host/isp1362.hpatching file linux-2.6.x/drivers/usb/Makefilepatching file linux-2.6.x/drivers/ide/ide.cpatching file user/microwin/src/fonts/X6x13.cpatching file user/microwin/src/demos/nxroach/Makefilepatching file user/microwin/src/demos/nanox/nxterm.cpatching file user/microwin/src/demos/nanox/nterm.cpatching file user/microwin/src/demos/nxkbd/keynum.cpatching file user/microwin/src/demos/nxkbd/keyctrl.cpatching file user/microwin/src/demos/nxkbd/keyshft.cpatching file user/microwin/src/Makefile.rulespatching file user/microwin/src/drivers/kbd_ttyscan.cpatching file user/microwin/src/drivers/scr_fb.cpatching file user/microwin/src/drivers/mou_ser.cpatching file user/ftpd/ftpcmd.cpatching file user/ftpd/Makefile五建立配置文件rootlocalhost uClinux-dist# make xconfig出现图形界面,Vendor/Product Selection选择Altera初次编译libc version一定选择none,系统类型要选Default all setting存档退出六将SOPC Builder配置文件system_0.ptf复制到/usr/local/src七根据ptf文件配置rootlocalhost uClinux-dist# make vendor_hwselect SYSPTF=/usr/local/src/system_0.ptf出现选择,按照需要进行选择。我是:1 (CPU_0),1 (cfi_flash_0),2 (sdram)。八建立romfs文件夹,错误可忽略。rootlocalhost uClinux-dist# make romfs九开始编译Clinux核心rootlocalhost uClinux-dist# make生成image文件rootlocalhost uClinux-dist# make linux image在/usr/local/src/uClinux-dist/linux-2.6.x/arch/nios2nommu/boot/下找到zImage进行硬件和uCLinux的烧写一将zImage文件和DE2_NIOS2.sof复制到Windows的D:altera70nios2edsexamples下二打开Nios II Command Shell开始 - 程序 - Altera - Nios II EDS 9.0 - Nios II 9.0 Command Shell三将sof文件烧入到开发板SOPC Builder$ nios2-configure-sof DE2_NIOS.sof将zImage下载到SDRAMSOPC Builder$ nios2-download -g zImage四启动ClinuxSOPC Builder$ nios2-terminal如果看到下面表示安装成功类别:Sopc Nios Uclinux|添加到搜藏|分享到i贴吧| 浏览(874) |评论(5)安装Nios2uClinux开发环境收藏安装NiosuClinux开发环境(文/贾毫杰)一、前期准备工作首先,你必须安装Linux操作系统,而且还得有一些必要的软件包,现在你可以使用以下命令检验你的软件包是否齐全。(1)以root权限登录进入系统:如果你的操作系统是Fedora,RHEL,Centos执行sudo yum install git-core make gcc ncurses-devel bison byacc flex gawk gettext ccache zlib-devel gtk2-devel lzo-devel如果你的操作系统是Suse执行sudo zypper install git-core make gcc ncurses-devel bison byacc flex gawk gettext ccache zlib-devel lzo-devel如果你的操作系统是Debian/Ubuntu,执行sudo apt-get update sudo apt-get install git-core make gcc ncurses-dev bison flex gawk gettext ccache zlib1g-dev libx11-dev texinfo lzo-dev注意:如果Ubuntu不能找到lzo-dev软件包,请试一下lzo-dev2.(2)检验你的git版本执行git -version,如果你的版本低于1.5.3.x,请更新至最新版本。(3)在Ubuntu操作系统下,你还需要检验默认Shell是否为“bash”执行ls -l /bin/sh应该显示/bin/sh - bash否则执行以下命令将默认shell改为bashsudo rm /bin/shsudo ln -s bash /bin/sh二、下载并解压必要的文件1.确保你有至少5G的空余硬盘空间,然后使用wget来下载nios2-linux-20080619.tar 压缩文件,如果你已经有了nios2-linux-20080619.tar文件,请直接看第2步。执行wget/outgoing/nios2-linux-20080619.tar可以下载得到压缩软件包。注意:最好不要使用Windows ftp下载,因为这可能会损害文件。2.将nios2-linux-20080619.tar放在你的工作目录下,如/home/jiahaojie/执行tar xf nios2-linux-20080619.tar # 解压软件包会得到一个nios2-linux文件夹 cd nios2-linux # 进入目录 ls # 查看文件显示如下:binutils gcc3 README uClibc use_http_for_updatecheckout insight toolchain-build uClinux-distelf2flt linux-2.6 u-boot update3.检查源文件执行./checkout到此为止,基于Nios2的uClinux源文件和其他工具软件已准备好了。三、安装交叉编译工具链 交叉编译工具链是用来 交叉编译工具链的源文件已经包含在nios2-linux/toolchain-build中,你可以自己编译得到可用的二进制文件;如果你不愿麻烦,也可以从网上得到已经编译好的工具链,然后解压并安装在你的机器上,这样就能直接使用了。如果您有二进制的交叉编译工具链压缩文件(nios2gcc-20080203.tar.bz2这是最新的版本),请直接看第3步。1.编译交叉编译工具链,这可能需要花费几个小时,如果你不愿麻烦,可以下载别人已经编译好的交叉编译工具链(/WikiHome/OperatingSystems/%C2%B5Clinux/BinaryToolchain/nios2gcc.tar.bz2?cacheTime=1167890021825)执行cd toolchain-build git clean -f -x -d #如果第一次不成功,重新开始最好执行这一步,清除编译过程中产生的中间文件 make gcc elf2flt #这一步可能需要花费几个小时 cd .请看第2步2.修改.bash_profile文件(如果是Debian/Ubuntu修改/.profile文件)执行 gedit /.bash_profile #以图形方式打开.bash_profile文件在/.bash_profile或/.profile文件的最后一行添加PATH=$PATH:/hom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论