DIY_DE2移植uClinux

來源:互聯網
上載者:User
一、摘要

在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 

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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.