日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vxworks 笔记

發布時間:2024/1/18 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vxworks 笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

vxworks 筆記

?

1????安裝

Vxworks 有兩張安裝盤,安裝有以下步驟:

1)????????安裝tornado 2.2.1

使用第一張盤,注意安裝時必須保證當前沒有安裝過tornado,如果安裝過必須從注冊表中清空所有的tornado;選擇“ManualLicense”,即License手動安裝

?

2)????????安裝BSP/Drivers

第一張盤和第二張盤都用了,不知什么東西,也不懂

?

3)????????安裝License

復制license.dat文件到某個位置,然后設置“系統環境變量”,指向這個文件license.dat,注意必須是“系統環境變量”,不能是“用戶環境變量”

這就是手動安裝License 環節。

?

安裝完成,tornada 被安裝到D:\Tornada2.2

?

2????調整

本次任務是完成vxworks 環境下ppc 85xx系列的SDK發布環境,因此需要將之前準備好的ppc 85xx環境復制過來。當時直接將以前開發人員的target、host目錄直接復制過來覆蓋即可,注意備份。

?

3????vxWorks 簡介

3.1??????????????????目錄樹

下圖為目錄樹結構,目前我們僅關注的是host、target兩個;如果獲取幫助可以直接查看docs中的books.html即可。

?

3.2??????????????????工具包

編譯vxworks 時使用gnu工具,包括make、grep等等,這些工具都是專門編譯好的windows 程序,具體位置在host/x86-win32/bin/目錄下,因此在使用腳本編譯時必須將該目錄包含到path環境變量中。

?

3.3??????????????????交叉編譯工具鏈

交叉編譯工具鏈包括編譯器、頭文件、庫文件。

1)????????編譯器

gcc編譯器位置在host\gnu,當前使用gcc作為編譯器

vxworks 提供的diab編譯器,位置在host\diab

?

2)????????頭文件

可以理解為Linux 下的libc庫頭文件,此為vxworks頭文件,位置在target/h,注意,此目錄下不僅在C語言頭文件,也包含vxworks的編譯框架makefile頭文件

?

3)????????庫文件

此為vxworks庫文件,位置在target/lib

?

?

3.4??????????????????BSP

即板級支持包,位置在target/config/目錄下,基本上每個目錄為一個BSP,每個硬件類型都有一個BSP對應,特例如下:

目錄comps,為所有BSP的基本模塊描述文件

目錄all,所有BSP的公共部分,當前放置在xvfi8548目錄下了,由于xvfi8548的BSP中Makefile如此寫,因此沒有更改all的位置。

?

3.5??????????????????project

位置在target/proj/目錄下,對應使用tronado集成環境下的工程,創建一個工程即生成一個目錄,當前使用的工程為xvfi8548。

?

3.6??????????????????Image

vxworks image分兩種:

bootrom,即引導器,用于加載和啟動vxworksimage,bootrom由BSP編譯獲得,這個東西目前是通過燒錄器燒錄到flash上,相當麻煩;希望可以使用uboot來代替。

vxworks,即vxworks主程序,相當于Linux內核加root文件系統,由BSP外加啟動程序實現。由target/proj/xvfi854/目錄下編譯獲得。

?

?

4????編譯框架

vxworks編譯使用gnu make工具,工程之間互相獨立,BSP也互相獨立。目前需要編譯的東西就是bootrom和vxworks兩個。

下面以編譯vxworks為例詳細介紹整個編譯過程。

4.1??????????????????編譯組成

當前工程下的Makefile和target/h/make 目錄組成,在編譯之前務必要設置環境變量,這些環境變量有:

WIND_BASE????????????? 此為vxworks安裝的主目錄,也即host、target目錄的上一層目錄

WIND_HOST_TYPE? 即當前系統的架構,均為x86-win32

PATH??????????????????????????? 主要是添加工具包路徑和編譯工具鏈路徑

?

設置好環境變量后,在需要編譯的工程(或者BSP)目錄下執行make即可,比如當前的vxworks工程在target/proj/xvfi8548/目錄下,直接到該目錄下make 即可。

?

vxworks的編譯組成相當復雜,實在是討厭至極啊。

4.1.1????????Makefile

工程的Makefile做了如下的事情:

1)????????定義需要編譯的.o文件集合,以及這些.o文件的編譯方式,某些.o文件對應的.c文件來自于BSP,某些來自當前目錄

2)????????包含一堆其他的makefile,其中最重要的是兩個,defs.project和rules.project

3)????????定義編譯參數CFLAGS,注意在PPC環境下務必要使用-mstrict-align確保對齊訪問

4)????????定義鏈接參數LIBS,鏈接其他外部模塊,這里包括ezdriver的模塊和SDK模塊

?

注意這個Makefile沒有指定default要做什么,這個default 目標在defs.project中定義

?

4.1.2????????defs.project

顧名思義,該文件主要是定義變量。

