版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章BootLoader與設(shè)備驅(qū)動(dòng)4.1引言
4.2BootLoader
4.3設(shè)備驅(qū)動(dòng)
思考與練習(xí)題 4.1引言
嵌入式軟件的體系結(jié)構(gòu)包括驅(qū)動(dòng)層、操作系統(tǒng)層、中間件層和應(yīng)用層,如圖4-1所示。圖4-1嵌入式軟件的體系結(jié)構(gòu)其中,驅(qū)動(dòng)層直接與硬件相關(guān),為操作系統(tǒng)和應(yīng)用程序提供支持??梢詫Ⅱ?qū)動(dòng)層軟件分為三種類型:
(1)板級初始化程序:在系統(tǒng)上電后,初始化系統(tǒng)的硬件環(huán)境,包括嵌入式微處理器、存儲器、中斷控制器、DMA和定時(shí)器等。
(2)與系統(tǒng)軟件相關(guān)的驅(qū)動(dòng)程序:用于支持操作系統(tǒng)和中間件等系統(tǒng)軟件所需的驅(qū)動(dòng)程序。嵌入式微處理器已經(jīng)提供了操作系統(tǒng)內(nèi)核所需的硬件支持,因此開發(fā)人員一般所需編寫的驅(qū)動(dòng)程序主要是鍵盤、顯示器、外存、網(wǎng)絡(luò)等外部設(shè)備的驅(qū)動(dòng)程序。
(3)與應(yīng)用軟件相關(guān)的驅(qū)動(dòng)程序:不一定要與操作系統(tǒng)連接,其設(shè)計(jì)和開發(fā)由應(yīng)用所決定。 4.2BootLoader
4.2.1BootLoader概述
BootLoader是系統(tǒng)加電后首先運(yùn)行的一段程序代碼,其目的是將系統(tǒng)的軟、硬件環(huán)境帶到一個(gè)合適的狀態(tài),為調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。對于不使用操作系統(tǒng)的嵌入式系統(tǒng)而言,應(yīng)用程序的運(yùn)行同樣也需要依賴這樣一個(gè)準(zhǔn)備良好的軟、硬件環(huán)境,因此從這個(gè)意義上來講,BootLoader對于嵌入式系統(tǒng)是必需的。
BootLoader是依賴于目標(biāo)硬件實(shí)現(xiàn)的,這可以從以下兩個(gè)方面來理解:
(1)每種嵌入式微處理器的體系結(jié)構(gòu)都有不同的BootLoader。當(dāng)然,有些BootLoader也可以支持多種體系結(jié)構(gòu)的嵌入式微處理器。如U-Boot可同時(shí)支持ARM體系結(jié)構(gòu)和MIPS體系結(jié)構(gòu)。
(2)?BootLoader還依賴于具體的嵌入式板級硬件設(shè)備的配置。
1.BootLoader的安裝
通常,BootLoader只有幾千字節(jié)的大小,由于系統(tǒng)加電后需要首先運(yùn)行這段程序,因此BootLoader需要放在系統(tǒng)加電后最先取指令的地址上。嵌入式處理器的生產(chǎn)廠商都為處理器預(yù)先安排了一個(gè)在系統(tǒng)加電或復(fù)位后最先取指令的地址。例如,基于ARM7TDMI內(nèi)核的處理器在加電或復(fù)位時(shí)都從地址0x00000000取第一條指令?;谇度胧轿⑻幚砥鳂?gòu)建的嵌入式系統(tǒng)通常都設(shè)計(jì)有某種類型的固態(tài)存儲設(shè)備,如ROM、EEPROM、Flash等。BootLoader被安裝到這種存儲設(shè)備上,這個(gè)存儲設(shè)備又被映射到預(yù)先安排的最先取指令的地址上。這樣,就可以保證系統(tǒng)加電或復(fù)位之后,首先運(yùn)行BootLoader程序。其實(shí),這與PC機(jī)的BIOS(BasicInput/OutputSystem)的啟動(dòng)原理是一致的。不同的是,由于BootLoader的體積很小,而嵌入式系統(tǒng)的存儲資源受限,很多情況下,BootLoader與操作系統(tǒng)內(nèi)核、根文件系統(tǒng)甚至應(yīng)用程序等都可以燒寫在同一個(gè)存儲芯片上。圖4-2所示是典型的固態(tài)存儲設(shè)備的空間分配結(jié)構(gòu)。圖4-2固態(tài)存儲設(shè)備的典型空間分配結(jié)構(gòu)
2.BootLoader的操作模式
對于開發(fā)人員而言,大多數(shù)BootLoader都包含兩種操作模式:啟動(dòng)加載模式和下載模式。
啟動(dòng)加載模式也稱為自主(Autonomous)模式。在這種模式下,BootLoader從目標(biāo)機(jī)的某個(gè)固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到RAM中運(yùn)行,整個(gè)過程中沒有用戶的介入。這種模式是BootLoader的正常工作模式,在嵌入式產(chǎn)品發(fā)布的時(shí)候,顯然需要讓BootLoader工作在這種模式下。
下載模式是指目標(biāo)機(jī)上的BootLoader通過串口或網(wǎng)絡(luò)連接等通信手段從宿主機(jī)上下載文件,如操作系統(tǒng)的內(nèi)核映像和根文件系統(tǒng)的映像等。
3.BootLoader的控制設(shè)備和機(jī)制
從開發(fā)的角度來看,BootLoader程序必須與宿主機(jī)之間建立起至少一種通信方式,這也是將來第一次加載操作系統(tǒng)內(nèi)核的唯一手段。通常,開發(fā)人員都會采用串口首先建立起目標(biāo)機(jī)與宿主機(jī)之間的聯(lián)系,這是因?yàn)榕c其他通信方式相比,串口通信最容易實(shí)現(xiàn)。BootLoader程序在執(zhí)行時(shí)也就可以利用這個(gè)簡單實(shí)現(xiàn)的串口通信進(jìn)行I/O操作,與外界交換數(shù)據(jù)和信息。文件的傳輸也可以通過串口完成。傳輸協(xié)議通常采用xmodem/ymodem/zmodem中的一種。但是,用串口進(jìn)行文件傳輸,速度比較慢。因此,習(xí)慣的做法是在BootLoader中實(shí)現(xiàn)TFTP協(xié)議,在宿主機(jī)上利用TFTP的軟件工具,通過以太網(wǎng)連接來下載文件。4.2.2BootLoader的典型結(jié)構(gòu)
BootLoader的主要任務(wù)就是要建立起調(diào)用操作系統(tǒng)內(nèi)核、運(yùn)行用戶應(yīng)用程序所需要的良好的軟、硬件環(huán)境。這個(gè)任務(wù)具體包括兩部分的內(nèi)容:硬件設(shè)備初始化和建立內(nèi)存空間的映射圖。
下面以基于ARM7TDMI內(nèi)核的S3C4510B為例具體介紹BootLoader的啟動(dòng)過程。整個(gè)過程的流程圖如圖4-3所示。圖4-3啟動(dòng)代碼流程圖
1.堆棧初始化
堆棧初始化要做的事情是為處理器的7個(gè)處理器模式分配堆??臻g。下面是FIQ模式下的堆棧設(shè)置:
2.DRAM初始化
DRAM的初始化是根據(jù)系統(tǒng)配置信息決定的,系統(tǒng)不一定會用到DRAM,但是一定要做SDRAM的初始化。主要的處理內(nèi)容是ROM和RAM基地址的設(shè)定、數(shù)據(jù)總線寬度的設(shè)定、SDRAM刷新時(shí)間的設(shè)定等,這些設(shè)定可以參照S3C4510B芯片的用戶手冊來進(jìn)行。
3.設(shè)置特殊寄存器
特殊寄存器的設(shè)置主要是針對I/O口的,如設(shè)定幾個(gè)I/O位,用作系統(tǒng)狀態(tài)指示燈LED等。寄存器的設(shè)定主要根據(jù)硬件的配置情況而定,需要注意的是由于啟動(dòng)代碼是燒錄到ROM中的,而中斷向量必須位于零地址,因此在存儲單元沒有重新映射之前ROM基址的設(shè)定應(yīng)該為零地址。
4.拷貝鏡像文件
拷貝鏡像文件的目的主要是為了提高運(yùn)行速度。將編譯生成的鏡像文件代碼從ROM拷貝到RAM中后,程序的執(zhí)行也就在RAM中了。當(dāng)然,如果啟動(dòng)代碼對運(yùn)行速度的要求不是很嚴(yán)格,那么這個(gè)拷貝過程可以省略,讓代碼存放在ROM中,代碼的執(zhí)行也在ROM中,而把運(yùn)行所需的數(shù)據(jù)放在RAM中。
5.內(nèi)存初始化
內(nèi)存初始化的目的是為C代碼的運(yùn)行開辟內(nèi)存區(qū)。我們已經(jīng)知道,代碼編譯后會分為三個(gè)區(qū):只讀區(qū)、可讀/可寫區(qū)和零初始化區(qū)。內(nèi)存初始化處理的內(nèi)容是:當(dāng)只讀區(qū)截止地址等于可讀可寫區(qū)基址時(shí),把零初始化區(qū)各字節(jié)清零;當(dāng)只讀區(qū)截止地址不等于可讀/可寫區(qū)基址時(shí),如果可讀/可寫區(qū)基址小于零初始化基址,就從只讀區(qū)截止地址處開始把數(shù)據(jù)拷貝到可讀/可寫區(qū)基址處,直到到達(dá)零初始化基址,然后把零初始化區(qū)各字節(jié)清零,否則只需把零初始化區(qū)各字節(jié)清零。
6.建立中斷向量表
中斷向量表用于處理異常情況,當(dāng)發(fā)生異常時(shí),首先要保存當(dāng)前程序的返回地址和CPSR寄存器的值,然后進(jìn)入到相應(yīng)的異常向量地址。一般來說,在異常向量地址處是一個(gè)跳轉(zhuǎn)指令,使程序進(jìn)入相應(yīng)的異常處理過程。由于中斷向量表要位于系統(tǒng)的零地址,當(dāng)把啟動(dòng)代碼燒錄到EEPROM中運(yùn)行時(shí)就需要把ROM的地址定義到零地址,因此程序入口處的跳轉(zhuǎn)指令分別是:
7.系統(tǒng)重新映射
系統(tǒng)重新映射與前面鏡像文件的拷貝有關(guān)。當(dāng)為了提高運(yùn)行速度把ROM的鏡像文件拷貝到RAM后,中斷向量表就不在零地址處了,因此要重新映射存儲單元,把RAM的地址重新設(shè)定為零地址。整個(gè)過程是把啟動(dòng)代碼從ROM(EEPROM或者FlashMemory)拷貝到SDRAM中運(yùn)行,同時(shí)在拷貝完畢后進(jìn)行內(nèi)存的重新映射,把SDRAM映射到原來的ROM地址(0x00000000)中,這樣就可以用SDRAM中的代碼寫FlashMemory,使得程序代碼得以更新。但是需要注意的是,如果程序進(jìn)行了映射,那么就對在線調(diào)試帶來了困難,使得在線調(diào)試不可以在RAM中進(jìn)行。如果寫入EEPROM的代碼是被映射了的,則在調(diào)試器啟動(dòng)的時(shí)候必然也會對程序進(jìn)行映射,使得程序在調(diào)試器中不能定位到原來的地方,導(dǎo)致調(diào)試失敗。一個(gè)折中的方法是,不進(jìn)行映射,即在調(diào)試的代碼中不使用下載,這樣就可以像普通的代碼一樣進(jìn)行調(diào)試了。
8.切換到用戶模式,進(jìn)入C代碼區(qū)
完成以上的初始化工作后,讓CPU切換到用戶模式下,并把堆棧指針SP指定到用戶堆棧區(qū),就可以進(jìn)入到C代碼區(qū)運(yùn)行了。在C代碼中繼續(xù)對時(shí)鐘、RS-232端口進(jìn)行初始化,然后打開系統(tǒng)中斷允許位,進(jìn)入到應(yīng)用代碼中執(zhí)行。
從程序結(jié)構(gòu)上來講,BootLoader一般都分為Stage1和Stage2兩部分。Stage1存放依賴于CPU體系結(jié)構(gòu)的代碼(如設(shè)備初始化代碼等),通常使用匯編語言來實(shí)現(xiàn),達(dá)到短小精悍的目的。Stage2用來實(shí)現(xiàn)復(fù)雜功能,通常使用C語言來實(shí)現(xiàn),使代碼具有更好的可移植性。與普通C語言程序不同的是,在編譯和鏈接BootLoader這樣的程序時(shí),不能使用glibc庫中的任何支持函數(shù)。對照上述S3C4510B的啟動(dòng)過程,Stage1部分的代碼依次實(shí)現(xiàn)以下功能:
(1)硬件設(shè)備初始化。
(2)為加載Stage2程序準(zhǔn)備RAM空間。
(3)拷貝Stage2程序到RAM空間。
(4)設(shè)置好堆棧。
(5)跳轉(zhuǎn)到Stage2的C程序入口點(diǎn)。
Stage2部分的代碼依次實(shí)現(xiàn)的功能如下:
(1)初始化本階段用到的硬件設(shè)備,如RS-232。
(2)檢測系統(tǒng)內(nèi)存映射。
(3)將操作系統(tǒng)內(nèi)核映像和根文件系統(tǒng)映像從FlashMemory讀到RAM空間中。
(4)為操作系統(tǒng)內(nèi)核設(shè)置啟動(dòng)參數(shù)。
(5)調(diào)用操作系統(tǒng)內(nèi)核。 4.3設(shè)備驅(qū)動(dòng)
4.3.1設(shè)備驅(qū)動(dòng)概述
使用任何外部設(shè)備時(shí)都需要有相應(yīng)驅(qū)動(dòng)程序的支持。驅(qū)動(dòng)程序?yàn)樯蠈榆浖峁┰O(shè)備的操作接口。對于上層軟件而言,只需要調(diào)用驅(qū)動(dòng)程序提供的接口,而不用理會設(shè)備具體的內(nèi)部操作。對于驅(qū)動(dòng)程序而言,不僅要實(shí)現(xiàn)設(shè)備的基本功能函數(shù),如初始化、中斷響應(yīng)、發(fā)送、接收等,使設(shè)備的基本功能得以實(shí)現(xiàn),而且針對設(shè)備使用過程中可能出現(xiàn)的各種差錯(cuò),還應(yīng)提供完備的錯(cuò)誤處理函數(shù)。驅(qū)動(dòng)層軟件有兩個(gè)重要的概念:硬件抽象層(HardwareAbstractionLayer,HAL)和板級支持包(BoardSupportPackage,BSP)??梢院唵蔚乩斫鉃橛布橄髮优c硬件具有更加緊密的相關(guān)性,而板級支持包與操作系統(tǒng)具有更加緊密的相關(guān)性。
具體地講,硬件抽象層的目的是為了將硬件抽象化,即通過程序來控制諸如CPU、I/O、存儲器等硬件的操作,從而使得系統(tǒng)的設(shè)備驅(qū)動(dòng)程序與硬件無關(guān)。設(shè)計(jì)板級支持包的目的主要是為驅(qū)動(dòng)程序提供訪問硬件設(shè)備寄存器的函數(shù)包,從而實(shí)現(xiàn)對操作系統(tǒng)的支持。為保證與操作系統(tǒng)保持正確的接口,以便良好地支持操作系統(tǒng),不同的操作系統(tǒng)應(yīng)對應(yīng)不同定義形式的板級支持包。在功能上,板級支持包大體需要實(shí)現(xiàn)以下兩方面的內(nèi)容:
(1)在系統(tǒng)啟動(dòng)時(shí),完成對硬件的初始化。
(2)為驅(qū)動(dòng)程序提供訪問硬件的手段。在對硬件進(jìn)行初始化時(shí),BSP一般應(yīng)完成以下工作:
(1)將系統(tǒng)代碼定位到CPU將要跳轉(zhuǎn)執(zhí)行的內(nèi)存入口處,以便在硬件初始化完畢后CPU能夠執(zhí)行系統(tǒng)代碼。此處的系統(tǒng)代碼可以是嵌入式操作系統(tǒng)的初始化入口,也可以是應(yīng)用代碼的主函數(shù)入口。
(2)根據(jù)不同CPU在啟動(dòng)時(shí)的硬件規(guī)定,BSP要負(fù)責(zé)將CPU設(shè)置為特定狀態(tài)。
(3)對內(nèi)存進(jìn)行初始化,根據(jù)系統(tǒng)的內(nèi)存配置將系統(tǒng)的內(nèi)存劃分為代碼、數(shù)據(jù)、堆棧等不同的區(qū)域。
(4)如果有特殊的啟動(dòng)控制代碼,則BSP要負(fù)責(zé)將控制權(quán)移交給啟動(dòng)控制代碼。
(5)如果應(yīng)用軟件中包含一個(gè)嵌入式操作系統(tǒng),則BSP要負(fù)責(zé)將操作系統(tǒng)需要的模塊加載到內(nèi)存中。嵌入式應(yīng)用軟件系統(tǒng)在進(jìn)行固化時(shí),可以有基于ROM的和常駐ROM的兩種方式,在基于ROM方式時(shí),系統(tǒng)在運(yùn)行時(shí)要將ROM或FlashMemory內(nèi)的代碼全部加載到RAM內(nèi);在常駐ROM方式時(shí),代碼可以在ROM或FlashMemory內(nèi)運(yùn)行,系統(tǒng)只將數(shù)據(jù)部分加載到RAM內(nèi)。
(6)如果應(yīng)用軟件中包含一個(gè)嵌入式操作系統(tǒng),則BSP還要在操作系統(tǒng)初始化之前,將硬件設(shè)置為靜止?fàn)顟B(tài),以避免造成操作系統(tǒng)初始化失敗。在為驅(qū)動(dòng)程序提供訪問硬件的手段時(shí),BSP一般應(yīng)完成以下工作:
(1)將驅(qū)動(dòng)程序提供的ISR(中斷服務(wù)程序)掛載到中斷向量表上。
(2)創(chuàng)建驅(qū)動(dòng)程序初始化所需要的設(shè)備對象。BSP將硬件設(shè)備描述為一個(gè)數(shù)據(jù)結(jié)構(gòu)。這個(gè)數(shù)據(jù)結(jié)構(gòu)中包含這個(gè)硬件設(shè)備的一些重要參數(shù),上層軟件就可以直接訪問這個(gè)數(shù)據(jù)結(jié)構(gòu)。
(3)為驅(qū)動(dòng)程序提供訪問硬件設(shè)備寄存器的函數(shù)。
(4)為驅(qū)動(dòng)程序提供可重用性措施,比如將與硬件關(guān)系緊密的處理部分在BSP中完成,驅(qū)動(dòng)程序直接調(diào)用BSP提供的接口,這樣驅(qū)動(dòng)程序就與硬件無關(guān)。只要不同的硬件系統(tǒng)的BSP提供的接口相同,驅(qū)動(dòng)程序就可在不同的硬件系統(tǒng)上運(yùn)行。4.3.2LCD驅(qū)動(dòng)控制實(shí)例
與ARM自帶LCD驅(qū)動(dòng)器有關(guān)的寄存器包括:PCOND——端口D的引腳配置寄存器,PDATD?——端口D的數(shù)據(jù)寄存器,PUPD——端口D的上拉禁止寄存器。其中,由于LCD驅(qū)動(dòng)控制端口與ARM的端口4是共用的,因此要設(shè)置相應(yīng)的寄存器,將其定義為LCD驅(qū)動(dòng)控制端口。
表4-1是LCD控制寄存器LCDCON1的位描述。表4-1LCDCON1的位描述我們將顯示方式設(shè)為8位單掃方式,VLINE和VCLK之間的時(shí)滯設(shè)為16倍系統(tǒng)時(shí)鐘,VLINE高電平為16倍系統(tǒng)時(shí)鐘,CLKVAL設(shè)為20。
表4-2是LCD控制寄存器LCDCON2的位描述。表4-2LCDCON2的位描述表4-3是LCDSADDR1寄存器的位描述。表4-3LCDSADDR1的位描述表4-4是LCDSADDR2寄存器的位描述。表4-4LCDSADDR2的位描述表4-5是LCDSADDR3寄存器的位描述。表4-5LCDSADDR3的位描述4.3.3A/D轉(zhuǎn)換功能驅(qū)動(dòng)實(shí)例
ARMS3C440BX芯片自帶一個(gè)8路模擬信號輸入的10位A/D轉(zhuǎn)換器,該轉(zhuǎn)換器通過軟件編程選擇設(shè)置為Sleep模式時(shí),可以節(jié)電,減少功率損失。它的主要特性是最大轉(zhuǎn)換率為500千次每秒,非線性度為正負(fù)1位,輸入電壓范圍為0~2.5V,輸入帶寬為0~100Hz。
1.ADC(A/DConversion)的引腳設(shè)置
S3C440BX芯片與A/D功能有關(guān)的引腳如表4-6所示,其中AIN[7:0]為8路模擬采集通道,AREFT為參考正電壓,AREFB為參考負(fù)電壓,AVCOM為模擬共電壓。表4-6與A/D功能有關(guān)的引腳在電路中,對上述引腳需要按照圖4-4所示加上電容。圖4-4外部引腳配置參考
2.ADC轉(zhuǎn)換時(shí)間的計(jì)算
A/D轉(zhuǎn)換時(shí)間即完成一次A/D轉(zhuǎn)換所需要的時(shí)間。如果系統(tǒng)時(shí)鐘為66MHz且ADC時(shí)鐘源的預(yù)分頻值為9,則10位數(shù)字量的轉(zhuǎn)換時(shí)間為
式中,除以16是因?yàn)橐瓿赊D(zhuǎn)換至少需要16個(gè)時(shí)鐘周期。該ADC不具有采樣保持電路,因此雖然它具有較高的采樣速度,但為了得到精確的轉(zhuǎn)換數(shù)據(jù),輸入的模擬信號的頻率應(yīng)該不超過100Hz。
3.ADC相關(guān)寄存器及其設(shè)置
與A/D轉(zhuǎn)換相關(guān)的寄存器主要有如下三個(gè):
(1)?ADCPSR:采樣預(yù)分頻寄存器。其地址和意義如表4-7所示。表4-7采樣預(yù)分頻寄存器
ADCPSR各位的含義如表4-8所示。表4-8ADCPSR各位的含義通過設(shè)置該寄存器,可以設(shè)置采樣率,最后得到的除數(shù)因子?=?2?×?(預(yù)分頻值?+?1)。
參考:ADCPSR=20。
(
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 帕金森治療指南課件
- 《刑罰裁量》課件
- 2020-2016一建《市政公用工程管理與實(shí)務(wù)》真題及參考答案
- 2018年寧夏服務(wù)事業(yè)部安全規(guī)范實(shí)施細(xì)則
- 發(fā)電企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化規(guī)范及達(dá)標(biāo)評級標(biāo)準(zhǔn)最終版
- 2020年2020學(xué)位英語單詞大全
- 2024年渭南市婦幼保健院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年07月浙江浙商銀行總行資產(chǎn)管理部社會招考(716)筆試歷年參考題庫附帶答案詳解
- 根莖葉(說課稿)-2023-2024學(xué)年科學(xué)三年級下冊人教鄂教版
- 浙江省寧波市鎮(zhèn)海中學(xué)浙教版高中信息技術(shù)說課稿:Photoshop制作賀卡
- 慢阻肺護(hù)理個(gè)案病例范文
- 《農(nóng)機(jī)安全》課件
- 公共廁所清潔保養(yǎng)協(xié)議
- 浙江省溫州市2023-2024學(xué)年六年級上學(xué)期期末科學(xué)試卷(含答案)3
- 深圳大學(xué)《激光原理與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 西安市高新第一中學(xué)八年級上冊地理期末試卷(含答案)
- 2024年廣東省深圳市中考英語適應(yīng)性試卷
- 普法學(xué)法知識考試題庫(100題附答案)
- DB37-T 1722-2024公路工程高性能瀝青混合料施工技術(shù)規(guī)范
- 四年級數(shù)學(xué)上冊期末試卷
- 道 法+在勞動(dòng)中創(chuàng)造人生價(jià)值 課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級上冊
評論
0/150
提交評論