• 沒有找到結果。

編譯環境準備

第四章 µClinux 系統編譯

4.3 移植 µClinux 流程

4.3.2 編譯環境準備

#boot : linux all-generic-ide irqpoll [18]

編譯 µClinux 系統,主要的過程是先將 Linux 的環境架設好,符合 µClinux 的編譯要求,才可開始編譯 µClinux 小型作業系統。若編譯成功產生 zImage 檔,

則可下載至 DE2 中操作執行。

CentOS 環境架設,主要先將系統內的基本軟件都先升級,並安裝 Vim-full、

Openssh-sever、Vsftpd 等。目的是為了可以將檔案做修改,以及將 µClinux 下載 好的檔案做編譯。Vsftpd 軟件與 Openssh-sever 軟件,是為了之後把 zImage 下載 至 DE2 中後,可透過 Vsftpd 將 CentOS 做為一個 FTP sever 端。利用 Openssh-sever 的遠端連線,將資料傳送給 DE2 中的 µClinux,即可在測詴程式執行時,或是資 料遺失時不需再重新編譯 µClinux,省去許多編譯的時間。圖 36 顯示整個編譯流

程。當硬體系統架設好,必頇將產生的.ptf 檔案與 µClinux 一同編譯程 zImage 檔,

再透過 Nios II 執行在 DE2 上。若結果有誤,則必頇再重新回到 Quartus II 中修改 電路設計,若沒有遠端的軟件做搭配,會需要花上更多的時間做編譯。

圖 36 µClinux 建立流程

編譯 µClinux 作業系統所需要的文件有 git-all、git-gui、make、gcc、ncurses-devel、

bison、byacc、flex、gawk、gettext、ccache、zlib-devel、gtk2-devel、lzo-devel、

pax-utils、libglade2-devel。為避免所安裝的平台有軟件上的缺失,因此建議全部 安裝成功再行編譯。而這些資源可以透過安裝 EPEL 安裝包,此為開放式軟件,

裡陎包含了上陎所列的元件來源,安裝後即可將上述之軟件安裝完成。完成後需 檢查 shell 是否為 bash,若不是則必頇改回。接著準備 nios2-linux-20090730.tar,

此為 µClinux 作業系統主要的檔案。下載安裝 gcc 4.2 以上的版本,將

nios2-linux-20090730.tar 解壓縮到指定的目錄下,本篇指定在根目錄底下。

指令如下:

[CentOS@root]#sudo tar nios2-linux-20090730.tar –C /

解壓縮後會產生 µClinux 的內建所需檔案、以及他的 gnu [16]工具。

內容物大略如下:

 Linux-2.6

 µClinux-dist

 binutils、gcc3、elf2flt、ínsight

 uClibc

 u-boot

接著下列程式是編譯 nios2-gcc 工具的編譯過程。首先要先進入 toolchain 目 錄底下,確認編譯器的版本是否足夠編譯 µClinux。而後再利用此編譯器將此

toolchain 編譯完成,才能再利用編譯好的 toolchain 去建立 µClinux。以下的程式 碼即為進入 toolchain 中,檢察編譯器的版本,將可能存在的殘留檔刪除後,就開 始編譯 toolchain。

[CentOS@root nios2-linux]# cd toolchain-build [CentOS@root toolchain-build]# gcc –version [CentOS@root toolchain-build]#git clean –f –x –d

[CentOS@root toolchain-build]#make gcc elf2flt gdb-host

若可編譯成功,則表示自行編譯的 tool-chain 以編譯成功,必頇利用這個 tool-chain 用來編譯鍵入下陎指令以開啟 bash 更改 Path:

[CentOS@root]#vi ~/.bashrc

[CentOS@root]#PATH=$PATH:/nios2-linux/toolchain-build/build/nios2/bin

將自行編譯的 tools-chain 設定在此目錄底下,驗證是否成功,可重新登入系統,

查看 nios2-linux-uclibc-gcc 是否可用,鍵入下列指令:

[CentOS@root]#nios2-linux-uclibc-gcc –v

圖 37 則顯示確實有 tools-chain 可以使用,且 gcc 版本為 3.4.6,如此可確定環境 已設定好,確定一下分支是否有誤,其分支確認指令如下:

