




免費預(yù)覽已結(jié)束,剩余11頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Vxworks BSP開發(fā)1 板級支持包的介紹2 VxWorks映象及啟動順序3 VxWorks預(yù)內(nèi)核初始化4 BSP的配置5 BSP的開發(fā)6 VxWorks下設(shè)備驅(qū)動程序概述板級支持包的介紹一 板級支持包簡述在VxWorks系統(tǒng)中,對BSP的簡單描述為:介于底層硬件環(huán)境和VxWorks之間的一個軟件接口,它的主要功能是在系統(tǒng)加電后初始化目標(biāo)機硬件、初始化操作系統(tǒng)、提供部分硬件的驅(qū)動程序。具體功能包括:(1) 初始化。所謂初始化就是指從系統(tǒng)上電復(fù)位開始,到VxWorks開始初始化用戶應(yīng)用(即系統(tǒng)執(zhí)行到usrAppInit函數(shù)處)的一段時間內(nèi)系統(tǒng)所執(zhí)行的過程。這個過程主要包括三個部分的工作:CPU初始化。初始化CPU的內(nèi)部寄存器。目標(biāo)機初始化。初始化控制芯片的寄存器,I/O設(shè)備的寄存器,為整個軟件系統(tǒng)提供底層硬件環(huán)境的支持。系統(tǒng)資源初始化。為操作系統(tǒng)及系統(tǒng)的正常運行做準(zhǔn)備,進行資源初始化,如空間分配等等。(2) 使VxWorks能夠訪問硬件驅(qū)動程序。這主要是指VxWorks包含必要的設(shè)備驅(qū)動程序和相關(guān)設(shè)備的初始化。(3) 在VxWorks系統(tǒng)中,集成了與硬件相關(guān)的軟件和部分與硬件無關(guān)的軟件。二 板級支持包與VxWorks從上面的圖中,我們可以看到,BSP不是設(shè)備驅(qū)動程序,因為設(shè)備驅(qū)動程序可以訪問硬件設(shè)備,同時,相同設(shè)備的驅(qū)動程序可以不作修改的從一個環(huán)境移植到另外一個環(huán)境當(dāng)中去,而BSP只能在特定的環(huán)境下面運行。簡單地說,BSP開發(fā)人員要完成兩個方面的工作:(1) 完全支持BSP管理設(shè)備(2) 通用設(shè)備驅(qū)動程序的集成工作三 BSP的組成BSP包含的程序是提供VxWorks訪問目標(biāo)機硬件環(huán)境的主要接口。BSP主要由下面幾類文件組成。1 源文件主要是由C語言編寫的代碼所組成的文件,也有一小部分由匯編語言編寫而成。2 頭文件包含針對CPU板的硬件定義以及內(nèi)存定位定義的文件。3 Make file文件控制構(gòu)造所有類型映象的文件4 派生文件由其他文件衍生而成的文件。BSP的組成文件主要包含在以下四個目錄里面: .Tornadotargetconfigall .TornadotargetconfigcompsvxWorks .Tornadotargetconfigcompssrc .Tornadotargetconfigbspname1. .targetconfigall目錄下的文件這個目錄下的文件作為VxWorks體系結(jié)構(gòu)產(chǎn)品的一部分交給用戶.如果不是特殊需要的話,沒有必要修改這些文件。簡單的說,configall下的文件并不是特定BSP的一部分,而是所有BSP的公共部分。該目錄下主要包含如下幾個文件:(1) bootConfig.c引導(dǎo)ROM映象的主要初始化和控制文件.(2) bootInit.CbootInit.c包含引導(dǎo)ROM映象第二階段初始化的代碼。該文件定義了romStart()函數(shù),romInit.s中的romInit()函數(shù)執(zhí)行完畢后會跳轉(zhuǎn)到romStart()函數(shù)。該函數(shù)執(zhí)行必要的代碼壓縮和ROM型映象的重定位。(3) dataSegPad.c它保證了代碼段和數(shù)據(jù)段不會共享一個MMU.(4) usrCongif.c包含了VxWorks映象的主要初始化代碼。不同于bootInit.c文件,它是非常完整的。(5) version.c提供了VxWorks的版本號、構(gòu)造映象的日期和時間等信息。(6) configAll.h設(shè)置了所有VxWorks映象的默認設(shè)置。在這個文件里定義的變量是一些通用的設(shè)置,如果需要的VxWorks映象不同于默認的設(shè)置,使用configbspname目錄下的config.h文件中定義的宏來替換這里定義的默認宏。2. .targetconfigbspname目錄下的文件這個子目錄包含系統(tǒng)或者硬件相關(guān)的BSP文件,主要由下面的一些文件組成。(1) Readme文件Readme文件包含了這個BSP的發(fā)布記錄。它記錄了每次發(fā)布版本、修訂版本和新版本上面所做的工作。(2) Makefile和depend.bspname文件Makefile文件控制使用命令行方式構(gòu)造映象。從VxWorks5.2開始,標(biāo)準(zhǔn)的make工具是GNU make。BSP make系統(tǒng)包含了位于targethmake目錄下的make子文件。如果某個相關(guān)性文件不存在,make將自動產(chǎn)生一個depend.bspname文件,它可以用來追蹤所有模塊的相關(guān)性。(3) Config.h文件Config.h文件包含了所有頭文件和CPU板相關(guān)的特殊定義。標(biāo)準(zhǔn)的config.h包含下面的內(nèi)容: BSP版本號和修訂版本號 包含configAll.h文件 高速緩沖存儲器和MMU的配置 共享內(nèi)存網(wǎng)絡(luò)定義 目標(biāo)板上的內(nèi)存地址和大小 ROM地址和大小 非易失性RAM 默認的引導(dǎo)參數(shù) 時間戳驅(qū)動程序支持 外部總縣地址映射 網(wǎng)絡(luò)設(shè)備和中斷向量 包含bspname.h文件(4) romInit.s文件該文件包含引導(dǎo)ROM和基于引導(dǎo)ROM的VxWorks映象的入口初始化匯編代碼。入口點為romInit()函數(shù),是系統(tǒng)加電啟動后首先執(zhí)行的代碼。同時它也設(shè)置了啟動參數(shù)類型,并把該參數(shù)傳遞給通用的romStart()函數(shù)。如果硬件需要立即內(nèi)存映射或者設(shè)置特殊的寄存器,則在這里處理。一個普遍的錯誤是BSP的開發(fā)人員企圖在romInit.s文件中進行過多的初始化操作。實際上,大部分其他初始化操作是被推遲到sysHwInit()函數(shù)中進行的。另外,romInit.s文件中的代碼不應(yīng)當(dāng)被其它的函數(shù)或者模塊所調(diào)用。(5) sysALib.s這個文件包含目標(biāo)機體系結(jié)果所決定的、與系統(tǒng)有關(guān)的匯編語言程序。所有BSP程序應(yīng)當(dāng)用C語言來編寫,然而由于編譯等原因需要用匯編語言程序編寫的時候,可以把所有匯編語言編寫的程序代碼放在 sysALib.s中。sysALib.s文件里的sysInit()函數(shù)是VxWorks映象的入口點。系統(tǒng)引導(dǎo)之后,首先執(zhí)行該段代碼。(6) sysLib.c這個文件包含目標(biāo)機體系結(jié)構(gòu)所決定的、與系統(tǒng)有關(guān)的C程序。這些程序提供板極接口,基于這些板極接口,VxWorks和應(yīng)用程序的構(gòu)造和系統(tǒng)無關(guān)。sysLib.c文件中包含了對驅(qū)動程序的安裝和初始化工作,這些工作具體在一些子文件中實現(xiàn),比如sysSerial.c、sysScsi.c、sysNet.c等。使用子文件的目的是為了保持設(shè)備驅(qū)動程序的安裝和初始化不隨結(jié)構(gòu)的變化而改變。(7) sysSerial.cSIO設(shè)備串行I/O設(shè)備驅(qū)動程序的安裝和初始化(8) sysScsi.c包含SCSI-2設(shè)備驅(qū)動程序的安裝和初始化(9) sysNet.c網(wǎng)絡(luò)接口程序的安裝和初始化(10) bspname.h與目標(biāo)板有關(guān)的特殊信息的定義(11) target.nr這個文件了運行VxWorks必須需要的目標(biāo)板特殊信息(12) configNet.h網(wǎng)絡(luò)配置頭文件。主要包含END網(wǎng)絡(luò)設(shè)備驅(qū)動程序的配置。3. .targetconfigcompsvxWorks目錄下的文件VxWorks實時內(nèi)核基本模塊描述文件.4. .targetconfigcompssrc目錄下的文件VxWorks實時內(nèi)核基本模塊配置文件.四 BSP開發(fā)下面對BSP的開發(fā)做一下宏觀上面的描述:(1) BSP的開發(fā)步驟應(yīng)當(dāng)是一個逐步增加應(yīng)用的過程(2) 開發(fā)過程中的軟、硬件支持(ICE、BMD)(3) 開發(fā)效率的提高仿真器(4) BSP的調(diào)試方法ICE調(diào)試法并口線/目標(biāo)板映象主機數(shù)據(jù)線BDM調(diào)試法數(shù)據(jù)線并口線/目標(biāo)板BDM口BDM適配器主機黑調(diào)試法利用亮燈、示波器等手段。五 Tornado目錄結(jié)構(gòu)Tornado開發(fā)系統(tǒng)包含三個高度集成的部分:運行在宿主機和目標(biāo)機上功能強大的交叉開發(fā)工具和實用程序運行在目標(biāo)機上的高性能、可裁剪的實時操作系統(tǒng)VxWorks連接宿主機和目標(biāo)機的連接方式,如以太網(wǎng)、串口線、ICE、ROM仿真器等Tornado下的主要目錄如下:Host目錄樹Target目錄樹VxWorks映象及啟動順序最小的初始化處理是由防在目標(biāo)機內(nèi)存特殊位置的一部分代碼和可能的一些表(中斷描述表、全局描述表)組成。當(dāng)目標(biāo)機復(fù)位或者加電以后,處理器總是跳轉(zhuǎn)到這個位置。這部分代碼初始化機器到某一個指定的狀態(tài)上、初始化內(nèi)存和內(nèi)存地址、關(guān)中斷,然后把控制權(quán)交給附加引導(dǎo)代碼。一 VxWorks映象類型系統(tǒng)把VxWorks映象的類型分成三種,各類型的影響內(nèi)部又包含不同的子類型。1 可加載(Loadable)的映象類型可加載型映象的執(zhí)行需要通過引導(dǎo)代碼把它裝載到目標(biāo)機RAM中,然后才開始執(zhí)行。而引導(dǎo)代碼分為兩中:引導(dǎo)代碼固化在ROM或FLASH中引導(dǎo)代碼是一個獨立的VxWorks應(yīng)用引導(dǎo)代碼通常也是一種VxWorks映象,有時候稱之為引導(dǎo)映象。它的設(shè)計目的就是把另一個包含應(yīng)用的VxWorks映象裝入到RAM中。引導(dǎo)映象在運行時,可能在ROM/FLASH中執(zhí)行,也可能在RAM中執(zhí)行。2 基于ROM(ROM-based)的映象類型基于ROM型映象在執(zhí)行前首先把自己從ROM或者FLASH中裝載到RAM中。這種類型的映象通常在啟動階段會比較慢,但是執(zhí)行階段比較快。3 ROM駐留(ROM-Resident)的映象類型ROM駐留型映象在啟動的時候,把數(shù)據(jù)段拷貝到目標(biāo)機RAM中。這種類型的映象通常在啟動的時候會比較快,當(dāng)目標(biāo)機的RAM空間比較小的時候,通常使用這種映象。在嵌入式應(yīng)用中通常使用這種類型的映象,然而它在目標(biāo)機上的執(zhí)行速度要比其它類型的映象要慢。二 VxWorks映象啟動順序在目標(biāo)機加電啟動時發(fā)生的順序啟動事件是一個典型VxWorks映象需要執(zhí)行的功能。所有類型的VxWorks映象在初始化階段啟動順序是一樣的,處理器通過”Jump”跳轉(zhuǎn)指令跳轉(zhuǎn)到ROM或者Flash中引導(dǎo)代碼的入口處,這段引導(dǎo)代碼通常包含如下的操作:關(guān)中斷初始化目標(biāo)機內(nèi)存裝載適當(dāng)?shù)腣xWorks映象段跳轉(zhuǎn)到設(shè)置目標(biāo)機為靜止?fàn)顟B(tài)的代碼處1 可加載型VxWorks映象引導(dǎo)順序可加載型VxWorks映象引導(dǎo)的詳細過程如下:(1) 數(shù)據(jù)段和代碼段的裝入。系統(tǒng)加電后執(zhí)行引導(dǎo)帶代碼,首先把引導(dǎo)代碼的代碼段和數(shù)據(jù)段從ROM或者FLASH里裝到RAM中。此時,需要考慮下面的情況:壓縮型引導(dǎo)代碼。這種類型的引導(dǎo)代碼在拷貝的時候,要對其進行解壓操作。非壓縮型引導(dǎo)代碼。這種類型的引導(dǎo)代碼直接進行拷貝操作就可以了。駐留型引導(dǎo)代碼。這種類型的引導(dǎo)代碼只拷貝它的數(shù)據(jù)段就可以了。(2) VxWorks映象的裝入。引導(dǎo)代碼執(zhí)行后,把VxWorks映象裝入到RAM中,然后跳轉(zhuǎn)到VxWorks映象裝入點。(3) 系統(tǒng)初始化。這步操作由靜態(tài)鏈接在VxWorks映象里的系統(tǒng)初始化代碼來完成,最終完成系統(tǒng)的初始化操作。2 基于ROM的VxWorks映象啟動順序VxWorks映象基于ROM的VxWorks映象引導(dǎo)帶程序基于ROM的VxWorks映象啟動詳細過程如下:(1) VxWorks映象的裝入。系統(tǒng)加電后引導(dǎo)代碼的執(zhí)行,首先將VxWorks映象從ROM或者FLASH里裝入到RAM中。(2) 控制權(quán)轉(zhuǎn)移。VxWorks映象被裝入之后,系統(tǒng)控制權(quán)交給VxWorks映象中的系統(tǒng)初始化代碼部分(3) 系統(tǒng)初始化。靜態(tài)鏈接在VxWorks中的系統(tǒng)初始化代碼在RAM里執(zhí)行,完成系統(tǒng)初始化操作3 ROM駐留型VxWorks映象啟動順序基于ROM駐留型的VxWorks映象啟動詳細過程如下:(1) VxWorks映象的裝入。系統(tǒng)加電后引導(dǎo)代碼的執(zhí)行,首先將VxWorks映象的數(shù)據(jù)段從ROM或者FLASH里裝入到RAM中。(2) 控制權(quán)轉(zhuǎn)移。VxWorks映象被裝入RAM之后,系統(tǒng)控制權(quán)交給ROM/Flahs里的VxWorks映象中的系統(tǒng)初始化代碼部分(3) 系統(tǒng)初始化。靜態(tài)鏈接在VxWorks中的系統(tǒng)初始化代碼執(zhí)行,完成系統(tǒng)初始化操作引導(dǎo)帶程序VxWorks數(shù)據(jù)段VxWorks數(shù)據(jù)段VxWorks代碼段三 典型的VxWorks映象1 VxWorks2 VxWorks.st3 VxWorks_rom4 VxWorks.st_rom5 VxWorks.res_rom6 VxWorks.res_rom_nosym7 Bootrom8 Bootrom_uncmp9 Bootrom_resVxWorks預(yù)內(nèi)核初始化預(yù)內(nèi)核初始化主要是指CPU的初始化、向量表的安裝、全局描述表的安裝、目標(biāo)機上硬件設(shè)備的初始化、操作系統(tǒng)初始化等操作。一 預(yù)內(nèi)核初始化概述(1) 下載型VxWorks映象預(yù)內(nèi)核的初始化順序目標(biāo)機系統(tǒng)加電后,首先執(zhí)行VxWorks引導(dǎo)程序,由引導(dǎo)程序把VxWorks映象裝載到目標(biāo)機RAM中。當(dāng)把VxWorks映象裝入到RAM之后,處理器跳轉(zhuǎn)到映象裝入地址處。接下來首先執(zhí)行sysInit()函數(shù),然后執(zhí)行usrInit函數(shù),由usrInit()函數(shù)徹底完成整個預(yù)內(nèi)核的初始化。(2) ROM型VxWorks映象預(yù)內(nèi)核的初始化順序目標(biāo)系統(tǒng)加電后,首先執(zhí)行romInit()函數(shù),其功能是對CPU進行初始化,然后執(zhí)行romStart()函數(shù)進行映象段的拷貝和解壓縮工作,然后執(zhí)行usrInit函數(shù),由usrInit()函數(shù)徹底完成整個預(yù)內(nèi)核的初始化。二 預(yù)內(nèi)核的特殊初始化函數(shù)VxWorks映象里的特殊函數(shù)如下:romInit()函數(shù)romStart()函數(shù)sysInit()函數(shù)romInit()函數(shù)和romStart函數(shù)是所有固化在ROM/Flash里的VxWorks映象(ROM型VxWorks映象)所必須執(zhí)行的函數(shù),而sysInit()函數(shù)僅僅只是所有裝載型VxWorks映象執(zhí)行的函數(shù)。1 romInit()函數(shù)(1) romInit()函數(shù)功能簡述romInit()函數(shù)包含在romInit.s文件中,且用匯編語言編寫。它是系統(tǒng)加電后首先執(zhí)行的代碼,也是所有ROM型VxWorks映象入口點。它執(zhí)行目標(biāo)機最小的初始化操作及調(diào)用romStart()函數(shù)。romInit()函數(shù)必須包含下面的功能:屏蔽處理器中斷和處理器復(fù)位初始化系統(tǒng)內(nèi)存初始化堆棧指針和其他寄存器,開始執(zhí)行romStart()函數(shù)及傳遞啟動參數(shù)(2) 冷啟動和熱啟動冷啟動是指硬件環(huán)境通過加電啟動。在romInit()函數(shù)中需要保存系統(tǒng)啟動類型,啟動類型的宏定義為BOOT_COLD。熱啟動是指通過調(diào)用reboot(),Ctrl+X或者異常中斷等重新啟動目標(biāo)機系統(tǒng)的方式。2 romStart()函數(shù)romStart()函數(shù)是所有固化在ROM/Flash里VxWorks映象第一個執(zhí)行的C語言函數(shù)。(1) romStart()函數(shù)的功能描述romStart()函數(shù)包含在./all/bootInit.c文件中,并且用C語言編寫成。它是系統(tǒng)最先執(zhí)行的一個C語言程序,為ROM映象執(zhí)行必要的代碼重定位、解壓縮和RAM初始化操作,具體如下:拷貝適當(dāng)?shù)腞OM映象段到RAM中清理沒有被使用的那部分內(nèi)存執(zhí)行解壓縮操作(如果有必要)調(diào)用預(yù)內(nèi)核的通用初始化程序usrInit()(2) romStart()的修改在BSP的開發(fā)過程中,可能需要修改bootInit.c文件。這個文件是BSP的一個公用文件,所以對于該文件的修改,情況比較特殊,具體步驟如下:拷貝bootInit.c文件。bootInit.c文件是一個公用文件,所以不可以直接修改.config/all目錄下的bootInit.c文件,而是應(yīng)該把該文件拷貝到某個BSP目錄下,然后修改這個BSP目錄下的bootInit.c文件。修改makefile文件。為了鏈接拷貝的bootInit.c文件,而不是原始的文件,需要修改BSP目錄下的makefile文件。在HEX_FLAGS宏定義后面增加一行:BOOTINIT = bootInit.c在構(gòu)造VxWorks映象的控制文件rules.bsp文件中,系統(tǒng)通過使用BOOTINIT宏定義來訪問bootInit.c文件。這個宏定義的默認的訪問的值是./config/all/bootInit.c文件。(3) romStart()配置宏定義(4) ROM和RAM的布局3 sysInit()函數(shù)(1) sysInit()函數(shù)功能描述sysInit()函數(shù)是裝載型VxWorks映象的入口點。當(dāng)映象被裝載到RAM中以后,處理器將跳轉(zhuǎn)到sysInit()函數(shù)處執(zhí)行。該函數(shù)原形在sysAlib.s中,是用匯編語言編寫成的。當(dāng)映象被裝載到RAM中,sysInit()函數(shù)駐留在裝載型VxWorks映象的裝載地址處。它執(zhí)行必須的最小初始化操作以及調(diào)用usrInit()函數(shù),而硬件初始化推遲到預(yù)內(nèi)核通用初始化代碼中進行。(2) sysInit()代碼的獲得sysInit()函數(shù)的代碼可以通過修改romInit()函數(shù)的代碼獲得,僅僅需要修改一些便可以得到sysInit(0函數(shù)代碼:刪除內(nèi)存初始化代碼把調(diào)用romStart()函數(shù)改為調(diào)用usrInit()函數(shù)sysInit()函數(shù)在RAM中執(zhí)行,所以不需要設(shè)計成與地址無關(guān)的代碼(3) RAM布局三 預(yù)內(nèi)核的通用初始化代碼1. 通用初始化代碼概述(1) 通用初始化代碼的職責(zé)通用初始化代碼必須為VxWorks內(nèi)核提供一個環(huán)境,以便激活VxWorks內(nèi)核內(nèi)核代碼執(zhí)行后,初始化系統(tǒng)需要的系統(tǒng)內(nèi)存空間或者多任務(wù)環(huán)境(2) 通用初始化預(yù)內(nèi)核的通用初始化操作是通過usrInit()進行的,該函數(shù)是用C語言編寫的。其原型函數(shù)包含在usrConfig.c文件中。當(dāng)構(gòu)造VxWorks文件的時候,它被靜態(tài)鏈接到映象中。系統(tǒng)調(diào)用該函數(shù)也就激活了VxWorks內(nèi)核。而初始化硬件的操作,主要是通過調(diào)用sysHwInit()函數(shù)來實現(xiàn)的,該函數(shù)主要包含主要功能如下:屏蔽所有硬件設(shè)備的中斷初始化硬件設(shè)備到可知的靜止?fàn)顟B(tài)BSP的配置用戶在開發(fā)自己的目標(biāo)機BSP之前,必須了解在VxWorks操作系統(tǒng)下BSP的配置,只有在熟悉BSP的配置之后才可以正確對BSP進行移植和修改工作,并根據(jù)自己的需要成功的配置一個BSP。一 BSP的基本配置(1) ROM和RAM布局用戶可以根據(jù)目標(biāo)機的具體情況對ROM和RAM的空間布局進行配置,配置過程主要是通過修改地址宏定義的值而達到的,在conf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編版一年級語文上冊開學(xué)第一課
- 玻璃幕墻工程承包合同
- 黃藍扁平風(fēng)志愿者服務(wù)模板
- 領(lǐng)導(dǎo)力發(fā)展成為高效能領(lǐng)導(dǎo)者
- 革新理念開啟新紀元-新能源車技術(shù)變革的研究與應(yīng)用展望
- 音樂產(chǎn)業(yè)中的數(shù)據(jù)挖掘與價值發(fā)現(xiàn)
- 顛覆傳統(tǒng)模式新零售技術(shù)推動商業(yè)體驗升級
- 顧客體驗為核心的零售營銷策略優(yōu)化
- 防災(zāi)減災(zāi)安全教育培訓(xùn)
- 青少年傳統(tǒng)文化與藝術(shù)培訓(xùn)的未來展望
- 中學(xué)學(xué)生心理健康教育個案輔導(dǎo)記錄表
- 護理帶教角色轉(zhuǎn)換實踐路徑
- 2025年北京市房屋租賃合同(自行成交版)
- 2025年安全生產(chǎn)考試題庫(行業(yè)安全規(guī)范)-水上安全試題匯編
- 自由教練合作合同協(xié)議書
- 上海市徐匯區(qū)上海中學(xué)、復(fù)旦附中等八校2024-2025學(xué)年高二下物理期末達標(biāo)檢測模擬試題含解析
- 如何理解中國人民抗日戰(zhàn)爭勝利對實現(xiàn)中華民族偉大復(fù)興的意義?參考答案三
- 【MOOC】人工智能:模型與算法-浙江大學(xué) 中國大學(xué)慕課MOOC答案
- 行政案例分析-終結(jié)性考核-國開(SC)-參考資料
- MOOC 電力電子學(xué)-華中科技大學(xué) 中國大學(xué)慕課答案
- 成品出貨檢驗報告模板
評論
0/150
提交評論