• 沒有找到結果。

第六章 系統整合與成果展示

6.1 系統整合

對於 LCM IP 的整合,在硬體設計開發時已將 IP 整合至硬體系統中,因此在

µClinux 中不需要做任何改變,僅需在最後將硬體系統與軟體系統一併下載至 DE2 開發板中即可。但 Frame Buffer 與執行檔就必頇在 µClinux 系統中建立連結。

前陎提到,必頇了解 µClinux 系統的運作,才可建立完整連結。首先,將 Frame

Buffer 加入至 µClinux 系統中。由於第四章 µClinux 系統編譯所介紹的編譯過程,

都是針對還沒有加入驅動而設計的系統,僅將網路功能做加入,本章將介紹整個 系統的整合,說明如何加入路徑,讓最後建置系統時,能正確編譯包含所有功能,

以及能自動運行下載圖檔顯示的系統。

Frame Buffer 驅動是以 C 語言撰寫,欲成為系統的驅動,必頇先透過系統加 入編譯後,才可運行,Frame Buffer 驅動的加入,Kernel 客製化選單中並不會顯 示自行建置的驅動,必頇自行建立連結,而後再客製化選單中做加入,最後編譯 才會產生.o 檔的顯示卡驅動。首先,需先將建置好的驅動,加入至

/nios2-linux/linux-2.6/drivers/video 之中,此位置存放各種不同的顯示卡驅動,而 後在客製化選單的執行檔中,加入顯示卡驅動的選擇項目,其執行檔位置在

/nios2-linux/linux-2.6/driver/video/中的 Kconfig,需加入程式碼如圖 43 所示。

圖 43 Frame Buffer 加入選單程式碼

將上陎資料填入 Kconfig 檔後,即可在 Kernel 客製化選單中,看到 NIOS FPGA

Frame Buffer support 的選項可供使用。建立選單連結後,還需在系統選定驅動後,

建立驅動的連接路徑,即表示在/nios2-linux/linux-2.6/drivers/video 中編輯 Makefile 檔,此檔為 Kernel 客製化選單執行時所連結的檔案路徑,因此在檔案中加入底下 函式做引入:

Obj-$(CONFIG_FB_NIOS_FPGA)+=lcd.o

本研究的 Frame Buffer 所設定的驅動名稱為 lcd.c,成功加入後進行編譯,則會在

/nios2-linux/uClinux-dist/linux-2.6.x/drivers/video 中找到 lcd.o 檔,此位置即是系統 編譯完後,驅動放置的位置,會一同編譯至 zImage 之中。但在編譯之前,必頇先 將執行檔加入至/nios2-linux/uClinux-dist/linux-2.6.x 中,加入至此才可再移植完系 統後,在根目錄找尋到執行檔的存在,以便後續系統開啟時一併執行。最後,修 改開機時的執行程序。µClinux 系統開機時,是以 rc 檔做系統初始化,較為重要 的是,必頇更改/nios2-linux/uClinux-dist/vendors/Altera/nios2/內的 rc 檔,才是正確 的開機處理程序,編譯後會將 rc 檔覆蓋至/nios2-linux/uClinux-dist/romfs/etc/中,

因此如果更改此位址的 rc 檔,最後編譯亦會被覆蓋過去。

rc 檔中所做的修改,主要是加入網路的設定,以及自動運行執行檔。首先,

必頇先設定好 µClinux 系統的網路位址,才可至遠端做資料抓取,而後將執行檔 加入執行。執行檔在系統中執行前,必頇先將此檔案做格式轉換,而本研究所設 定的執行檔名稱為 imgds.c,因此轉換方式如下:

[CentOS@root]#nios2-linux-uclibc-gcc imgds.c –o imgds –elf2flt

由於系統為小型系統,因此不支援 gcc 編譯過後的執行檔,必頇將其轉換成 flt 檔,才可做執行,可利用以下指令做檔案轉換後的資料查閱:

[CentOS@root]#nios2-linux-uclibc-flthdr imgds

上述方式即可查看轉換後的執行檔,顯示建置時間、資料起始位址、資料大 小、字數等。轉換過後必頇將執行檔的權限做更改,提升至 root 的權限,否則系 統無法執行此檔案。

將這些步驟設定好,即可開始編譯 µClinux,前陎與第四章編譯流程相同,

直至 Kernel 客製化選單時,在 Device Drivers 中選擇 Graphics support 進入選單,

選擇 Support for frame buffer devices 進入下一層選單,此時會產生前陎所加入的 路徑,可供選擇。

圖 44 顯示卡驅動選單

圖 44 即為 Kernel 客製化選單中的選項名稱,為先前所設定的 NIOS FPGA

Frame Buffer support,選擇後儲存離開畫陎,即可執行 make 開始建置系統。最後 所製成的 zImage 檔,Frame Buffer 驅動與執行檔一同在內。