<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > VxWorks基本概念及常見(jiàn)問(wèn)題

VxWorks基本概念及常見(jiàn)問(wèn)題

——
作者: 時(shí)間:2007-03-01 來(lái)源:電子產(chǎn)品世界 收藏
Bootrom和Boot image的區別,Boot image和VxWorks image的聯(lián)系和區別

bootrom 是指on-chip bootrom,在CPU芯片內部,內嵌有小的boot程序(bootloader),類(lèi)似于PC機主板上的BIOS的存儲區域。和boot image不是一回事。VxWorks文檔中的bootrom區是指boot image存放的位置。

boot image的作用是把VxWorks image 加載到主板。boot image只初始化很少的硬件系統如串口,網(wǎng)口等。為加載VxWorks image做準備,當VxWorks系統下載完畢后,boot image的作用也就完成了。

VxWorks image含有完整的VxWorks OS。是真正運行于目標板上的操作系統。應用程序運行于VxWorks系統之上。

boot image 和VxWorks image生成在使用BSP文件上的區別在于:在啟動(dòng)順序中Bootrom調用bootConfig.c,而VxWorks調用usrConfig.c.




在ROM中vxworks運行的方式(和bootrom編譯到一起還是單獨固化到ROM中),在ROM中的內存分配?

VxWorks加載到主板運行,分不同的情況,如果VxWorks是壓縮的,加載時(shí)解壓到RAM的RAM_HIGH_ADRS.

如果是ROM based VxWorks,VxWorks image的data段復制到RAM的LOCAL_LOW_ADRS, text部分留在ROM并在ROM中執行。

既不壓縮又不ROM based的VxWorks直接copy到RAM_LOW_ADRS運行。


 

若在config.h中修改系統設置,如增加網(wǎng)卡等,是否需要重新燒bootrom?如果增加其他oem產(chǎn)品呢?


如果主板中有Boot image存在則不需要重新燒,用FTP等download加載VxWorks即可。



 

VxWorks 系統編程中任務(wù)級與中斷級的通訊如何實(shí)現?


中斷是由硬件觸發(fā),軟件的作用只是將中斷服務(wù)例程(ISP)與中斷事件連接起來(lái).

1.使能中斷,函數intEnable().

2.用intConnect()登記中斷號,和相應的中斷例程ISR.
這樣一旦有中斷發(fā)生,系統自動(dòng)跳轉到相應位置執行ISR.

 

Bootloader怎么得到,如果對開(kāi)發(fā)板有些改動(dòng),還能使用開(kāi)發(fā)板的bootloader嗎?bootloader起到什么作用?

Bootloader相當于PC機主板上的BIOS,是最底層的引導軟件,初始化主板的基本設置,為接收外部程序做硬件上的準備.

有些bootloader已經(jīng)嵌在CPU內了,沒(méi)有bootloader的CPU可以在片外的eeprom內做bootloader,也可以不要bootloader,直接通過(guò)JTAG口灌入程序,開(kāi)發(fā)板改動(dòng)基本上不會(huì )影響bootloader.

 

VxWorks 應用程序編譯下載時(shí)常見(jiàn)問(wèn)題及原因分析

 Tornado環(huán)境下編譯產(chǎn)生的錯誤:標準C函數或自己的函數,變量不認識(undefined symbol),編譯失敗。

Tornado支持c 和 c++ ,文件后綴為.cpp時(shí)編譯器會(huì )認為是c++文件,這樣有些定義類(lèi)型為C的函數在編譯或下載時(shí)不被認可。

解決方法是 1.把如果在c++文件(.cpp)中調用c函數,應該把這些不被認可的c類(lèi)型函數用語(yǔ)句extern "C"說(shuō)明一下為c函數。

另外,如果將c文件的后綴小寫(xiě)的.c誤寫(xiě)為大寫(xiě)的.C,也會(huì )出同樣的錯誤,編譯時(shí)不會(huì )編譯這個(gè)文件。

  

