上篇文章簡介了vxworks和tornado環境的簡單程序設計。這次我們要拿minigui來編譯vxworks下的運行程序了。
首先,需要準備好minigui1.6.10的庫文件,和一些示例文件,可以到minigui.org上下載.(可能我機器上的版本和下載的開源版本不一樣,但是這個文章寫出來就是爲了備忘的。所以以我自己的版本爲主介紹)
1. Cygwin環境安裝
這個就不多說了,windows上很有名的模擬linux平臺的工具軟件。可以很方便的下載到。安裝的時候注意安裝make, vim兩個東西即可。
2. 在cygwin上交叉編譯minigui的產品
由於我這裏的目標板是mips的核,那我就以mips爲例:
minigui源代碼中編譯文件:
makefile.ng是用來vxworks的編譯的文件.打開這個文件可以看到
include rules.make
打開rules.make文件,可以看到這個文件中做了一些相關的設置。注意第一句
TARGET_RULES=build/rules-mipse.vxworks
看來用的定義是放在這個build/rules-mipse.vxworks文件中的,那我再打開這個文件。
這個文件中有幾個定義需要注意:
- PREFIX:這個地方定義了編譯好的minigui庫文件和頭文件放置的位置
- TARGET_DIR:這個地方定義了tornado工具安裝的路徑,方便尋找vxworks的庫文件和交叉編譯鏈工具
- CFLAGS:定義了minigui編譯時候的參數,有類似下面的參數
-g -mips3 -EL -D__LITTLE_ENDIAN__ -Wall -DTOOL_FAMILY=gnu -DTOOL=gnu -D_WRS_KERNEL -DMIPSEL -DCPU=MIPS64 -D__mips__ -D__MIPSEL__
我們需要注意修改的地方有兩個
- -D__LITTLE_ENDIAN__ 大小端,根據不同的客戶機有不同的要求,可能是__BIG__ENDIAN__ __LITTLE_ENDIAN__
- -DCPU=MIPS64 cpu類型:也需要根據不同的客戶機的要求,MIPS64 MIPS32等
上面的內容都設置好了之後,我們還需要根據板子不同需要做一些代碼定製,如下:
關閉鼠標,關閉png,jpeg,commlcd(爲了排除問題,只打開dummy 引擎);打開DUMMY引擎。
也就是註釋掉:……_CURSOR_SUPPORT 1……
……_PNG_FILE_SUPPORT 1……
……_JEPG_FILE_SUPPORT 1……
修改配置
vim src/sysres/mgetc-vxi386.c
修改爲:
static char *SYSTEM_VALUES[]={"dummy","dummy","/dev/ts","none"};
下面我們就可以進行交叉編譯了:
交叉編譯時,必須使用cygwin內置的make命令來編譯。所以輸入如下
$/bin/make -f makefile.ng clean
$/bin/make -f makefile.ng
$/bin/make -f makefile.ng install
編譯完成後,就可以在已經定義好的目錄下找到編譯好的libminigui.a文件和minigui相關的頭文件.
3. tornado產品上運行編譯出來的minigui示例
還記得上個文章說到怎麼創建項目吧。那我們新創建一個項目,這裏有幾點需要注意
- 如果我們是對一個已經編譯好內核的板子來說。我們需要準備好這個內核文件,方便 我們寫好的程序downloading到板子上
- 如果是一個已經編譯好內核的板子,我們就只需要建立一個downloadable的應用程序就可以了。
- 我們在選擇toolchain的設置的時候(如圖),需要按照不同的板子環境設置不同的toolchain,這裏必須注意的是剛纔編譯minigui設置的CPU和大小端的內容,必須和這裏選擇的一樣。
先給出一個minigui的helloworld實例
把這個實例添加到新建的tornado項目中,假設命名爲helloworld.c文件,接下來,就需要把minigui的頭文件路徑和庫文件給鏈接到tornado的項目中.
打開tornado的workspace窗口中的build標籤,我們在這裏面設置minigui的頭文件和鏈接文件
1)雙擊demo builds下面的MIPS64gnule。
2)在打開的窗口中選擇c/c++ compile tag
這裏有tornado在編譯的時候使用的參數,
首先我們要刪除-ansi, minigui在開發的過程中,一些代碼中沒有按照ansi標準,所以我們需要先刪除這個參數。
然後, 我們可以像使用gcc編譯選項的參數一樣加入我們的頭文件路徑,或者通過下面的“Include path...”按鈕來添加
-IC:/cross/mipse/include
3)添加鏈接,這裏注意不是在link標籤下,是在Macro宏標籤下添加
打開PRJ_LIBS宏,把庫文件路徑複製到value值裏,然後按“add/set...”按鈕
C:/cross/mipse/lib/libminigui.a
這樣,我們就把minigui的庫文件鏈接上了,而且也加好了minigui的頭文件路徑.
下面,我們就可以編譯我們剛寫的minigui的helloworld程序了。
4)設置目標板
現在我們需要連接上我們的目標版上的vxworks系統,把我們編譯好的程序燒上去了。首先,在菜單tools->target server...的選項中選擇configure,新建一個configuration,修改了configuration默認的名稱後,選擇target server properties下拉菜單,選擇core file and symbols,然後指定file路徑,這個所說的file就是前面提醒大家準備好的vxworks的內核文件"vxWorks"
然後在target server中填入本機的ip地址, 在target name/IP address裏面填入目標板的ip地址,確認。這時主界面的toolbar中的combobox裏面就可以選擇當前的這個配置了。選中當前的配置後,就可以嘗試啓動鏈接了
5)讓我們的minigui程序跑起來
目標板設置完成之後,我們可以把編譯好的download到目標機器上,啓動windsh,敲入minigui_entry,就可以把剛纔燒入的helloworld跑起來了~
大功告成!