第五章 研究流程
5.2 研究流程步驟
步驟1:選定嵌入式硬平臺
在本論文中,是使用長高科技有限公司設計開發的DMA2410嵌入式開發板。
步驟2:在工作電腦A上安裝Qt/Embedded的開發工具
在本論文中,是進行Qt/Embedded的應用程式開發,因此就需要在我們工作 機器A上安裝Qt/Embedded開發工具,包括tmake安裝工具、Qt/Embedded安裝工 具及Qt的X11版的安裝工具三種軟體。由於上述的這些安裝工具有許多不同的版 本,需要注意到由於版本的不同,導致這些軟體在使用時可能造成的衝突,故在 本論文中,我們所選擇的版本分別為[31]:
¾ tmake 1.11:主要功能為製作Qt/Embedded應用工程的Makefile檔案。
¾ Qt/Embedded 3.3.2:Qt/Embedded 安裝工具。
¾ Qt 2.3.2 for X11:Qthapi X11版的安裝工具,它將產生X11開發環境所需要的 二個工具。
步驟3:根據目標硬體平臺,交叉編譯Qt/Embedded的開發工具
開發於Qt/Embedded的應用程式要使用到Qt/Embedded的資料庫,我們編寫 的Qt嵌入式應用程式最終是在DMA2410開發板上執行的,因此在把Qt嵌入式應 用程式編譯成支援DMA2410的目標程式之前,我們需要二個開發工具,一個是 ARM9的Linux編譯器,另一個則是經ARM9的Linux編譯器編譯過的Qt/Embedded 的資料庫,因此要進行以下二個步驟:
1、交叉編譯工具
我們需要ARM9的Linux編譯器去編譯程式並產生ARM9處理器的目標程 式,而我們卻是在PC的工作機器(x86的處理器)上使用這個編譯器,這個過程即 稱為交叉編譯。因此需要安裝一個ARM9的Linux編譯器。在本論文是使用cross 2.95.3的交叉編譯工具,使編譯應用程式或內核時,都能夠使用 arm-linux- 來指 定交叉編譯器[32]。
2、交叉編譯Qt/Embedded資料庫
當我們有了ARM9的Linux編譯器之後,我們就可以使用這個編譯器交叉編 譯Qt/Embedded資料庫的原始碼,從而產生一個以ARM9為目標的Qt/Embedded 資料庫來使用。
步驟4:在工作電腦A上進行程式的編碼、編譯及除錯
在工作機器A上進行Qt應用程式的編碼、編譯及除錯時,須要進行下列幾個 步驟:
1、製成一個 .pro工作檔案
一個應用程式通常對應一個工程檔案*.pro,並對它做一些簡單的編輯,然後 只要使用一個專門的工具處理這個工程檔案,就可以生成一個Makefile檔案。
2、Qt Designer新建一個表單
啓動Qt Designer圖形編輯器,新建一個”寬240,高320”*.ui檔的表單如圖5-1 所示,目的是使表單大小與DMA2410的顯示幕大小一致,再利用Qt Designer裡 的各項元件,組成所需要監測各數值的功能畫面,如圖5-1所示。
圖5-1 利用Qt Designer 形成的表單 3、製成表單類別的開頭檔案和實現檔案
根據介面檔案*.ui使用uic工具產生出表單類別的開頭檔和實現案,具體方法 是:
uic –o *.h hello.ui
uic –o *.cpp –impl *.h *.ui
這樣我們就得到了表單類別的開頭檔案*.h和實現檔案*.cpp。再將我們要實現的 RS232傳輸功能,在*.cpp文件裡添加相應的程式。
4、編寫主函數main( )
一個Qt/Embedded應用程式應該要包含一個主函數,主函數所在檔案名稱是 main.cpp。主函數是應用程式的入口點,主要是主視窗的基本功能設定。
5、編輯工程檔案*.pro文件
我們總共編寫了一個開頭檔案和二個原始檔案,這三個檔案應該被包括在工 程檔案中,因此我們需要編輯*.pro文件,加入這三個檔案。
6、生成Makefile檔案
編輯器是根據Makefile檔案內的內容來進行編譯的,所以我們需要生成 Makefile檔案。利用Qt所提供的tmake工具可以幫助我們,從一個工程檔案(.pro) 產生Makefile檔案。
7、編譯鏈結整個工程
最後在命令行下輸入make命令對整個工程進行編譯鏈結。make生成的二進 位檔案就是可以在x86上執行。
步驟5:應用工作電腦B的VB程式,從RS232輸出測試工作電腦A的訊號
在工作電腦B上,利用Microsoft Visual Basic(VB)軟體編寫一個程式,讓此程 式能夠從RS232輸出一個測試訊號,以便在工作電腦A上測試是否能收到訊號。
步驟6:在工作電腦A上的Qt程式接收訊號
利用在工作電腦A上所編寫好的Qt的應用程式,編碼、譯譯及除錯完成後,
從工作電腦A的RS232接收工作電腦B的RS232上送出的訊號。
步驟7:根據目標硬體平臺,交叉編譯嵌入式應用
由於我們寫好的程式是能在x86的處理器上執行的,因此為了能夠使應用程 式能在ARM9上執行,我們必須修改Makefile檔案,將原本的鏈接在g++編譯器,
改成用arm-linux-g++編譯器作鏈接,且將函式庫指向cross 2.95.3交叉編譯的函式 庫,然後再命令行下,再執行一次make命令,所生成的二進位檔案,即可在 DMA2410上的ARM9執行。
步驟8:發佈嵌入式應用程式至目標硬體平臺
一個Qt/Embedded應用的執行需要有Linux和Qt/Embedded資料庫的支援,所 以我們除了要燒寫Linux到DMA2410FLASH存儲空間外,還要燒寫Qt/Embedded
二進位資料庫到DMA2410的FLASH。其燒寫步驟如下:
1、透過JTAG燒寫u2410mon
DMA2410開發板可以透過簡易JTAG介面來燒寫FLASH,這樣就可以在啓動 FLASH為空的情況下,將啓動引導程式燒入FLASH記憶體中實現自我啓動。這 種燒寫方式是通過一條電纜和一顆信號轉換IC以建立PC與開發板之間的通訊,
借助ARM核內的JTAG邏輯來控CPU的CS、ADDRESS、DATA等信號實現。首 先要先執行一個sjf2410.exe的應用程式,如圖5-2所示。我們可以看出,所支援的 FLASH都列出來了,有K9S1208(NAND,64M)、28F128J3A、AM29LV800及 SST39VF160,接下來選擇” 3 ”燒寫SST39VF160,並輸入起始位址為0,燒寫完 後如圖5-3所示。
2、燒寫BIOS到DMA2410
長高科技公司本身提供一個DNW2410的燒寫工具,以供使用者方便使用,
首先將DMA2410串列埠及USB接頭與工作電腦A相連接,在工作電腦A上安裝與 DMA2410 USB設備對應的驅動式,在工作電腦A上啓
圖5-2 sjf2410之JTAG燒寫軟體
圖5-3 JTAG燒寫SST39VF160
動DNW2410,並通過Configuration選項設置好PC的串列埠、傳輸速率及下載位 置如圖5-4所示,點擊OK後,再在Serial Port功能表下選擇Connect,打開DMA2410 的電源,燒進SST39VF160的程式u2410mon與DNW2410都會提示USB已經連 上,如圖5-5所示。在DNW2410上選USB Port功能表下的Transmit選項,會出現 選擇文件的對話框,選擇DMA2410所提供的BIOS的BIOS文件2410bios.bin,BIOS 下載成功後,就會自動執行,如圖5-6所示。
圖5-4 DNW2410軟體設定
圖5-5 DNW2410USB連上的訊息
圖5-6 DMA2410的BIOS啓動
DMA 2410所附的BIOS文件,主要功能有文件下載(USB或串列埠)、FLASH 燒寫(NOR或NAND)、啓動存在FLASH中的程式、設置啓動參數(針對Linux)、另 外還有個簡單的POWER-OFF模式測式。
BIOS功能表的第0項和第1項功能分別是USB和串列埠下載,這二個都是配 合DNW2410這個程式所使所的,在DNW2410上的Configuration功能表的Option 選項裡,可以選擇PC和開發板通訊的串列埠和串列傳輸速率,還可以指定USB 下載時,將下載的文件保存到SDRAM的起始位址,對於DMA2410開發板而言,
SDRAM的實際起始位址是0x30000000,結束位址是0x34000000,大小是64M bytes,故指定的USB下載位址要在此範圍內。另外,BIOS本身佔用了0x30200000 以下的空間,因此在用BIOS的USB下載功能時,應指定位址要大於或者等於 0x30200000。用串列埠下載時,BIOS內部固定了下載位址為0x30400000。第2項 功能可執行NAND FLASH的燒寫,目前支援三星的32M和64M二種型號。BIOS 對NAND FLASH作了簡單分區、主要是為了適應Linux作業系統,分區0為BOOT 區,為儲存bootloader,如BIOS;分區1用做儲存內核,使用者也可將自己的程式 燒入此區;分區2用作儲存根文件系統。BIOS在啓動後,若等待5秒鐘沒接到控 制埠的資料,會自動將儲存在分區1的程式讀到0x30400000位址開始的SDRAM 中並執行。第4項功能可以擦除NAND FLASH區。第5項功能可燒寫NOR FLASH (SST39VF160),此功能只在NOR FLASH啓動後才可用,是用以更新NOR FLASH 中的啓動程式,如果使用者自編了啓動程式,可以在下載完後用此功能燒寫。第 6項功能可設置啓動參數,主要是對Linux Debug用。第7項功能是個POWER-OFF 模式測試,選擇7後,CPU會進入POWER-OFF模式,只能用RESET鍵或底板上 的K4鍵喚醒。
3、燒寫Linux內核zImage
在BIOS功能表選擇0(USB)或1(UART)下載Linux內核zImage,並選擇將下載 文件燒入NAND FLASH,對於內核,選擇分區1,如下圖5-7所示。
圖5-7 燒寫內核zImage至分區1 4、解開qtopia.cramfs的根檔案系統映象
長高科技提供了一個名為qtopia.cramfs的根檔案系統映象,這個根檔案系統 包含了Trolltech公司使用的Qt/Embeddeed開發的一個PDA應用環境(簡稱QPE)。
我們將此qtopia.cramfs利用掛載的方式,將此解開後,我們就可以在裡頭添加我 們自己交叉編譯過的應用程式,在所解開的qtopia.cramfs的根檔案系統映象的目 錄中。
5、建立應用啓動器(.desktop)文件
方法是建立一個文字檔案,在檔案中添加以下的的內容,這些內容指明了應 用的名稱,圖示名等,然後將檔案更名為*.desktop,保存在所解開的qtopia.cramfs 的其中的目錄下,其下為範例的文字檔的副程式(hello.desktop):
[Desktop Entry]
Comment = A Hello Program
Exec = hello //一個編譯好的 Qt/Embedded 應用程式
Icon = Hello //一個要出現在 LCD 的圖檔,通常是 PNG 圖檔 Type = Application //類型為 Application 的目錄下
Name = hello //名稱為 hello
6、製作並燒寫根檔案系統
把Qt/Embedded的二進位資料庫及應用啓動器文件複製到某個目錄下,然後 利用一個製作根檔案系統的工具mkcramfs,製作成某種類別的根檔案系統,最後 把這個根檔案系統燒寫到DMA 2410的FLASH上。燒寫之後,在DMA 2410的根 檔案系統下,就會包含了一個Qt/Embedded3.3.2版本的二進位資料庫檔案及我們 後來加入的所編譯好的Qt/Embedded應用程式,並可在LCD上執行。其燒錄完成 之後開機時,第一個視窗如圖5-8所示。
圖5-8 開機畫面
如圖5-9所示,在畫面上點一下,就會出現測試觸碰影幕的視窗,只要在根 據上面的十字點5次就可以進入下一個畫面。
圖5-9 觸碰影幕測試視窗
如圖5-10所示,此畫面是可以選擇使用者所要用的語言,其中包括了英文、
日文、簡體及繁體中文...等。接下來按下圖之"Next >>"即可到主視窗。
圖5-10 選擇語言之視窗
如圖5-11所示,這就是Qt/Embedded之主視窗之"Applications"之圖,當然 除了Application以外的應用程,我們也可以選擇右上角的選項,其中還有Games
如圖5-11所示,這就是Qt/Embedded之主視窗之"Applications"之圖,當然 除了Application以外的應用程,我們也可以選擇右上角的選項,其中還有Games