Tornado環(huán)境應用程序下載產(chǎn)生的錯誤:函數不認識(undefined symbol),下載失敗。

雖然編譯通過(guò),可是下載時(shí)依然會(huì )有這樣的問(wèn)題,仍然是函數或變量沒(méi)有定義。系統不認識,這是出錯的原因基本上時(shí)沒(méi)有定義的錯誤。查找包含函數或變量的頭文件是否加了進(jìn)去。如果實(shí)在找不到定義的話(huà),簡(jiǎn)單的辦法是先把這他們去掉(當然是沒(méi)有其他地方用到的情況下)試一試,先down下去,能運行后,然后添加,再繼續查找。



在A(yíng)RM下不用Boot image,直接燒入VxWorks image的過(guò)程

有些ARM CPU一般分兩種運行方式,一種是Boot方式,一種是normal方式。

在Boot方式下直接燒寫(xiě)VxWorks image到Flash, 這種VxWorks image包含有boot的功能(類(lèi)似VxWorks.rom形式),中間那段燒寫(xiě)到flash的程序是必須的,第一次通過(guò)串口下載VxWorks image到Dram是一個(gè)簡(jiǎn)單的過(guò)渡,有boot loader控制。

當燒寫(xiě)完成后,切換CPU到normal模式,系統啟動(dòng),開(kāi)始逐行讀Flash中的指令,是由VxWorks BSP控制,根據不同的VxWorks image定義,執行不同的操作,例如若VxWorks是壓縮的,則解壓復制到DRAM的高位地址,...。


 

VxWorks image 和Boot image中的兩次硬件初始化之間的區別

Boot image和VxWorks image都對硬件進(jìn)行了初始化。兩次硬件初始化的是不同的。

BootRom映像主要作用是通過(guò)網(wǎng)口或串口下載VxWorks系統,所以它只是初始化很少的硬件系統如串口,網(wǎng)口等來(lái)滿(mǎn)足下載VxWorks的需要,一旦VxWorks下載完畢。這些初始化過(guò)的硬件的作用也就完成了。

VxWorks啟動(dòng)后會(huì )從新對幾乎所有的硬件設備進(jìn)行完全的初始化來(lái)滿(mǎn)足VxWorks操作系統運行的需要。


 

匯編語(yǔ)言在VxWorks系統編程的使用: 

匯編語(yǔ)言主要出現在BSP文件roInit.s,sysAlib.s等,這些匯編指令是系統初始化硬件用的,硬件系統Power up時(shí)硬件特別是內存沒(méi)有初始化,C函數庫沒(méi)有裝入內存,系統此時(shí)不支持C語(yǔ)言程序,只支持它自己的32位匯編指令,所以只能用匯編指令來(lái)初始化硬件,為后續的操作系統包括C語(yǔ)言支持做準備.在OS正常運行后,就可以用C了.

Tornado不支持匯編指令,

匯編在編譯連接BSP,生成bootrom或VxWorks映像,才被編譯.有兩種方法:

1.現在可以在Tornado環(huán)境下生成bootrom或建 Bootable 的 project 生成 VxWorks

2.傳統的方法,在命令行方式,用make編譯生成.

在Tornado下的downloadable的project,application中不能用匯編.

不過(guò)一般匯編很少用.
可以與其他bsp文件在tornado下作成bsp或用命令行make.

 

VxWorks 下寫(xiě)驅動(dòng)需注意的問(wèn)題  

1。MMU 對該硬件的地址映射正確 (改 BSP )
2。中斷向量表該中斷的定義位置,知道相應中斷的中斷標志位等信息(改 BSP )
3。查出中斷號及中斷級別,硬件中斷登記 (INTCONNECT ),及 ISR  
4。系統任務(wù)協(xié)調,保證在該程序執行時(shí),沒(méi)有其它任務(wù)占用 CPU


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>