定義了default目標,它依賴于exe條件,注意,這個default是整個Makefile的第一個目標,所以make 命令會以它做為編譯的目標。這個exe又在rules.project中定義。

???????? 還要注意其中的CFG_GEN變量,它用來產生依賴關系,但由于我們不會在vxworks 上做多少二次開發,不需要生成什么依賴,全部重新編譯即可,因此后續可以看到將這個生成依賴的命令去年了。

???????? 同時這個文件包含了一系列的makefile文件,以下詳述:

1)????????defs.link

定義link(鏈接)時的一些變量

2)????????defs.x86-win32

定義一堆gnu工具,包括RM、CP等等

3)????????defs.vxworks

定義POSTLINK_MODULES,包括生成ctdt.o這個文件,該文件以后在鏈接vxworks image時會用到

4)????????make.ppc85xxgnu

定義編譯工具鏈

?

4.1.3????????rules.project

顧名思義,該文件主要定義編譯規則。

終于找到exe目標的規則了,它依賴于$(default_rule),這個default_rule在工程的Makefile中就已經定義了,為vxWorks。

該文件包含了rules.vxWorks,其中定義了vxWorks的編譯規則,它依賴于partialImage.o和POSTLINK_MODULES。而其中的partialImage.o 就是Makefile中定義的.o文件集合聚合生成的。

?

4.2??????????????????編譯過程

4.2.1????????生成.o文件

.o文件集合由Makefile定義,包含sysALib.osysLib.o usrAppInit.o linkSyms.o npclib.o mmuE500LibExt.o i2clib.o bspDebug.omotTsecEnd.o usrprjConfig.o,注意這些文件對應的源文件有些在當前工程下有些在BSP下。

?

4.2.2????????生成partialImage.o文件

該文件由如下文件生成:

1)????????4.2.1編譯生成的所有.o文件

2)????????version.o文件,其源文件位于target/config/comps/src目錄下,版本號文件

3)????????CPU專用庫文件,當前為target/lib/libPPC85XXgnuvx.a

4)????????所有外部庫文件,包括ezdriver編譯的.a和SDK編譯的.a文件

?

注意此處是鏈接過程,但鏈接時如果某函數沒有被調用則不會鏈接進去。

?

4.2.3????????生成vxworks image

該文件由如下文件生成:

1)????????4.2.2生成的partialImage.o文件

2)????????ctdt.o 文件,該文件的源文件ctdt.c是由partialImage.o生成的,內容相當簡單,不知道有什么用處

3)????????symTbl.o文件,該文件的源文件symTbl.c是由partialImage.o生成的,其中包含了所有的導出symbol,包含函數和變量,某個函數是否被編譯進vxworksimage可以直接查看該文件

4)????????dataSegPad.o,源文件位置target/config/comps/src/,代碼段保護文件

?

?

?

?

?

?

???????????????????????????????

?

?

?

?

?

?

?

????????????????????????????????????????????????????????????????????????????????????????????????????????


?

5????啟動調試

vxworks的應用程序均在usrAppInit.c 文件usrAppInit函數中啟動,如果需要vxworks啟動時執行自定義的任務則需要在此函數中嵌入代碼。

目前調試環境是在vxworks shell中,為確保SDK和ezdriver的庫文件均編譯進入,在usrAppInit函數中調用AHE_root函數,但不是啟動時調用,是永遠不可能到達的分支中調用。

?

l? 波特率

目前vxworks和bootrom使用的是9600的波特率,和uboot以及Linux不一樣(115200),這個可以在configAll.h中修改。

?

l? bootrom

bootrom 修改啟動參數無效,當前的bootrom 寫死了ftp server為192.168.6.56,本機地址為192.168.6.91,ftp用戶名、密碼均為w,如果要修改則必須重新刷bootrom,這個問題可以通過修改bootrom來解決,查看文件bootconfig.c,函數bootcmdloop在處理命令’c’時,會將用戶輸入的配置調用函數sysNvRamSet刷新入內存,但目前會失敗,sysNvRamSet函數有太多的實現地方,估計正好編譯了某個不支持內存寫的函數。

?

l? 文件操作

vxworks沒有使用文件系統,但可以打開和關閉文件,在代碼中使用fopen時,vxworks會從FTP server上下載一個文件,unlink時會在FTP server上刪除一個文件。

?

l? NP啟動

NP啟動時會需要打開一個EZdat.dat文件,這個文件貌似是NP的配置,必須的,否則會導致NP異常,因此必須將該文件放置到FTP server上供下載。該文件位置如下:

$(EZDRIVER_DIR)/host/tbs/lib/

?

l? 多次調試

AHE_root函數只能執行一次,再次執行時會報NP初始化錯誤,但仍然可以進行多次測試。在執行完第一次的AHE_root后退出,然后再執行SDK的測試函數即可,此刻NP初始化已經完成,不需要再初始化了。


總結

以上是生活随笔為你收集整理的vxworks 笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。