




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式操作系統(tǒng)第2章 VxWorks及其集成開發(fā)及其集成開發(fā) 環(huán)境Tornado嵌入式操作系統(tǒng)主要內(nèi)容1、VxWorks操作系統(tǒng)操作系統(tǒng)2、VxWorks映像及其啟動(dòng)過(guò)程映像及其啟動(dòng)過(guò)程3、Tornado集成開發(fā)環(huán)境集成開發(fā)環(huán)境嵌入式操作系統(tǒng) 重點(diǎn)掌握 映像的類型及啟動(dòng)順序 生成映像相關(guān)的代碼 Tornado集成開發(fā)環(huán)境搭建集成開發(fā)環(huán)境搭建 創(chuàng)建映像 動(dòng)態(tài)加載、運(yùn)行、調(diào)試應(yīng)用程序嵌入式操作系統(tǒng)1、VxWorks操作系統(tǒng)操作系統(tǒng)VxWorks操作系統(tǒng)的體系結(jié)構(gòu)操作系統(tǒng)的體系結(jié)構(gòu)VxWorks主機(jī)與目標(biāo)機(jī)主機(jī)與目標(biāo)機(jī)VxWorks模塊庫(kù)模塊庫(kù)VxWorks與與BSP嵌入式操作系統(tǒng)1.1 VxWor
2、ks體系結(jié)構(gòu)體系結(jié)構(gòu)VxWorks的網(wǎng)絡(luò)設(shè)施VxWorks的網(wǎng)絡(luò)設(shè)施包括:遠(yuǎn)程文件訪問(wèn),包括基于client/Server的 嵌入式操作系統(tǒng)NFS機(jī)制以及使用RSH、FTP或TFTP的非NFS機(jī)制遠(yuǎn)程的登錄和telnet以及bootp和ARP代理遠(yuǎn)程過(guò)程調(diào)用RPC(Remote Procedure Call與BSD套接字兼容的編程接口TCP/IP協(xié)議??蛇x的簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP(Simple Network Management Protocol無(wú)論是松耦合的串行線路、標(biāo)準(zhǔn)的以太網(wǎng)連接還是緊耦合的利用共享內(nèi)存的背板總線,所有的VxWorks網(wǎng)絡(luò)機(jī)制都遵循標(biāo)準(zhǔn)的Internet協(xié)議嵌入式操作
3、系統(tǒng)其他組件 虛擬內(nèi)存(VxVMI)與共享內(nèi)存(VxMP) VxVMI為帶有為帶有MMU的目標(biāo)板提供了虛擬內(nèi)存的目標(biāo)板提供了虛擬內(nèi)存 機(jī)制 VxMP提供了共享信號(hào)量、消息隊(duì)列和在不同提供了共享信號(hào)量、消息隊(duì)列和在不同 處理器之間的共享內(nèi)存區(qū)域 加載調(diào)試等開發(fā)工具組件 提供運(yùn)行在目標(biāo)機(jī)上的動(dòng)態(tài)加載器Loader、目 標(biāo)機(jī)調(diào)試代理WDB Agent、Target Shell等等嵌入式操作系統(tǒng)1.2 VxWorks的主機(jī)與目標(biāo)機(jī)的主機(jī)與目標(biāo)機(jī) VxWorks的開發(fā)使用基于主機(jī)的開發(fā)使用基于主機(jī)/目標(biāo)機(jī)結(jié)構(gòu)的交目標(biāo)機(jī)結(jié)構(gòu)的交 叉開發(fā)環(huán)境 主機(jī):運(yùn)行Tornado集成開發(fā)環(huán)境,為目標(biāo) 機(jī)生成VxWork
4、s和應(yīng)用程序 目標(biāo)機(jī):運(yùn)行VxWorks和應(yīng)用程序的嵌入式 系統(tǒng) 主機(jī)與目標(biāo)機(jī)之間通過(guò)以太網(wǎng)或串口相連, 其通信由Target server/Agent方式進(jìn)行方式進(jìn)行嵌入式操作系統(tǒng)默認(rèn)方式下,target server與target agent通過(guò)網(wǎng)絡(luò)通信,但用戶也可以改變通信方式嵌入式操作系統(tǒng) 目標(biāo)代理( Target Agent ) 遵循WDB(Wind Debug)協(xié)議,允許目標(biāo)機(jī))協(xié)議,允許目標(biāo)機(jī) 與主機(jī)上的Tornado開發(fā)工具相連 在目標(biāo)代理的默認(rèn)設(shè)置中,目標(biāo)代理是以 VxWorks的一個(gè)任務(wù)的一個(gè)任務(wù)tWdbTask的形式運(yùn)行的的形式運(yùn)行的 TargetServer向目標(biāo)代理發(fā)
5、送調(diào)試請(qǐng)求(斷點(diǎn)向目標(biāo)代理發(fā)送調(diào)試請(qǐng)求(斷點(diǎn) 設(shè)置、任務(wù)控制等等),調(diào)試請(qǐng)求可以決定目標(biāo) 代理對(duì)系統(tǒng)中其他任務(wù)的控制和處理嵌入式操作系統(tǒng)1.3 VxWorks模塊庫(kù)模塊庫(kù) VxWorks子程序都組織成庫(kù),每個(gè)庫(kù)都有一個(gè)或子程序都組織成庫(kù),每個(gè)庫(kù)都有一個(gè)或 多個(gè)頭文件,如:庫(kù)函數(shù)taskLibsemLib 函數(shù)taskSpawnsemTake頭文件taskLib.hsemLib.h嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)1.4 VxWorks與與BSP BSP由代碼、文檔和規(guī)范組成,用作由代碼、文檔和規(guī)范組成,用作VxWorks程程 序和特定硬件之間的接口 BSP代碼用于完成系統(tǒng)初始化,設(shè)備驅(qū)動(dòng)和其他代碼用
6、于完成系統(tǒng)初始化,設(shè)備驅(qū)動(dòng)和其他 一些硬件相關(guān)的操作 VxWorks提供定制硬件的板級(jí)支持包提供定制硬件的板級(jí)支持包BSP,實(shí)現(xiàn),實(shí)現(xiàn) 硬件抽象層 VxWorks自帶的自帶的BSP代碼是針對(duì)硬件廠商的代碼是針對(duì)硬件廠商的Demo 板定制的,用戶可以根據(jù)自己的單板對(duì)Demo板代 碼進(jìn)行修改嵌入式操作系統(tǒng)2、VxWorks映像及其啟動(dòng)過(guò)程映像及其啟動(dòng)過(guò)程 VxWorks映像類型映像類型 映像相關(guān)的文件 VxWorks的啟動(dòng)過(guò)程的啟動(dòng)過(guò)程嵌入式操作系統(tǒng)映像格式 ELF格式(格式(Executable and Linking Format)Executable file嵌入式操作系統(tǒng)2.1 VxWor
7、ks映像分類映像分類 Bootrom型型常稱常稱bootrom或或boot 是一個(gè)最小化、專用的VxWorks引導(dǎo)映像,實(shí)現(xiàn)最少 的系統(tǒng)初始化 主要用于啟動(dòng)裝載VxWorks映像,其功能類似于PC機(jī) 的BIOS 運(yùn)行時(shí)也建立起多任務(wù)環(huán)境 通常存放在ROM或Flash中 Vxworks型型常稱常稱Vxworks映像映像 是系統(tǒng)最終要運(yùn)行的映像 在運(yùn)行時(shí)至少有一部分需要在RAM中運(yùn)行嵌入式操作系統(tǒng) 這兩大類型的映像都由BSP、VxWorks和 Application 3個(gè)部分組成,可以在其開發(fā)工具個(gè)部分組成,可以在其開發(fā)工具 Tornado上通過(guò)建立一個(gè)上通過(guò)建立一個(gè)bootable image獲
8、得獲得ApplicationVxWorksWind內(nèi)核WDB AgentShellFile SystemBSP嵌入式操作系統(tǒng) BSP(Board Support Pakage,板級(jí)支持包):它,板級(jí)支持包):它 由初始化和基本驅(qū)動(dòng)程序兩部分組成 初始化是指從系統(tǒng)上電復(fù)位開始直到Wind內(nèi)核和 UsrRoot根任務(wù)啟動(dòng)的這段時(shí)間,系統(tǒng)的執(zhí)行過(guò)程根任務(wù)啟動(dòng)的這段時(shí)間,系統(tǒng)的執(zhí)行過(guò)程 初始化過(guò)程包括:CPU Init、Board Init、System Init。 CPU Init:初始化:初始化CPU的內(nèi)部寄存器的內(nèi)部寄存器 Board Init:初始化:初始化I/O的寄存器的寄存器 System
9、 Init:為系統(tǒng)的運(yùn)行準(zhǔn)備數(shù)據(jù)結(jié)構(gòu),進(jìn)行數(shù)據(jù)初:為系統(tǒng)的運(yùn)行準(zhǔn)備數(shù)據(jù)結(jié)構(gòu),進(jìn)行數(shù)據(jù)初 始化嵌入式操作系統(tǒng) 基本驅(qū)動(dòng)程序完成對(duì)最小I/O設(shè)備的讀寫訪問(wèn)等驅(qū) 動(dòng)操作 VxWorks:包括定制的:包括定制的VxWorks內(nèi)核和各種外掛內(nèi)核和各種外掛 功能模塊 Application:為用戶編寫的應(yīng)用程序:為用戶編寫的應(yīng)用程序 BSP代碼位于代碼位于targetconfig下硬件相關(guān)子目錄下硬件相關(guān)子目錄嵌入式操作系統(tǒng)VxWorks映像映像 當(dāng)構(gòu)造VxWorks映像時(shí),可以根據(jù)需要構(gòu)造不同 類型的映像,系統(tǒng)把這些映像分成三種類型: ROM駐留(駐留(ROM-Resident image)的映像)的映
10、像 具備自啟動(dòng)功能 基于ROM的映像(ROM-based image) 可加載的映像(loadable image)嵌入式操作系統(tǒng)ROM駐留(駐留(ROM-Resident)的映像)的映像 它在啟動(dòng)時(shí)把數(shù)據(jù)段拷貝到目標(biāo)機(jī)RAM中 這種類型的映像在啟動(dòng)階段比較快,但它在目標(biāo) 機(jī)上執(zhí)行的速度比其他類型的映像要慢 升級(jí)不方便,適合內(nèi)存資源有限的場(chǎng)合嵌入式操作系統(tǒng) 執(zhí)行順序:嵌入式操作系統(tǒng)基于ROM的映像(ROM-based image) 不具備自啟動(dòng)功能,它的執(zhí)行需要通過(guò)bootrom 把它從ROM或Flash中裝載到目標(biāo)機(jī)RAM中,然 后才開始執(zhí)行 這種類型的映像通常在啟動(dòng)階段比較慢,但在目 標(biāo)機(jī)
11、上執(zhí)行的速度要快 方便升級(jí) 產(chǎn)品發(fā)布時(shí),常使用這種映像 執(zhí)行順序:嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)可加載的映像(loadable image) 不具備自啟動(dòng)功能,它的執(zhí)行需要通過(guò)bootrom 把它裝載到目標(biāo)機(jī)RAM中,然后才開始執(zhí)行 調(diào)試時(shí),一般使用這種映像 加載時(shí)需要相關(guān)協(xié)議支持:串口、網(wǎng)口及其他協(xié) 議 執(zhí)行順序:嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)典型的VxWorks映像 按照VxWorks構(gòu)造規(guī)則可以創(chuàng)建以下多種典型的 VxWorks映像映像 VxWorksloadable image,由,由bootrom加載,在加載,在RAM 中運(yùn)行,使用宿主機(jī)上的WindSh工具和符號(hào)表 VxWorks.st
12、loadable image,加載方式同上,但它內(nèi),加載方式同上,但它內(nèi) 置符號(hào)表 VxWorks_romrom-based image,寫入,寫入rom,自啟,自啟 動(dòng),在RAM中運(yùn)行 VxWorks.st_romcompressed rom-based image,加,加 載方式同上嵌入式操作系統(tǒng) VxWorks.res.romrom-resident image,代碼在,代碼在ROM 中運(yùn)行 VxWorks.res_rom_nosymrom-resident image,代碼,代碼 在ROM中運(yùn)行,不包含符號(hào)表以上幾種均為VxWorks 映像 bootrom基于基于rom壓縮型的引導(dǎo)映像
13、壓縮型的引導(dǎo)映像 bootrom_uncmp基于基于rom非壓縮型的引導(dǎo)對(duì)象非壓縮型的引導(dǎo)對(duì)象 bootrom_resrom駐留型引導(dǎo)映像駐留型引導(dǎo)映像以上3種均為bootrom嵌入式操作系統(tǒng)2.2 映像相關(guān)的文件 映像相關(guān)文件主要包含在四個(gè)目錄下(BSP相關(guān) 文件): Tornadotargetconfigall:所有:所有BSP的公共部分的公共部分 Tornadotargetconfigcompsvxworks:內(nèi)核基本模塊描內(nèi)核基本模塊描 述文件(*.cdf) Tornadotargetconfigcompssrc:模塊配置文件(被模塊配置文件(被 usrConfig.c使用)使用) T
14、ornadotargetconfigbspname:與目標(biāo)板相關(guān)的部分:與目標(biāo)板相關(guān)的部分嵌入式操作系統(tǒng) configall目錄下主要有如下幾個(gè)文件目錄下主要有如下幾個(gè)文件 bootConfig.c :是所有是所有Bootrom的主要初始化與的主要初始化與 控制文件 BootConfig.c是是usrConfig.c的一個(gè)子集,所以的一個(gè)子集,所以 Bootrom只能提供完整只能提供完整VxWorks Image中的部分功中的部分功 能 Boot Image不使用不使用MMU庫(kù)(庫(kù)(SPARC除外)。在集除外)。在集 成環(huán)境下修改工程相關(guān)的配置信息不會(huì)影響 Bootrom,只有直接修改只有直接
15、修改config.h、configAll.h、 bootConfig.c和和bootInit.c文件才會(huì)影響到文件才會(huì)影響到Bootrom嵌入式操作系統(tǒng) bootInit.c:定義了:定義了romStart()函數(shù),用于函數(shù),用于 Bootrom的第二階段初始化。首先把的第二階段初始化。首先把text和和data 段從ROM拷到RAM中,然后初始化部分RAM, 進(jìn)行解壓 usrConfig.c:包含:包含VxWorks Image的主要初始的主要初始 化代碼,非常完整。使用命令行編譯時(shí)才會(huì)用 到此文件 configAll.h:設(shè)置了所有:設(shè)置了所有VxWorks映像的默認(rèn)映像的默認(rèn) 配置,包括
16、內(nèi)核配置、組件配置、參數(shù)配置、 Agent配置等等配置等等嵌入式操作系統(tǒng) configbspname:在該目錄下主要有如下幾個(gè)文:在該目錄下主要有如下幾個(gè)文 件 makefile: 用于命令行下編譯,其中定義了一些 宏,如:CPU,TOOL,TARGET_DIR,VENDOR,BOARD,ROM_TEXT_ADRS,ROM_BASE_ADRS,ROM_SIZE,RAM_LOW_ADRS,RAM_HIGH_ADRS; config.h:包含所有的頭文件和與目標(biāo)板相關(guān)的:包含所有的頭文件和與目標(biāo)板相關(guān)的 特殊定義,如:BSP版本號(hào)和修訂版本號(hào)、默 認(rèn)引導(dǎo)參數(shù)、對(duì)Cache和MMU的配置、RAM和
17、ROM的定位以及大小配置、外部總線地址映 射,網(wǎng)絡(luò)設(shè)備和中斷向量嵌入式操作系統(tǒng) romInit.s:該文件包含該文件包含Bootrom和和Rom-based VxWorks Image的初始化入口匯編代碼,即實(shí)的初始化入口匯編代碼,即實(shí) 現(xiàn)了romInit()。目標(biāo)板一上電就開始執(zhí)行 romInit(),主要完成三部分工作:,主要完成三部分工作: 屏蔽中斷,初始化CPU 配置內(nèi)存系統(tǒng),通常包括關(guān)閉cache,初始化內(nèi)存控制 器 初始化堆棧指針和其它寄存器以執(zhí)行C語(yǔ)言,然后 調(diào)用romStart()Note:romInit()函數(shù)必須設(shè)計(jì)成與內(nèi)存地址無(wú)關(guān)的函數(shù)必須設(shè)計(jì)成與內(nèi)存地址無(wú)關(guān)的代碼(PI
18、C),romInit.s只執(zhí)行一些必要的初始化,只執(zhí)行一些必要的初始化,其余的初始化工作可放到sysHwInit()中實(shí)現(xiàn)嵌入式操作系統(tǒng) sysALib.s:包含目標(biāo)板或系統(tǒng)相關(guān)的匯編語(yǔ)言:包含目標(biāo)板或系統(tǒng)相關(guān)的匯編語(yǔ)言 函數(shù),即實(shí)現(xiàn)了_sysInit()。這是Bootrom起來(lái) 以后執(zhí)行的第一段代碼,sysALib.s類似于 romInit.s完成的工作,但它不必設(shè)計(jì)成完成的工作,但它不必設(shè)計(jì)成PIC,且且 可調(diào)用其它庫(kù)中的函數(shù)嵌入式操作系統(tǒng) sysLib.c:包含目標(biāo)板或系統(tǒng)相關(guān)的:包含目標(biāo)板或系統(tǒng)相關(guān)的C語(yǔ)言函數(shù)語(yǔ)言函數(shù), 該文件提供板級(jí)接口,通過(guò)該接口,VxWorks 和應(yīng)用程序的實(shí)現(xiàn)
19、與目標(biāo)系統(tǒng)無(wú)關(guān),sysLib.c包 含srcdrv目錄下的驅(qū)動(dòng)程序子文件,驅(qū)動(dòng)程序 的安裝和初始化在子文件中完成。它中一般應(yīng) 實(shí)現(xiàn)以下幾類函數(shù): 系統(tǒng)時(shí)鐘相關(guān)函: sysClkConnect(),sysClkDisable(),sysClkEnable(),sysClkInt(),sysClkRateGet(),sysClkRateSet()嵌入式操作系統(tǒng) 系統(tǒng)硬件初始化函數(shù):sysHwInit(),sysHwInit2() ; 內(nèi)存相關(guān)函數(shù):sysMemTop() 串口相關(guān)函數(shù):sysSerialHwInit(), sysSerialHwInit2(),sysSerialChanGet()
20、雜項(xiàng)函數(shù):sysBspRev(),sysModel(),sysToMonitor() 其他可選函數(shù):如:輔助時(shí)鐘中斷相關(guān)函數(shù),總線 相關(guān)函數(shù) sysSerial.c:串口驅(qū)動(dòng)程序的安裝和初始化:串口驅(qū)動(dòng)程序的安裝和初始化 sysNet.c:網(wǎng)絡(luò)接口設(shè)備的安裝和初始化:網(wǎng)絡(luò)接口設(shè)備的安裝和初始化嵌入式操作系統(tǒng) bspname.h:包含與板子相關(guān)的宏定義。若要:包含與板子相關(guān)的宏定義。若要 把srcdrv下的某驅(qū)動(dòng)程序移植到目標(biāo)板上,必 須在bspname.h文件開始包含目錄targethdrv 下該驅(qū)動(dòng)程序相對(duì)應(yīng)的頭文件 bspname.h應(yīng)該定義:中斷向量或中斷號(hào);應(yīng)該定義:中斷向量或中斷號(hào);
21、I/O 設(shè)備地址;設(shè)備寄存器位的含義定義;系統(tǒng)時(shí) 鐘和輔助時(shí)鐘最大和最小時(shí)鐘速率嵌入式操作系統(tǒng)2.3 VxWorks的啟動(dòng)過(guò)程的啟動(dòng)過(guò)程 以可加載型映像為例,給出VxWorks操作系統(tǒng)的 啟動(dòng)過(guò)程 BSP啟動(dòng)過(guò)程可以分成兩部分:?jiǎn)?dòng)過(guò)程可以分成兩部分: bootrom啟動(dòng)過(guò)程(又簡(jiǎn)稱啟動(dòng)過(guò)程(又簡(jiǎn)稱boot啟動(dòng)過(guò)程)啟動(dòng)過(guò)程) VxWorks映像啟動(dòng)過(guò)程映像啟動(dòng)過(guò)程(又簡(jiǎn)稱映像啟動(dòng)過(guò)程又簡(jiǎn)稱映像啟動(dòng)過(guò)程) 兩者在使用BSP文件上的區(qū)別在于:在啟動(dòng)順序 中所調(diào)用的文件不同。如:romInit.s/sysAlib.s、 bootConfig.c/usrConfig.c等等嵌入式操作系統(tǒng)bootro
22、m啟動(dòng)過(guò)程啟動(dòng)過(guò)程Power up/resetromInitromStartusrInitusrRootbootCmdLoopbootLoadtargetconfigbspnameromInit.stargetconfigallbootInit.ctargetconfigallbootConfig.cVxWorks嵌入式操作系統(tǒng)romInit() 引導(dǎo)映像首先執(zhí)行的函數(shù)。路徑: targetconfigbspnameromInit.s 屏蔽處理器中斷 保存啟動(dòng)類型(冷/熱啟動(dòng)) 硬件相關(guān)的初始化 初始化處理器 初始化堆棧指針 初始化SDRAM控制器(時(shí)鐘頻率、等待狀態(tài)、刷新頻 率等) 如果需要
23、屏蔽二級(jí)高速緩存 初始化內(nèi)存 調(diào)用romStart()嵌入式操作系統(tǒng)romStart() 引導(dǎo)映像第一個(gè)執(zhí)行的C函數(shù)。路 徑:./all/bootInit.c 將數(shù)據(jù)段從ROM拷貝到RAM 將代碼段從ROM拷貝到RAM 清理沒(méi)有使用的那部分內(nèi)存(冷啟動(dòng)時(shí)) 執(zhí)行解壓操作(如果需要) 調(diào)用預(yù)內(nèi)核的通用初始化程序(usrInit())嵌入式操作系統(tǒng) 在開發(fā)過(guò)程中往往需要修改,尤其是一些宏定義, 如: LOCAL_MEM_LOCAL_ADRS目標(biāo)板本地目標(biāo)板本地RAM起始地起始地 址 LOCAL_MEM_SIZE本地本地RAM大小大小 USER_RESERVED_MEM從從RAM頂端其用戶保留字節(jié)頂
24、端其用戶保留字節(jié) 數(shù) RAM_HIGH_ADRS拷貝引導(dǎo)映像的入口地址拷貝引導(dǎo)映像的入口地址 RAM_LOW_ADRS拷貝拷貝VxWorks映像的入口地址映像的入口地址 ROM_TEXT_ADRS引導(dǎo)引導(dǎo)ROM的入口地址的入口地址 ROM_SIZEROM空間大小空間大小 ROM_BASE_ADRSROM基地址基地址 RESERVED從從RAM底部其用戶保留字節(jié)數(shù)底部其用戶保留字節(jié)數(shù) STACK_SAVE為為RomStart()準(zhǔn)備的最大堆棧大小準(zhǔn)備的最大堆棧大小嵌入式操作系統(tǒng)SYS_MEM_BOTTOM系統(tǒng)存儲(chǔ)區(qū)底部地址系統(tǒng)存儲(chǔ)區(qū)底部地址SYS_MEM_TOP系統(tǒng)存儲(chǔ)區(qū)頂部地址系統(tǒng)存儲(chǔ)區(qū)頂部地
25、址binArrayStart壓縮型二進(jìn)制映像的起始地址壓縮型二進(jìn)制映像的起始地址binArrayEnd壓縮型二進(jìn)制映像的結(jié)束地址壓縮型二進(jìn)制映像的結(jié)束地址 romStart()運(yùn)行完后,運(yùn)行完后,RAM的布局:的布局:嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)usrInit()路徑: ./all/bootConfig.c對(duì)BSS段賦零把BootType值賦給sysStartType調(diào)用excVecInit(),初始化所有系統(tǒng)和缺省中斷向量調(diào)用sysHwInit(),初始化與目標(biāo)板相關(guān)的硬件調(diào)用usrKernelInit(),配置VxWorks內(nèi)核調(diào)用kernelInit(),初始化并啟動(dòng)內(nèi)核調(diào)用usrRoo
26、t()嵌入式操作系統(tǒng)usrRoot() 路徑: ./all/bootConfig.c 初始化內(nèi)存池 調(diào)用sysClkConnect(), sysClkRateSet(), sysClkEnable()初始化系統(tǒng)時(shí)鐘初始化系統(tǒng)時(shí)鐘 初始化I/O、文件系統(tǒng) 安裝控制臺(tái) 配置、初始化WDB 初始化網(wǎng)絡(luò)接口(MUX) 啟動(dòng)bootCmdLoop任務(wù)任務(wù)嵌入式操作系統(tǒng)bootCmdLoop() 初始化bootline 調(diào)用autoboot,并啟動(dòng)延遲機(jī)制 設(shè)置命令行,判斷輸入命令(boot提供的命令)?,- print this list,- boot (load and go),p,- print b
27、oot params,c,- change boot params,l,- load boot file,g adrs,- go to adrs,d adrs,n,- display memory,m adrs,- modify memory,f adrs, nbytes, value, - fill memory,t adrs, adrs, nbytes, - copy memory,e,- print fatal exception,v,- print boot logo with version,嵌入式操作系統(tǒng) 調(diào)用bootLoad()下載VxWorks映像 之后控制臺(tái)(或超級(jí)終端)會(huì)有
28、以下打?。呵度胧讲僮飨到y(tǒng)此時(shí)按任意鍵可停止自動(dòng)啟動(dòng),打印啟動(dòng)行參數(shù):嵌入式操作系統(tǒng) 如果鍵入,則boot啟動(dòng)繼續(xù),按默認(rèn)下載方式 下載映像(一般情況下默認(rèn)網(wǎng)口):嵌入式操作系統(tǒng)bootLoad() 讀取boot參數(shù)(bootline) 根據(jù)下載接口設(shè)置,調(diào)用相應(yīng)函數(shù)下載VxWorks 映像。提供以下幾種下載方式: 網(wǎng)口 SCSI接口接口 軟盤 硬盤接口(ATA、IDE、PCMCIA、TFFS) 嵌入式操作系統(tǒng) 下載映像時(shí)控制臺(tái)會(huì)有如下顯示:Loading. 881680Starting at 0 x10000嵌入式操作系統(tǒng)VxWorks image啟動(dòng)過(guò)程啟動(dòng)過(guò)程sysInit()usrIni
29、t()sysHwInit()usrKernelInit()KernelInit()UsrRoot()usrAppInit()targetconfigbspnamesysAlib.stargetprojProject1prjConfig.ctargetconfigbspnamesyslib.ctargetconfigcompssrcusrKernel.ctargethkernelLib.htargetprojProject1prjConfig.ctargetprojbspnameusrAppInit.c嵌入式操作系統(tǒng)sysInit()路徑: targetconfigbspnamesysAlib.
30、s用缺省值初始化系統(tǒng)中斷表用缺省值初始化系統(tǒng)異常表初始化堆棧初始化處理器關(guān)中斷激活usrInit()嵌入式操作系統(tǒng)usrInit()路徑: targetprojProject1prjConfig.c對(duì)bss賦零把bootType值賦給sysStartType調(diào)用excVecInit(),初始化所有系統(tǒng)和缺省中斷向量調(diào)用sysHwInit(),初始化與目標(biāo)板相關(guān)硬件調(diào)用usrKernelInit(),配置VxWorks內(nèi)核調(diào)用kernelInit(),初始化并啟動(dòng)內(nèi)核嵌入式操作系統(tǒng)sysHwInit() 路徑: targetconfigbspnamesysLib.c 初始化內(nèi)存映射(MMU) 初
31、始化PCI庫(kù) 初始化可編程中斷控制器(可選) 初始化PCI設(shè)備 初始化串口設(shè)備 初始化網(wǎng)口 初始化電源管理模塊(可選)嵌入式操作系統(tǒng)usrKernelInit() 路徑:targetconfigcompssrcusrKernel.c 配置內(nèi)核數(shù)據(jù)結(jié)構(gòu) 按照系統(tǒng)配置,添加相關(guān)組件嵌入式操作系統(tǒng)KernelInit() 路徑:targethkernelLib.h初始化并啟動(dòng)內(nèi)核創(chuàng)建系統(tǒng)內(nèi)存分區(qū)激活intLockLevelSet()從內(nèi)存池頂部創(chuàng)建根堆棧和TCB調(diào)用taskInit(),taskActivate()調(diào)用usrRoot()嵌入式操作系統(tǒng)UsrRoot()路徑:usrConfig.c初始
32、化I/O系統(tǒng),安裝設(shè)備驅(qū)動(dòng)程序,創(chuàng)建設(shè)備(在configAll.h和config.h中指定)等調(diào)用sysClkConnect()、sysClkRateSet()、iosInit()安裝系統(tǒng)時(shí)鐘驅(qū)動(dòng)程序調(diào)用ttyDrv(),安裝控制臺(tái)驅(qū)動(dòng)程序調(diào)用excInit()、logInit()、sigInit()初始化異常管理調(diào)用pipeDrv()初始化管道驅(qū)動(dòng)程序調(diào)用stdioInit()初始化標(biāo)準(zhǔn)的I/O庫(kù)調(diào)用wdbConfig()配置并初始化目標(biāo)代理機(jī)如果系統(tǒng)配置了target shell,則啟動(dòng)它,則啟動(dòng)它啟動(dòng)用戶應(yīng)用程序usrAppInit()嵌入式操作系統(tǒng) 映像下載成功后,控制臺(tái)會(huì)有映像、BS
33、P的版本 信息打印:嵌入式操作系統(tǒng)VxWorks image啟動(dòng)后的內(nèi)存(啟動(dòng)后的內(nèi)存(RAM)分布)分布用來(lái)在目標(biāo)板上為Tornado所用,主要用于動(dòng)態(tài)下載目標(biāo)模塊,傳送參數(shù)存放中斷向量表、BootLine,系統(tǒng)引導(dǎo)配置,異常信息OS未啟動(dòng)前,所使用的堆棧區(qū)存放存放操作系統(tǒng)映像,vxsorks的text段,data段,BSS段用于動(dòng)態(tài)內(nèi)存的分配,任務(wù)的堆棧,控制塊,VxWorks運(yùn)行時(shí)需要的內(nèi)存。保留給用戶管理的內(nèi)存嵌入式操作系統(tǒng)Bootrom與與VxWorks映像啟動(dòng)過(guò)程比較映像啟動(dòng)過(guò)程比較 Bootrom 和VxWorks 都對(duì)硬件進(jìn)行了初始化,但 兩次硬件初始化的是不同的。 BootR
34、om映像主要作用是通過(guò)網(wǎng)口或串口下載映像主要作用是通過(guò)網(wǎng)口或串口下載 VxWorks系統(tǒng),所以它只是初始化很少的硬件系統(tǒng)如系統(tǒng),所以它只是初始化很少的硬件系統(tǒng)如 串口、網(wǎng)口等來(lái)滿足下載VxWorks的需要,一旦 VxWorks下載完畢。這些初始化過(guò)的硬件的作用也就下載完畢。這些初始化過(guò)的硬件的作用也就 完成了 VxWorks啟動(dòng)后會(huì)從新對(duì)幾乎所有的硬件設(shè)備進(jìn)行完啟動(dòng)后會(huì)從新對(duì)幾乎所有的硬件設(shè)備進(jìn)行完 全的初始化來(lái)滿足VxWorks操作系統(tǒng)運(yùn)行的需要嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)映像的開發(fā)過(guò)程 盡量獲得一個(gè)與目標(biāo)硬件環(huán)境相近的參考板級(jí)支 持包和相關(guān)代碼模板 開發(fā)環(huán)境準(zhǔn)備 編寫引導(dǎo)代碼的初始化代碼
35、提供一個(gè)輪詢?cè)L問(wèn)串口的驅(qū)動(dòng)程序,以便調(diào)試 提供一個(gè)網(wǎng)口驅(qū)動(dòng)程序,以便下載映像 一旦啟動(dòng)VxWorks內(nèi)核,則需要 連接系統(tǒng)中斷 啟動(dòng)系統(tǒng)時(shí)鐘 根據(jù)目標(biāo)板硬件環(huán)境,完成板級(jí)支持包內(nèi)的驅(qū)動(dòng) 程序和設(shè)備初始化 板級(jí)支持包的測(cè)試和文檔編寫嵌入式操作系統(tǒng)3、Tornado集成開發(fā)環(huán)境集成開發(fā)環(huán)境Tornado集成開發(fā)環(huán)境介紹集成開發(fā)環(huán)境介紹安裝Tornado2.2用Tornado創(chuàng)建一個(gè)bootable image用Tornado創(chuàng)建一個(gè)downloadableapplication module嵌入式操作系統(tǒng)3.1 Tornado集成開發(fā)環(huán)境集成開發(fā)環(huán)境 Tornado集成開發(fā)環(huán)境集成開發(fā)環(huán)境 是實(shí)現(xiàn)
36、嵌入式實(shí)時(shí)應(yīng)用程序的完整的軟件開 發(fā)平臺(tái) 是交叉開發(fā)環(huán)境運(yùn)行在主機(jī)上的部分 是開發(fā)和調(diào)試VxWorks系統(tǒng)不可缺少的系統(tǒng) 組成部分 Tornado是一個(gè)窗口環(huán)境,是一個(gè)窗口環(huán)境, 集成了編輯器、編譯器、調(diào)試器于一體嵌入式操作系統(tǒng)Tornado開發(fā)系統(tǒng)的組成開發(fā)系統(tǒng)的組成 主機(jī)工具與VxWorks系統(tǒng)之間 的通信由TargetTornado開發(fā)系統(tǒng)包含三個(gè)高度集成的部分: server/Agent共 同完成VxWorks:運(yùn)行在目標(biāo)機(jī)上的高性能、可剪裁的實(shí)時(shí)操作系統(tǒng)Tornado開發(fā)環(huán)境:運(yùn)行在宿主機(jī)上,包括一組交叉開發(fā)工具和實(shí)用程序,可對(duì)目標(biāo)機(jī)上的應(yīng)用進(jìn)行跟蹤和調(diào)試連接宿主機(jī)和目標(biāo)機(jī)的多種通信
37、方式以太網(wǎng)、串口線等等嵌入式操作系統(tǒng) 命令執(zhí)行工具WindShTornado IDE的主要組成工具的主要組成工具 C語(yǔ)言命令shell 這是Tornado所獨(dú)有的功能強(qiáng)大的命令行 解釋器 可以直接解釋C語(yǔ)言表達(dá)式、調(diào)用目 VxSim對(duì)軟件開發(fā)者的意義: 標(biāo)機(jī)上的函數(shù)、訪問(wèn)系統(tǒng)符號(hào)表中 在嵌入式系統(tǒng)開發(fā)中軟件的開發(fā)通常受到硬件開發(fā) 登記的變量 進(jìn)度的制約 集成的源代碼編輯器 還可以直接執(zhí)行語(yǔ)言 由于軟件開發(fā)必須滯后于硬件開發(fā),影響了產(chǎn)品調(diào)試器,包括命令行和圖形接口 可以實(shí)現(xiàn)所有的調(diào)試功能,包括 工具CrossWind/WDB就是圖形化的增強(qiáng)型交叉調(diào)試器研發(fā)進(jìn)度 下載/刪除軟件模塊 VxSim在一
38、定程度上解決了這個(gè)問(wèn)題:使得用戶可以遠(yuǎn)程源代碼集成調(diào)試器C/C+編譯環(huán)境工程配置工具Project Facility/Configuration 創(chuàng)建并發(fā)起一個(gè)任務(wù)、刪除任務(wù)目標(biāo)機(jī)系統(tǒng)狀態(tài)瀏覽器browser 在工程開發(fā)初期,在硬件環(huán)境尚不具備的情況下,可支持任務(wù)級(jí)和系統(tǒng)級(jí)調(diào)試VxWorks提供交叉編譯器、iostreams類庫(kù)和 可以對(duì)VxWorks操作系統(tǒng)及其組件進(jìn)行自動(dòng)地配置這是Tornado shell的一個(gè)圖形化組件 創(chuàng)建/刪除端點(diǎn) 以利用Tornado進(jìn)行與硬件無(wú)關(guān)模塊的設(shè)計(jì) 支持混合源代碼和匯編代碼顯示一系列的工具來(lái)支持C語(yǔ)言和C+語(yǔ)言 Makefile自動(dòng)生成維護(hù)提供目標(biāo)系統(tǒng)的
39、全面狀態(tài)總結(jié),也允許開發(fā)者監(jiān)視獨(dú)立 運(yùn)行/單步/繼續(xù)執(zhí)行程序 WindView, 支持多目標(biāo)機(jī)同時(shí)調(diào)試 Diab C/C+ Compiler:唯一獲得Motorola軟件工程維護(hù)的目標(biāo)系統(tǒng)對(duì)象:任務(wù)、信號(hào)燈、消息隊(duì)列、內(nèi)存分區(qū) 查看/修改內(nèi)存、寄存器、變量 集成的軟件邏輯分析儀(診斷分析工具) 白金大獎(jiǎng)的嵌入式編譯器自動(dòng)的依賴性分析、定時(shí)器、模塊、堆棧等 查看任務(wù)列表、內(nèi)存使用情況、可以向開發(fā)者提供目標(biāo)機(jī)硬件上實(shí)際運(yùn)行的應(yīng)用程序的詳細(xì)情況 GNU C/C+ Compiler:應(yīng)用最廣泛的編譯器 CPU利用率 代碼容量計(jì)算開發(fā)者可以選擇周期性或條件性的更新狀態(tài)值 集成的VxWorks目標(biāo)仿真器V
40、xSim自動(dòng)剪裁 可以與VxSim一起使用查看特定的對(duì)象(任務(wù)、信號(hào)量、提供對(duì)C+全面的支持 提供與真實(shí)目標(biāo)機(jī)一致的調(diào)試和仿真運(yùn)行環(huán)境 消息隊(duì)列、內(nèi)存分區(qū)、類) 大大縮短了開發(fā)周期 允許開發(fā)者可以在沒(méi)有BSP、操作系統(tǒng)配置以及目標(biāo)機(jī) 復(fù)位目標(biāo)機(jī)等 硬件的情況下進(jìn)行開發(fā)嵌入式操作系統(tǒng)其他核心工具 多語(yǔ)言瀏覽器WindNavigator 提供源代碼瀏覽 圖形化顯示函數(shù)調(diào)用關(guān)系 快速代碼定位嵌入式操作系統(tǒng) 圖形化核心配置工具WindConfig 使用圖形向?qū)Х绞街悄芑淖詣?dòng)配置VxWorks 內(nèi)核及其組件參數(shù) 增量加載器 可以動(dòng)態(tài)的加載新增模塊并在目標(biāo)機(jī)與內(nèi)核實(shí) 現(xiàn)動(dòng)態(tài)鏈接運(yùn)行,不必重新下載內(nèi)核及未
41、改動(dòng) 的模塊嵌入式操作系統(tǒng)Tornado IDE的工作方式的工作方式 Tornado IDE不受目標(biāo)機(jī)資源的約束不受目標(biāo)機(jī)資源的約束 上述工具運(yùn)行在主機(jī)上,依賴存放在主機(jī)上的目 標(biāo)機(jī)系統(tǒng)的符號(hào)表 它們與目標(biāo)機(jī)通過(guò)target server/agent交互交互 支持動(dòng)態(tài)鏈接與加載 開發(fā)者可以分批將目標(biāo)模塊加載到目標(biāo)系統(tǒng)上 不必在主機(jī)上將應(yīng)用程序與內(nèi)核鏈接起來(lái),然后整個(gè) 的下載到目標(biāo)系統(tǒng)上去 可以大大縮短編輯-測(cè)試-調(diào)試周期嵌入式操作系統(tǒng)3.2 Tornado2.2安裝安裝 安裝文件: 41/software/Engineering.Gener al/EDA/_
42、Others/WINDRIVER.TORNADO/WIN DRIVER.TORNADO.V2.2.FOR.PENTIUM/或?qū)W或?qū)W 院ftp 安裝步驟除下面外,都按默認(rèn)選擇: tornado registry選擇手動(dòng)配置選擇手動(dòng)配置 license選擇固定選擇固定phone或或fax項(xiàng)項(xiàng)嵌入式操作系統(tǒng) License除兩個(gè)除兩個(gè)key外(外( CD1: cAQ8i-qP2I&-g$vT6-3&gjw-bEk9g CD2: A7KbB-Rd37p-hNFBE-kzgaT-b9gpC ), 還需: 創(chuàng)建c:/flexm文件夾,將安裝文件crack中的 license.dat拷貝到上
43、述文件夾拷貝到上述文件夾 添加環(huán)境變量: LM_LICENSE_FILE = c:flexlmlicense.dat 如果在使用vxsim仿真時(shí),不能成功加載VxSim, 則需要安裝xp的補(bǔ)丁:KB924867嵌入式操作系統(tǒng)安裝后的目錄結(jié)構(gòu)嵌入式操作系統(tǒng)VxWroks相關(guān)的文件目錄相關(guān)的文件目錄嵌入式操作系統(tǒng)VxWorks工程管理工程管理 Tornado能夠創(chuàng)建兩種工程類型:能夠創(chuàng)建兩種工程類型:bootable和和 downloadable Bootable類型可用來(lái)生成類型可用來(lái)生成bootrom和和VxWorks映映 像,生成的VxWorks映像,它包含的操作系統(tǒng)組 件,經(jīng)過(guò)完全連接,可
44、以獨(dú)立運(yùn)行 Downloadable類型用于生成應(yīng)用程序模塊目標(biāo)映類型用于生成應(yīng)用程序模塊目標(biāo)映 像,只是部分連接,存在未解析的外部符號(hào)引 用,不能獨(dú)立運(yùn)行,但它支持動(dòng)態(tài)加載和連接, 為VxWorks所特有,能進(jìn)行應(yīng)用代碼的快速開發(fā) 和調(diào)試嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)3.3 創(chuàng)建一個(gè)bootable image 通過(guò)創(chuàng)建Bootable Image,可以生成運(yùn)行在目標(biāo),可以生成運(yùn)行在目標(biāo) 機(jī)上的各種bootrom和VxWorks映像 這里以loadable image(bootrom+VxWorks)啟)啟 動(dòng)方式為例,構(gòu)造一個(gè)完整的開發(fā)環(huán)境軟盤引導(dǎo)目標(biāo)機(jī)網(wǎng)絡(luò)連接下載映像網(wǎng)絡(luò)連接下載模塊網(wǎng)絡(luò)連
45、接調(diào)試串口控制臺(tái)嵌入式操作系統(tǒng) 我們利用VMware軟件模擬真實(shí)的目標(biāo)機(jī),來(lái)搭 建一個(gè)VxWorks操作系統(tǒng)的交叉開發(fā)環(huán)境 宿主機(jī):PC機(jī) 目標(biāo)機(jī):VMware虛擬機(jī) 操作步驟: (一)利用VMware軟件創(chuàng)建一個(gè)虛擬目標(biāo)機(jī) (二)在PC機(jī)上構(gòu)造虛擬目標(biāo)機(jī)的loadable image映像映像 (三)修改Tornado相關(guān)設(shè)置,連接宿主機(jī)和目標(biāo)機(jī), 建立調(diào)試通道 通常情況下,在開發(fā)階段,如果沒(méi)有合適的開發(fā) 板,建議使用Tornado自帶的VxSim進(jìn)行仿真嵌入式操作系統(tǒng)(一)利用VMware軟件創(chuàng)建一個(gè)虛擬目標(biāo)機(jī) 下載并安裝VMware軟件 使用VMware向?qū)?chuàng)建一個(gè)虛擬機(jī)嵌入式操作系統(tǒng) 設(shè)
46、置虛擬機(jī)軟盤屬性嵌入式操作系統(tǒng) 設(shè)置虛擬機(jī)網(wǎng)卡屬性嵌入式操作系統(tǒng) 修改VMnet1的IP地址為主機(jī)IP地址主機(jī)IP地址與bootline一致嵌入式操作系統(tǒng) 如果PC機(jī)上沒(méi)有軟驅(qū),下載并安裝ramdiskNT,創(chuàng) 建一個(gè)虛擬軟驅(qū)A:嵌入式操作系統(tǒng)(二)在PC機(jī)上創(chuàng)建虛擬目標(biāo)機(jī)的bootrom 和VxWorks映像 確定網(wǎng)卡類型,選擇合適網(wǎng)卡驅(qū)動(dòng)程序 因?yàn)閂Mware虛擬機(jī)上的網(wǎng)卡類型默認(rèn)為AMD PCNET Family PCI Ethernet Adapter ,而 Tornado自帶的自帶的ln97x驅(qū)動(dòng)不適合虛擬機(jī)上的網(wǎng)驅(qū)動(dòng)不適合虛擬機(jī)上的網(wǎng) 卡,需要找到合適的驅(qū)動(dòng)程序 將ftp上的pcP
47、entium文件夾替換Tornado安裝目錄 C:Tornado2.2targetconfig下的下的pcPentium,替,替 換pcPentium文件夾的主要目的就是替換ln97x驅(qū) 動(dòng)程序嵌入式操作系統(tǒng) 打開Tornado工具,創(chuàng)建一個(gè)bootable image嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)嵌入式操作系統(tǒng) 修改配置文件targetconfigpcPentiumconfig.h config.h定義:定義: 引導(dǎo)行,引導(dǎo)行定義了引導(dǎo)設(shè)備、引導(dǎo)路徑、 操作系統(tǒng)文件名、主機(jī)/目標(biāo)機(jī)IP地址、子網(wǎng)掩 碼、FTP用戶名和口令等參數(shù) 目標(biāo)機(jī)操作系統(tǒng)包含的主要成分,例如軟驅(qū)、 IDE硬盤、硬盤、SCS
48、I設(shè)備、網(wǎng)絡(luò)等設(shè)備驅(qū)動(dòng)設(shè)備、網(wǎng)絡(luò)等設(shè)備驅(qū)動(dòng) 文件系統(tǒng)(DOSFS、TFFS、CDROMFS等) 調(diào)試方式 內(nèi)存地址 以及有關(guān)參數(shù)嵌入式操作系統(tǒng) 修改配置文件config.h中的啟動(dòng)網(wǎng)卡設(shè)置,確定目 標(biāo)機(jī)使用的網(wǎng)卡類型號(hào):嵌入式操作系統(tǒng) 修改config.h中的default_boot_line嵌入式操作系統(tǒng) 修改為: lnPci(0,0)host:vxworks h= e=8 u=target pw=target 解釋如下: 啟動(dòng)設(shè)備名lnPci(0,0),意思是目標(biāo)機(jī)第0 個(gè)處理器的第0塊lnPci網(wǎng)卡。 啟動(dòng)設(shè)備名會(huì)因驅(qū)動(dòng)程序的不同而不同
49、嵌入式操作系統(tǒng) 常用設(shè)備:fdideataslenefeiINCLUDE_FDINCLUDE_IDEINCLUDE_ATAINCLUDE_SCSIINCLUDE_ENEINCLUDE_FEI軟驅(qū)IDE硬盤ATA硬盤SCSI硬盤Eagle/NE2000兼容網(wǎng)卡兼容網(wǎng)卡Intel 82557/8/9 PCI interfaceelPci INCLUDE_EL_3C90X_END3Com905系列系列 3Com EtherLink III interfaceelt INCLUDE_ELT_3C509_ENDlnPciINCLUDE_LN_97X_END AMD 79C97x PCI interfac
50、e嵌入式操作系統(tǒng) 主機(jī)標(biāo)志名,可以任意填寫,不影響啟動(dòng)過(guò) 程host 主機(jī)端映像存放路徑和名稱VxWorks 主機(jī)IP地址h= 目標(biāo)機(jī)IP地址e=8嵌入式操作系統(tǒng) 添加控制臺(tái) 修改為嵌入式操作系統(tǒng) 生成bootrom,選擇菜單Build-Build Boot Rom嵌入式操作系統(tǒng) 彈出的窗口 BSP選擇選擇pcPentium,Image選擇選擇bootrom和和gnu 點(diǎn)擊OK,會(huì)彈出Build Output窗口顯示編譯過(guò)窗口顯示編譯過(guò) 程 等待編譯成功,生成的bootrom存放在 C:Tornado2.2targetconfigpcPent
51、ium下下嵌入式操作系統(tǒng) 生成VxWorks映像。VxWroks有很多組件需要 配置:黑色為VxWorks當(dāng)前所包含的組件嵌入式操作系統(tǒng) 打開development tool components為了能夠使用shell,選擇target shell components嵌入式操作系統(tǒng)為了能夠使用telnet服務(wù),選擇網(wǎng)絡(luò)組件中的telnet server嵌入式操作系統(tǒng) 選擇菜單build rebuild all 等待編譯結(jié)束 編譯出來(lái)的VxWorks映像在工程目錄下的 default目錄下,其名稱:目錄下,其名稱:VxWorks嵌入式操作系統(tǒng) 制作啟動(dòng)軟盤 在windows的cmd命令窗口下,
52、進(jìn)入 C:Tornado2.2hostx86-win32bin目錄:目錄: 把前面生成的bootrom拷貝至此目錄 命令:format a: 用于格式化軟盤,第一次使用時(shí)需要 mkboot a: bootrom 制作啟動(dòng)盤嵌入式操作系統(tǒng)(三)修改Tornado相關(guān)設(shè)置,連接宿主機(jī)和 目標(biāo)機(jī),建立調(diào)試通道 設(shè)置FTP服務(wù)器 可以使用常用的FTP服務(wù)器 例如Serv_U 也可以使用Tornado自帶的FTP Server 使用FTP服務(wù)器的關(guān)鍵在于提供正確的用戶名、 密碼和映像所在路徑嵌入式操作系統(tǒng) 啟動(dòng)Tornado組件FTP Server 在WFTPD窗口中選擇菜單Security中的 Use
53、r/right 在其彈出窗口中選擇New User嵌入式操作系統(tǒng) 根據(jù)提示信息輸入: 登錄用戶名和密碼(要與 DEFAULT_BOOT_LINE中指定的一致)中指定的一致) Home Directory 如果這個(gè)路徑不是默認(rèn)的vxWorks鏡像生 成目錄的路徑,則需要拷貝生成的 vxWorks鏡像到該路徑下鏡像到該路徑下 比如從上面的default目錄下拷貝到D盤 D:嵌入式操作系統(tǒng) 啟動(dòng)虛擬目標(biāo)機(jī)嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)嵌入式操作系統(tǒng) 使用Target Server從主機(jī)連接到目標(biāo)機(jī)從主機(jī)連接到目標(biāo)機(jī) 在tornado菜單Tools Target Server
54、 Configure 在彈出窗口中 首先給目標(biāo)服務(wù)器命名 在Target Servers Property中,選擇中,選擇Back End, 并在Available Back中選擇中選擇wdbrpc,在,在Target Ip/Address中輸入目標(biāo)機(jī)中輸入目標(biāo)機(jī)IP嵌入式操作系統(tǒng)嵌入式操作系統(tǒng) 在Target Servers Property中,選擇中,選擇Core File and Symbols,選擇,選擇File為為BSP目標(biāo)文件所在目錄的目標(biāo)文件所在目錄的 VxWorks Launch嵌入式操作系統(tǒng)嵌入式操作系統(tǒng) 點(diǎn)擊圖形按鈕中下拉框,選擇目標(biāo)機(jī),即可嵌入式操作系統(tǒng) Launch s
55、hell嵌入式操作系統(tǒng)演示從網(wǎng)絡(luò)方式啟動(dòng)可能失敗的原因 非正確的網(wǎng)卡驅(qū)動(dòng) 防火墻設(shè)置 IP設(shè)置設(shè)置 操作系統(tǒng)映像路徑 用戶名和密碼嵌入式操作系統(tǒng)Bootable Application代碼組成代碼組成 當(dāng)創(chuàng)建可啟動(dòng)的應(yīng)用時(shí),在 Workspace窗口的窗口的Files欄欄 中,可以看到:嵌入式操作系統(tǒng) linkSyms.c 動(dòng)態(tài)生成的配置文件,用來(lái)獲得正確的 symbols references prjConfig.c 動(dòng)態(tài)生成的配置文件 包含VxWorks中當(dāng)前包含的各個(gè)組件的初始 化代碼 romInit.s bootrom的入口代碼的入口代碼嵌入式操作系統(tǒng) romStart.c 將VxWo
56、rks映像裝入RAM sysALib.s 包含系統(tǒng)開始運(yùn)行的代碼 sysLib.c 包含體系結(jié)構(gòu)相關(guān)的一些例程 usrAppInit.c 應(yīng)用程序的初始化入口嵌入式操作系統(tǒng)3.5 配置VxWorks的組件 打開Workspace中的VxWorks,可以看到當(dāng)前 VxWorks的配置情況的配置情況 黑色:當(dāng)前已經(jīng)選用的組件 在配置過(guò)程中,如果知道組件的部分信息,可 以根據(jù)該信息查找所屬的組件 例如嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)獲得組件的屬性 雙擊感興趣的組件 例如:嵌入式操作系統(tǒng)增加/刪除一個(gè)組件 在感興趣的組件上。使用右鍵 對(duì)于當(dāng)前沒(méi)有包含的組件,使用Include 增增 加 對(duì)于當(dāng)前已經(jīng)包含的
57、組建,使用Exclude刪 除 如果組件中還包括其他組件(顯示為+,-),將 會(huì)顯示一個(gè)選擇框,根據(jù)需要打勾嵌入式操作系統(tǒng) 有的組件目錄中包含若干個(gè)不相容的選項(xiàng),只 能選擇其中一個(gè),例如嵌入式操作系統(tǒng)修改組件的參數(shù) 對(duì)于感興趣的組件,有些參數(shù)可以修改,例如嵌入式操作系統(tǒng)估計(jì)已有組件的大小 在項(xiàng)目上:右鍵 Properties size嵌入式操作系統(tǒng)作業(yè) 利用VMware搭建一個(gè)交叉開發(fā)環(huán)境,并編寫一 個(gè)test函數(shù)(test函數(shù)的功能是:打印“This is xxxs homework”),將其添加到),將其添加到VxWorks映像映像 中,在shell下運(yùn)行,將運(yùn)行結(jié)果粘貼到作業(yè)中 (粘貼內(nèi)
58、容如下頁(yè)所示)。并找到啟動(dòng)過(guò)程中的 顯示信息所在源代碼的位置,順便嘗試一下修改 VxWorks映像加載到內(nèi)存的地址,重新編譯后,映像加載到內(nèi)存的地址,重新編譯后, 觀察修改前后啟動(dòng)顯示部分哪里有變化?嵌入式操作系統(tǒng)運(yùn)行信息嵌入式操作系統(tǒng)3.4 創(chuàng)建一個(gè)downloadable application module 什么是Downloadable application module 它是可動(dòng)態(tài)加載的應(yīng)用程序目標(biāo)文件 可通過(guò)網(wǎng)口或串口加載到目標(biāo)機(jī)上與目標(biāo)機(jī)中已存在 的bootable image動(dòng)態(tài)鏈接后運(yùn)行動(dòng)態(tài)鏈接后運(yùn)行嵌入式操作系統(tǒng)作為演示,我們創(chuàng)建一個(gè)downloable的應(yīng)用程序模塊,并
59、讓其運(yùn)行在目標(biāo)機(jī)仿真器上嵌入式操作系統(tǒng)確定project名與路徑嵌入式操作系統(tǒng)選擇工具鏈(toolchain)工具鏈?zhǔn)且惶子脕?lái)建造針對(duì)特定目標(biāo)機(jī) 針對(duì)目標(biāo)仿真器,默認(rèn)的工具鏈名字形式應(yīng)用的交叉開發(fā)工具 是SIMhostOsgnuTornado提供的工具鏈?zhǔn)腔贕NU的預(yù)處 對(duì)NT主機(jī)是SIMNTgnu理、編譯、匯編和鏈接器嵌入式操作系統(tǒng)確認(rèn)所做的選擇嵌入式操作系統(tǒng)Workspace0和example1的信息窗口嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)添加源文件 第一步:添加源文件到開發(fā)目錄中 第二步:將這個(gè)源文件加入到example1中嵌入式操作系統(tǒng)第一步:添加源文件到開發(fā)目錄中從Tornado的安裝目錄
60、下:(安裝目錄)targetsrcdemostart拷貝源文件到開發(fā)目錄中D:VxWorks_examples嵌入式操作系統(tǒng)右鍵嵌入式操作系統(tǒng)加入的源文件 源文件所依賴的外部文件 即將由源文件所產(chǎn)生的目標(biāo)文件cobble.c產(chǎn)生的目標(biāo)文件 Tornado自動(dòng)為example1生成的目標(biāo)文件, 包含所有目標(biāo)文件嵌入式操作系統(tǒng)Build project 首先預(yù)覽一下默認(rèn)的build設(shè)置編譯器、匯編器、鏈接器選項(xiàng)雙擊 宏Makefile默認(rèn)規(guī)則嵌入式操作系統(tǒng) 根據(jù)上述默認(rèn)規(guī)則,Build example1右鍵嵌入式操作系統(tǒng)嵌入式操作系統(tǒng)假如在源文件中有錯(cuò)誤 例如,在cobble.c中不小心使用了“/” 在build
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人雇傭鐘點(diǎn)工勞務(wù)合同
- 文化創(chuàng)意產(chǎn)業(yè)數(shù)字化升級(jí)投資合同
- 信息安全保障服務(wù)合同
- 個(gè)人收入證明收入證明協(xié)議年
- 設(shè)備材料買賣合同
- 智能車輛研發(fā)合作協(xié)議
- 青島二手房買賣合同的
- 爆破工程承包合同與爆破承包合同
- 裝飾材料購(gòu)銷合同
- 裝載機(jī)司機(jī)雇傭合同
- SH/T 1627.1-1996工業(yè)用乙腈
- GB/T 5534-2008動(dòng)植物油脂皂化值的測(cè)定
- GB/T 12771-2019流體輸送用不銹鋼焊接鋼管
- 測(cè)量管理體系內(nèi)審檢查表
- 工程驗(yàn)收及移交管理方案
- 心臟手術(shù)麻醉的一般流程課件
- 圖片編輯概述課件
- 2023年岳陽(yáng)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試筆試題庫(kù)及答案解析
- 信號(hào)與系統(tǒng)復(fù)習(xí)題及答案
- 北師大版八年級(jí)數(shù)學(xué)上冊(cè)《認(rèn)識(shí)無(wú)理數(shù)(第2課時(shí))》參考課件2
- 中級(jí)建構(gòu)筑物消防員理論綜合模擬題01原題
評(píng)論
0/150
提交評(píng)論