MiniGUI的vxworks環境移植(2): cygwin+tornado交叉編譯minigui庫和示例代碼

上篇文章簡介了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文件中的,那我再打開這個文件。

 

這個文件中有幾個定義需要注意:

  1.     PREFIX:這個地方定義了編譯好的minigui庫文件和頭文件放置的位置
  2. TARGET_DIR:這個地方定義了tornado工具安裝的路徑,方便尋找vxworks的庫文件和交叉編譯鏈工具
  3. 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和大小端的內容,必須和這裏選擇的一樣。

toolchain image

 

 


先給出一個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跑起來了~

 

大功告成!

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章