版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、arm linux 系統(tǒng)開發(fā)流程1、開發(fā)目的硬件系統(tǒng)2、建立交叉編譯工具3、開發(fā)bootloader4、移植linux內(nèi)核5、開發(fā)一個文件系統(tǒng)6、開發(fā)相關(guān)硬件的驅(qū)動程序7、開發(fā)上層運用程序8、燒寫bootloader、內(nèi)核、文件系統(tǒng)等。嵌入式交叉編譯環(huán)境簡介交叉編譯就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。 這里說的平臺分別指的是主機平臺Host和目的平臺Target。 就我們在ARM平臺上移植Linux來說,Host是一臺普通的PC機,它經(jīng)過串口或網(wǎng)絡(luò)接口與Target通訊;Target是arm-linux平臺這里說的arm指的是平臺所運用的CPU是ARM9處置器,linux指的是運轉(zhuǎn)的
2、操作系統(tǒng)是Linux。 我們在Host上開發(fā)程序,并在這個平臺上運轉(zhuǎn)交叉編譯器Cross Complier,編譯我們的程序,而由Cross Complier生成的程序?qū)⒃赥arget上運轉(zhuǎn) 需求交叉編譯的緣由: 首先,在工程的起始階段,目的平臺尚未建立,因此需求做交叉編譯,以生成我們所需求的Boot loader以及kernel(由于Bootloader和kernel的源碼需求經(jīng)過交叉編譯后才可以在目的平臺上運轉(zhuǎn)); 其次,當(dāng)目的平臺能啟動之后,由于目的平臺上資源的限制,當(dāng)我們編譯大型程序時,依然能夠需求用到交叉編譯。如何建立交叉編譯工具鏈構(gòu)建交叉工具鏈通常有以下3種方法:1分步驟手工編譯分步
3、編譯和安裝交叉編譯工具鏈所需求的庫和源代碼,最終生成交叉編譯工具鏈。2經(jīng)過腳本編譯經(jīng)過crosstool腳本工具來實現(xiàn)一次編譯生成交叉編譯工具鏈3直接獲取交叉編譯工具鏈直接經(jīng)過網(wǎng)上下載曾經(jīng)制造好的交叉編譯工具鏈。ftp:.ukftp:ftp:Linux內(nèi)核代碼 linux-2.6.10.tar.gz glibc庫 glibc-2.3.2.tar.gz工具程序 binutils-2.15.tar.bz2內(nèi)核線程包 glibc-linuxthreads-2.3.2.tar.gz編譯器 gcc-3.3.6.tar.gz配置開發(fā)板PXA270嵌入式系統(tǒng)的宿主機交叉編譯環(huán)境arm-linux.tar.g
4、z提供ARM系統(tǒng)開發(fā)的交叉編譯器/usr/local/arm-linux/binvi /etc/profilepathmunge /usr/local/arm-linux/bincp arm-linux.tar.gz /usr/localcd /usr/localtar -xzf arm-linux.tar.gz目的機與主機的通訊方式1、minicomminicom 很像Windows 下面的超級終端,我們用minicom 作為目的板的終端顯示視窗;經(jīng)過串口控制目的板 2、從菜單中選擇Serial Port Setup配置minicom1、#minicom -s3、“A以設(shè)置“Serial D
5、evice。假設(shè)運用串口1,那么輸入/dev/ttyS0。假設(shè)運用串口2,那么輸入/dev/ttyS1。4、“E鍵進(jìn)入設(shè)置“bps/par/Bits波特率界面,再按“I以設(shè)置波特率為115200設(shè)置被保管到“/etc/minirc.dfl目的板上電后,目的板的啟動過程顯示在minicom;CTR+A+szmodern2 NFS效力NFS效力可以使網(wǎng)絡(luò)上的同為Linux或Unix系統(tǒng)主機共享文件系統(tǒng)。NFS可以將遠(yuǎn)程文件系統(tǒng)載入在本地文件系統(tǒng)下。遠(yuǎn)程的硬盤、目錄和光驅(qū)都可以變本錢地主機目錄樹中的一個子目錄。載入后與處置本人的文件系一致樣運用即可。不只方便,也節(jié)省了反復(fù)保管文件的空間、傳輸文件的時
6、間及網(wǎng)絡(luò)帶寬。NFS特點NFS系統(tǒng)也是運用C/S體系構(gòu)造,就是有效力器端與客戶端效力器端提供共享的文件系統(tǒng),必需把文件系統(tǒng)輸出(export)出去客戶端那么要把文件系統(tǒng)載入到本人的系統(tǒng)下運用NFS,需求在效力器端設(shè)置輸出,在客戶端設(shè)置載入NFS效力器端配置(1)封鎖防火墻(2)配置共享目錄-客戶端主機IP范圍(3)主機IP(4)啟動NFS效力NFS客戶端(1)設(shè)置客戶端IP地址(2)掛載共享目錄mount -t nfs 主機ip:共享目錄 掛載點本卷須知:封鎖防火墻,主機與客戶端在同一ip段詳細(xì)配置步驟效力器端1封鎖防火墻詳細(xì)配置步驟2配置NFS效力器詳細(xì)配置步驟2-1設(shè)置共享目錄和主機范圍詳
7、細(xì)配置步驟2-2設(shè)置其他選項詳細(xì)配置步驟2-3設(shè)置其他選項詳細(xì)配置步驟3)設(shè)置NFS效力器的IP詳細(xì)配置步驟4啟動NFS效力詳細(xì)配置步驟客戶端1配置ip詳細(xì)配置步驟2掛載NFS/etc/exports它的根本格式是Directory host (權(quán)限選項、用戶映像、)Directory:表示計劃共享的目錄稱號;Host:共享這個目錄的主機稱號;權(quán)限選項:定義平安選項;權(quán)限選項1ro:只讀,只允許客戶機掛載這個文件系統(tǒng)為只讀方式。2rw:明確指定共享目錄為讀/寫權(quán)限。用戶映像來限定某些用戶對NFS共享文件的運用權(quán)限no_root_squash:其他平安選項1Insecure :以非平安端口的方式
8、訪問,即默許用戶端口是1024或者更高,而NFS效力器默許的平安的效力器端口應(yīng)該是低于1024的。2Sync:根據(jù)懇求進(jìn)展同步。例:vi /etc/exports/home/ls 0 (rw, insecure, no_root_squash)表示共享的目錄為/home/ls,允許訪問的客戶機地址為0的主機,權(quán)限為可讀可寫rw,非平安方式訪問insecure,讓客戶機的根用戶在效力器上擁有根權(quán)限。例:vi /etc/exports/home/ls *(rw)表示共享的目錄為/home/ls,允許恣意主機訪問,權(quán)限可讀可寫 Bootloader是什么?Bootloader,為引導(dǎo)加載程序,是嵌入
9、式系統(tǒng)加電后運轉(zhuǎn)的第一段代碼,相當(dāng)于PC機的BIOS。 Bootloader的位置:通常固化在硬件上的某個固態(tài)存儲設(shè)備上,加電后自啟動。基于 ARM處置器核的CPU在復(fù)位時通常都從地址 0 x00000000取它的第一條指令。在這個地址處安排的就是Bootloader。Bootloader是在操作系統(tǒng)運轉(zhuǎn)之前執(zhí)行的一段小程序。經(jīng)過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映像表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好預(yù)備。 3 BootloaderBootloader參數(shù)系統(tǒng)內(nèi)核根文件系統(tǒng)從低地址到高地址方向Flash 幾種發(fā)布的BootloaderBootloade
10、r是嚴(yán)重地依賴于硬件而實現(xiàn)的。每種不同體系構(gòu)造的處置器都有不同的Bootloader。不過Bootloader的開展也趨于支持多種體系構(gòu)造,如如今比較成熟的vivi、RedBoot和U-Boot等。ftpftp.denx.de/pub/u-boot/Bootloader操作方式大多數(shù)Bootloader都有兩種不同的操作方式:“啟動加載方式和“下載方式。其區(qū)別對于開發(fā)人員才有意義。從最終用戶的角度看,Bootloader的作用就是用來加載操作系統(tǒng),而并不存在所謂的啟動加載方式與下載方式的區(qū)別。1、啟動加載Bootloading方式即Bootloader從目的機上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加
11、載到 RAM 中運轉(zhuǎn),整個過程并沒有用戶的介入。啟動加載方式是 Bootloader的正常任務(wù)方式,在嵌入式產(chǎn)品發(fā)布的時侯,Bootloader必需任務(wù)在這種方式下。2、下載Downloading方式下載方式:在這種方式下,目的機上的Bootloader將經(jīng)過串口銜接或網(wǎng)絡(luò)銜接等通訊手段從主機下載文件。下載內(nèi)容及存儲:主要是下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機下載的文件通常首先被Bootloader保管到目的機的RAM中,然后再被 Bootloader寫到目的機上的FLASH 類固態(tài)存儲設(shè)備中。下載方式運用場所:Bootloader的這種方式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時被運用;此外,以
12、后的系統(tǒng)更新也會運用到這種任務(wù)方式。用戶運用接口:任務(wù)于這種方式下的Bootloader通常都會向它的終端用戶提供一個簡單的命令行接口。 如在U-BOOT下,將出現(xiàn)“#提示符;在vivi 下出現(xiàn)“vivi提示符。下載Downloading方式例如Bootloader啟動過程大多數(shù) Boot Loader 啟動都分為 stage1 和 stage2 兩大部分。依賴于處置器體系構(gòu)造和板級初始化的代碼,通常都放在 stage1 中,用匯編言語實現(xiàn)而 stage2 那么通常用C言語來實現(xiàn),這樣可以實現(xiàn)更復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。Boot Loader 的 stage1 通常包括
13、以下步驟(以執(zhí)行的先后順序):硬件設(shè)備初始化。為加載 Boot Loader 的 stage2 預(yù)備 RAM 空間??截?Boot Loader 的 stage2 到 RAM 空間中。設(shè)置好堆棧跳轉(zhuǎn)到 stage2 的 C 入口點。Stage1主要任務(wù)是硬件初始化,并預(yù)備第二階段的C言語運轉(zhuǎn)環(huán)境 封鎖處置器內(nèi)部指令/數(shù)據(jù)cache等設(shè)置CPU的速度和時鐘頻率RAM初始化初始化led等為了獲得更快的執(zhí)行速度,通常把 階段2 的代碼加載到 RAM 空間中來執(zhí)行。 預(yù)備RAM空間思索的要素:階段2代碼大小、堆棧、頁大小4KB的倍數(shù)、安排位置等。Boot Loader 的 stage2 通常包括以下步
14、驟(以執(zhí)行的先后順序):初始化本階段要運用到的硬件設(shè)備。檢測系統(tǒng)內(nèi)存映射(memory map)。將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中。為內(nèi)核設(shè)置啟動參數(shù)。調(diào)用內(nèi)核。 stage2 的代碼通常用 C 言語來實現(xiàn),以便于實現(xiàn)更復(fù)雜的功能和獲得更好的代碼可讀性和可移植性。與普通 C 言語運用程序不同的是,在編譯和鏈接 boot loader 這樣的程序時,我們不能運用 glibc 庫中的任何支持函數(shù)。Stage2的主要目的是運轉(zhuǎn)Linux內(nèi)核,在此之前需求完成硬件和內(nèi)存初始化任務(wù)。Bootloader調(diào)用Linux kernel的方法是直接跳轉(zhuǎn)到內(nèi)核的第一條
15、指令處。在跳轉(zhuǎn)時必需滿足以下條件:1)、CPU存放器的設(shè)置:R0為0;R1為機器類型ID;R2為啟動參數(shù),標(biāo)志列表在RAM中的起始基地址。 2)、CPU方式: CPU必需設(shè)置為SVC方式,必需制止中斷(IRQs和FIQs)。3)、 MMU 和 Cache的設(shè)置:MMU 必需封鎖;指令 Cache 可以翻開也可以封鎖; 數(shù)據(jù) Cache 必需封鎖。vivi Bootloader源碼分析vivi是韓國Mizi公司開發(fā)的Bootloader,適用于ARM9處置器。vivi有兩種任務(wù)方式,在啟動時可以選擇。在vivi啟動時,經(jīng)過串行口發(fā)出如下信息:Press Return to start the L
16、inux now, any other key for vivi按回車鍵啟動Linux OS,按其它鍵進(jìn)入vivi命令接口方式,可以運用vivi提供的命令進(jìn)展一些操作。vivi源代碼目錄構(gòu)造vivi源代碼包含的目錄有:arch、Documentation、drivers、init、include、lib、scripts、test、util等10目錄,共300多個文件。各個目錄內(nèi)容如下:1、archarchitecture目錄它下面的文件為與CPU硬件相關(guān)的初始化代碼,此目錄包含了所用vivi支持的CPU。普通只包含S3C2410 x的文件。2、Documentation目錄其下文件為vivi運
17、用指南。3、drivers目錄 存放的為MTD(memory technology device內(nèi)存技術(shù)設(shè)備) 數(shù)據(jù)存儲媒質(zhì)設(shè)備讀寫控制文件和串行口操作文件,對串行口支持xmodem和ymodem協(xié)議。4、include目錄存放一切的頭文件,包括S3C2410微處置器的和S3C2410開發(fā)板的頭文件。5、init目錄該目錄下是系統(tǒng)初始化文件main.c、version.c,后者是vivi版本信息,main.c為vivi整個初始化的構(gòu)造。6、lib目錄該目錄下是公共運用及接口代碼,如時鐘功能文件time.c,堆棧初始化文件heap.c等文件。7、scripts目錄該目錄存放的是系統(tǒng)配置需求的腳本
18、文件,如menuconfig和configue文件。8、CVS目錄一切的目錄下面都有一個CVS目錄,存放的是該目錄的途徑和它的子目錄。vivi源代碼文件與功能構(gòu)造vivi源代碼文件:1、vivi/arch/s3c2410/head.s2、一段過渡,實現(xiàn)循環(huán)調(diào)用,main前往后重新復(fù)位LDRSP,DW_STACK_STARTMOVFP,#0MOVA2,#0BLMAINMOVPC,#FLASH_BASE ; main前往后重新復(fù)位3、vivi/init/main.cvivi Bootloader接口命令命 令功 能Load下載flash或RAM命令PartMTD分區(qū)操作命令param設(shè)置、查看參數(shù)
19、命令Boot啟動系統(tǒng)命令flashFlash管理命令viviload flash kernel xviviboot nand 0 x80000flash erase 0 x80000 0 xc0000vivi源碼的修正移植vivi的移植方法步驟:對vivi進(jìn)展修正移植對vivi進(jìn)展配置對vivi進(jìn)展編譯下載、運轉(zhuǎn)vivi1、修正vivi/Makefile1修正交叉編譯庫和頭文件1修正編譯器途徑CROSS_COMPILE= 2修正編譯器庫文件途徑:ARM_GCC_LIBS= 3添加交叉編譯時頭文件的搜索途徑: LIBC_INCLUDE_DIR=2Linux內(nèi)核包含文件 LINUX_INCLUDE
20、_DIR=編譯vivi用到的交叉編譯工具版本是cross-2.95.3.tar.bz2 2、修正Flash的分區(qū)信息vivi/arch/s3c2410/smdk.c#ifdef CONFIG_S3C2410_AMD_BOOTmtd_partition_t default_mtd_partitions = name:vivi,offset:0,size:0 x00020000,flag:0, name:param,offset:0 x00020000,size:0 x00010000,flag:0, name:kernel,offset:0 x00030000,size:0 x000C0000,
21、flag:0, name:root,offset:0 x00100000,size:0 x00140000,flag:MF_BONFS;#endif二、對vivi進(jìn)展配置運轉(zhuǎn)vivi配置程序menuconfig:makemenuconfig啟動對vivi配置的主菜單,根據(jù)本人的目的系統(tǒng)逐項進(jìn)展設(shè)置,設(shè)置完后退出保管即可。三、對vivi進(jìn)展編譯在vivi目錄下執(zhí)行以下命令: makecleanmake make clean是去除以前編譯時生成的一切目的文件和暫時文件。假設(shè)沒有錯誤,編譯后會生成vivi的目的文件vivi.bin。四、對vivi進(jìn)展下載利用JTAG口將vivi下載到目的板的 fla
22、sh空間0 x00000-0 x20000。然后對目的板加電,使vivi啟動運轉(zhuǎn),察看運轉(zhuǎn)情況。Jflash-s3c2410 /t=其中,F(xiàn)lash 類型有如下選項: 1:SMDK2410:K9S3208 4MB 2:SMDK2410:K9S6408 8MB 3:SMDK2410:K9S2808 16MB 4:SMDK2410:K9S5608 32MB 5:SMDK2410:K9S1208 64MB 6:SMDK2410:AM29LV800BB在燒寫過程中,有3次提示,要求用戶選擇:1在“Select the function to test :后面輸入“ 0 ,表示對型號為K9S1208的F
23、lash芯片進(jìn)展燒寫,燒寫類型為程序。2在“Input target block number: 后面輸入“ 0 ,表示從偏移地址0處開場燒寫。經(jīng)過數(shù)分鐘的燒寫之后,將vivi燒寫到Flash之中。再次出現(xiàn)提示:在“Select the function to test : 后面輸入“ 2 ,退出vivi燒寫。并封鎖開發(fā)板電源,拔下JTAG銜接線。在完成vivi燒寫之后,運用串口線,經(jīng)過串口將宿主機與開發(fā)板銜接起來。在宿主機上翻開超級終端minicom窗口,再按下“Backspace回格鍵不放,接通開發(fā)板電源。這時我們經(jīng)過超級終端minicom窗口可以察看到嵌入式系統(tǒng)開發(fā)板上Linux系統(tǒng)的啟
24、動過程,并在出現(xiàn)提示符“ vivi 時停住假設(shè)Linux系統(tǒng)有啟動,但沒有 “ vivi 提示符出現(xiàn),那么需求再一次按住鍵盤上的“Backspace 回格鍵不放,對開發(fā)板“Reset重啟。進(jìn)入vivi提示形狀1對Flash分區(qū)在“vivi 提示符下用命令“bon part 對Flash進(jìn)展分區(qū):Bon part 0 192k 1M其中,從地址0處開場為vivi,地址192k192*1024196608處開場為內(nèi)核,地址1M1*1024*10241048576處開場為文件系統(tǒng)。由于對Flash進(jìn)展了重新分區(qū),原來燒寫在Flash中從地址0處開場的引導(dǎo)加載程序vivi亦被擦除了,因此,這時不能掉電
25、,也不能重啟開發(fā)板,必需緊接著重新燒寫vivi程序。(2)vivi load flash vivi x當(dāng)出現(xiàn):Ready for downloading using xmodem.Waiting.然后,按下Ctrl+A+S ,彈出一個對話框3燒寫內(nèi)核當(dāng)vivi燒寫終了后,需求重新啟動開發(fā)板,使剛剛的分區(qū)及引導(dǎo)程序生效。重新啟動開發(fā)板時,操作過程如前所述,按下“Backspace回格鍵不放的同時,重新啟動開發(fā)板系統(tǒng),出現(xiàn)提示符“ vivi 。vivi load flash kernel x4燒寫文件系統(tǒng)緊接著上面的操作,在提示符“vivi下,輸入命令:vivi load flash root x
26、Linux內(nèi)核Linux內(nèi)核主要功能進(jìn)程管理內(nèi)存管理文件管理設(shè)備管理網(wǎng)絡(luò)管理 Linux內(nèi)核構(gòu)造Linux配置與編譯編譯內(nèi)核的步驟:下載內(nèi)核源碼 修正內(nèi)核目錄樹根下的的Makefile,指明交叉編譯器 設(shè)置環(huán)境變量 配置內(nèi)核產(chǎn)生.config文件 輸入內(nèi)核配置命令(make menuconfig),進(jìn)展內(nèi)核選項的選擇 編譯內(nèi)核下載Linux內(nèi)核1、確定處置器類型 Linux內(nèi)核源代碼支持20多種微處置器類型,在編譯之前要先確定微處置器類型。ARCH:= armCROSS_COMPILE=arm-linux-Linux2.4 內(nèi)核還沒有包含S3C2410處置器Linux2.6內(nèi)核曾經(jīng)支持。2、確
27、定配置方法內(nèi)核支持 4種不同的配置方法,每種方法是讀取一個根目錄下隱藏的配置文件 “ .config 。這 4 種方式如下。 make config:基于文本的最為傳統(tǒng)的配置界面,不引薦運用。 make menuconfig:基于文本選單的配置界面,字符終端下引薦運用。 make xconfig:基于圖形窗口方式的配置界面,Xwindow 下引薦運用。 make oldconfig:自動讀入“.config配置文件,并且只需求用戶設(shè)定前次沒有設(shè)定過的選項。 【例】以 make menuconfig 為例進(jìn)展S3C2410系統(tǒng)的內(nèi)裁剪核配置。# make menuconfig 彈出內(nèi)核裁剪配置窗口 “System Type -子項的界面在完成配置之后,就可以保管退出,如圖 所示。內(nèi)核編譯make zImagearch/$ARCH/boot目錄中。 文件系統(tǒng) 文件系統(tǒng)是嵌入式Linux系統(tǒng)必備的一個組成部分,是系統(tǒng)文件和運用文件存儲的地方。 文件目錄/bin目錄下需求包含常用的用戶命令,如sh等。/sbin目錄要包含一切系統(tǒng)命令,如reboot等 。/etc目錄下是系統(tǒng)配置文件。/boot目錄下是內(nèi)核映像/dev目錄含有系統(tǒng)一切的特殊設(shè)備文件/lib目錄包含系統(tǒng)一切的庫文件/mnt目錄只用于掛接,可以是空目錄/proc目錄是/p
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國戶外運動光學(xué)產(chǎn)品行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國紅外探測器行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實施研究報告
- 建設(shè)客運服務(wù)品牌-促進(jìn)客運企業(yè)發(fā)展
- 2025年中國運動鞋行業(yè)產(chǎn)銷需求與投資預(yù)測分析報告
- 2025年中國藥用玻璃管行業(yè)發(fā)展前景預(yù)測及投資戰(zhàn)略研究報告
- 機械產(chǎn)品知識培訓(xùn)課件
- 二零二五年度房地產(chǎn)工程施工臨時用電供應(yīng)合同3篇
- 二零二五年度市政工程廉政承諾協(xié)議3篇
- 政策導(dǎo)向、汲取能力與衛(wèi)生公平
- 中國味濃濃臘八節(jié)
- 戶外兒童樂園規(guī)劃方案
- 浙江省溫州市2022-2023學(xué)年四年級上學(xué)期語文期末試卷(含答案)
- MDR醫(yī)療器械法規(guī)考核試題及答案
- 河南省鄭州高新技術(shù)產(chǎn)業(yè)開發(fā)區(qū)2023-2024學(xué)年三年級上學(xué)期1月期末科學(xué)試題
- 女裝行業(yè)退貨率分析
- 領(lǐng)導(dǎo)溝通的藝術(shù)
- 純視覺方案算法
- 道士述職報告
- 2024年七年級語文上學(xué)期期末作文題目及范文匯編
- 云南省昆明市五華區(qū)2023-2024學(xué)年九年級上學(xué)期期末英語試卷+
- 2023年生產(chǎn)運營副總經(jīng)理年度總結(jié)及下一年計劃
評論
0/150
提交評論