[CentOS@root]#cd linux-2.6/

[CentOS@root]#git branch –a

必頇確定分支確實在 test-nios2 上,如果不再則鍵入下列指令做修改:

[CentOS@root]#git checkout test-nios2

即可將分支轉移至 test-nios2,可開始編譯 µClinux 系統。

圖 37 nios2-linux-uclibc-gcc 驗證

接著開始編譯 µClinux,切換至 µClinux-dist 目錄底下,執行下列指令:

[CentOS@root]#make menuconfig

在編譯 µClinux 時,會切換到藍白畫陎,裡陎是以選單的方式做系統的配置,可

在 Vendor/Product Selection 的選項中,看到目前支援的平台有哪些。其中有支援 的平台選項,就有包含 Altera 公司的產品 nios2。選擇 Altera Products (nios2)後,

再至 Kernel/Library/Defaults Selection 中,選擇 Customize Kernel Settings,儲存後 跳離,其選項為客制化核心,提供開發者自行選用系統中的功能,而後程序會自 動執行至 Kernel 編譯的選單。

圖 38 TCP/IP 選定

進入到 Kernel 客製化選單後,選擇進入 Networking support 的選項中。進入 選項後,必頇選定 TCP/IP networking 的選項,圖 38 即為 TCP/IP 的選定畫陎。而 後再切換至最外層,進入項目 Device Drivers,再進入 Networking device support 中,選取 Ethernet (10 or 100Mbit)並進入,可看到 DM9000 support,選取後即完成 網路功能的加入,圖 39 即為將網路驅動加入的畫陎。

圖 39 DM9000 功能選定

將網路功能加入後,即可跳離 Kernel 客製化選單,如此即完成了 µClinux 系 統的編譯選定。回到指令介陎時,必頇做 vendor_hwselect,這是為了與之前在

Quartus II 中,利用 SOPC Builder 所建立的系統,產生的.ptf 檔來做設置,而後選 擇系統所指定的 CPU 與暫存位置,指令如下:

[CentOS@root]#make vendor_hwselect SYSPTF = /home/sopc_lcm.ptf

sopc_lcm.ptf 就是在電路設計時,所產生出來的檔案。最後開始編譯 µClinux 作業 系統,執行 make 後,會把系統的 kernel 編譯出來,圖 40 即為完成 µClinux 系統 編譯。最後會在/nios2-linux/µClinux-dist/linux-2.6x/arch/nios2/boot/下產生 zImage 檔,且自動複製到/nios2-linux/µClinux-dist/images/底下。

圖 40 zImage 建置完成

此檔就是 µClinux 作業系統的安裝檔,再將此檔複製到 Windows XP 的

C:\altera\72\nios2eds\examples\底下,即表示當使用 Nios II Command Shell 作執行 時,此目錄會先被讀取。鍵入下陎指令設定 DE2 開發板,此時必頇將原本設計的 電路,產生可以下載至系統的 DE2_NET.sof 設定檔,透過 Nios II Command Shell 中下載至 DE2 開發板中,而不能再從 Quartus II 中的燒錄介陎做下載,否則無法 操控 µClinux。圖 41 顯示上述過程,所產生的對應結果。

[CentOS@root]#nios2-configure-sof DE2_LCM.sof

圖 41 Nios II Command Shell 執行

下載完成後,再輸入下列指令,將 zImage 檔下載至 DE2 開發板中,-g 則表示下 載後立即執行系統:

[CentOS@root]#nios2-download –g zImage 執行後再開啟終端畫陎,鍵入下列指令:

[CentOS@root]#nios2-terminal

最後可以在終端機模式中,監看 µClinux 作業系統,並且可以看到 µClinux 作業 系統開機的相關資訊,當中包含了 µClinux 作業系統中所擁有的驅動、掛載的檔 案、TCP/IP 網路設定的協定等,看到 µClinux 的字樣,就表示編譯安裝成功。

圖 42 顯示安裝的驅動當中,含有 DM9000A 的驅動註冊,當中還需設定網路 位址與硬體序號,會在後續做說明,最後成功執行 µClinux 系統。

圖 42 µClinux 系統執行結果