![基于ARM9嵌入式Linux引導(dǎo)程序研究與移植_第1頁](http://file4.renrendoc.com/view/58414d613759ca6a13ae98da9d146eeb/58414d613759ca6a13ae98da9d146eeb1.gif)
![基于ARM9嵌入式Linux引導(dǎo)程序研究與移植_第2頁](http://file4.renrendoc.com/view/58414d613759ca6a13ae98da9d146eeb/58414d613759ca6a13ae98da9d146eeb2.gif)
![基于ARM9嵌入式Linux引導(dǎo)程序研究與移植_第3頁](http://file4.renrendoc.com/view/58414d613759ca6a13ae98da9d146eeb/58414d613759ca6a13ae98da9d146eeb3.gif)
![基于ARM9嵌入式Linux引導(dǎo)程序研究與移植_第4頁](http://file4.renrendoc.com/view/58414d613759ca6a13ae98da9d146eeb/58414d613759ca6a13ae98da9d146eeb4.gif)
![基于ARM9嵌入式Linux引導(dǎo)程序研究與移植_第5頁](http://file4.renrendoc.com/view/58414d613759ca6a13ae98da9d146eeb/58414d613759ca6a13ae98da9d146eeb5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PAGE PAGE 23基于ARM9嵌入式Linux引導(dǎo)程序研究與移植嵌入式綜合實(shí)驗(yàn)報(bào)告專 業(yè): 電子信息工程 班 級(jí): 電子071 姓 名: 武 超 學(xué) 號(hào): 079064209 指導(dǎo)教師: 馬小陸 2010年 7 月 4 日目 錄1、實(shí)驗(yàn)意義22、綜合實(shí)驗(yàn)報(bào)告內(nèi)容2 2.1交叉編譯器的制作 22.2 vivi引導(dǎo)程序的移植53、總結(jié)221、實(shí)驗(yàn)意義此次嵌入式課程設(shè)計(jì),使我熟悉Linux的一些基本命令和開發(fā)環(huán)境;同時(shí)也理解了交叉編譯器制作的三種方法和vivi引導(dǎo)程序的移植過程,學(xué)會(huì)怎樣給Flash分區(qū)并學(xué)會(huì)通過串口燒寫vivi、內(nèi)核、根文件系統(tǒng)和應(yīng)用程序,課程設(shè)計(jì)的過程很快樂,實(shí)驗(yàn)的過程也很
2、磨煉人的耐性,同樣也增加了我對(duì)Linux的興趣!2、綜合實(shí)驗(yàn)報(bào)告內(nèi)容2.1、交叉編譯器的制作。 交叉開發(fā)工具鏈的配置大體有三種方法,第一種是下載別人已做好的工具鏈,當(dāng)然這是最省事的方法,第二種是到網(wǎng)上下載crosstool,第三種是最有趣的,也是最能體現(xiàn)自己能力的方式,自己一步一步制作交叉開發(fā)工具鏈交,這個(gè)過程富有挑戰(zhàn)性。我采用的是第二種方法。 編譯過程必須在普通用戶模式下運(yùn)行,用root用戶不行。編譯前需要下載一些軟件,當(dāng)然不下載也行,crosstool會(huì)自動(dòng)幫你下載,但crosstool用wget下載,速度會(huì)很慢,有一些Linux還沒有該下載命令,所以最好在windows環(huán)境下通過專門的下
3、載軟件下載所需要的軟件,然后通過share件傳到linux系統(tǒng)中。根據(jù)后面腳本中說指定的的版本,下載軟件及版本如下:binutils-2.16.1.tar.bz2 glibc-linuxthreads-2.3.6.tar.bz2 glibc-2.3.2.tar.gz gcc-3.3.6.tar.bz2 linux-libc-headers-.tar.bz2linux-2.4.21.tar.bz2 crosstool-0.43.tar.gz 以上軟件放在Linux的/mnt/hgfs/share中。仍以root身份登陸,在/下輸入以下命令: mkdir downloadsmkdir crosst
4、ool將下載的軟件復(fù)制到/download中。將crosstool-0.43.tar.gz 復(fù)制到/crosstool中,解壓縮tar zxvf crosstool-0.43.tar.gz從終端進(jìn)入crosstool-0.431)demo-arm.sh:# vi demo-arm.sh:修改以下兩個(gè)路徑為TARBALLS_DIR=/download 下載的軟件包存放的地址RESULT_TOP=/crosstool 交叉編譯環(huán)境安裝在這里2)arm.dat: #vi arm.dat TARGET=arm-linux #修改交叉編譯軟件的前綴3)gcc-4.1.0-glibc-2.3.6-tls.
5、dat # vi gcc-3.4.5-glibc-2.3.6-tls.datBINUTILS_DIR= binutils-2.16.1GCC_DIR= gcc-3.3.6GLIBC_DIR= glibc-2.3.2LINUX_SANITIZED_HEADER_DIR= linux-libc-headers-GLIBCTHREADS_FILENAME= glibc-linuxthreads-2.3.64)最后在用戶模式下執(zhí)行demo- arm.sh就可以了./demo-arm.sh數(shù)小時(shí)后出現(xiàn)如下圖所示:修改環(huán)境2.2、vivi引導(dǎo)程序的移植。 博創(chuàng)2410板子上本身有vivi引導(dǎo)程序和2.4內(nèi)
6、核,將針對(duì)博創(chuàng)2410板子重新制作vivi引導(dǎo)程序,重新引導(dǎo)原有2.4內(nèi)核。vivi的移植方法步驟:(1) 對(duì)vivi進(jìn)行移植修改;(2) 對(duì)vivi進(jìn)行配置、編譯;(3) 燒寫vivi;(4) 測(cè)試vivi;本文選擇vivi-20030929版本。它不僅提供對(duì)ARM-920T內(nèi)核的支持,而且直接提供了對(duì)于S3C2410 x的板級(jí)支持,這使移植工作量相對(duì)減少。2.2.1 對(duì)vivi進(jìn)行移植修改1修改vivi/Makefile1) 修改交叉編譯庫和頭文件路徑(1) 修改編譯器路徑。將:CROSS_COMPILE =/usr/local/arm/2.95.3/bin/arm-linux-修改為:C
7、ROSS_COMPILE = 符合本機(jī)的路徑本機(jī)CROSS_COMPILE的路徑為: CROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux-(2) 修改編譯器庫文件路徑。將:ARM_GCC_LIBS =/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.3修改為:ARM_GCC_LIBS = 符合本機(jī)的路徑本機(jī)ARM_GCC_LIBS的路徑為:ARM_GCC_LIBS =/usr/local/arm/2.95.3/lib/gcc-lib/arm-linux/2.95.32) Linux內(nèi)核包含文件路
8、徑 將:LINUX_INCLUDE_DIR =/usr/local/arm/2.95.3/include修改Linux頭文件所在路徑:LINUX_INCLUDE_DIR=符合本機(jī)的本機(jī)LINUX_INCLUDE_DIR的路徑為:LINUX_INCLUDE_DIR = /usr/local/arm/2.95.3/include2修改vivi中與硬件相關(guān)的部分與具體運(yùn)行在哪一個(gè)處理器平臺(tái)上相關(guān)的文件都存放在vivi/arch/目錄下,本系統(tǒng)使用S3C2410 x處理器,對(duì)應(yīng)的目錄為s3c2410。其中head.s文件是vivi啟動(dòng)配置代碼,加電復(fù)位運(yùn)行的代碼就是從這里開始的。由于該文件中對(duì)處理器的
9、配置均通過調(diào)用外部定義常數(shù)或宏來實(shí)現(xiàn),所以針對(duì)不同的平臺(tái),只要是S3C2410 x處理器,幾乎不用修改,只要修改外部定義的初始值即可。這部分初始值都在 vivi/include/platform/smdk2410.h文件中定義,包括處理器時(shí)鐘、存儲(chǔ)器初始化、通用I/O口初始化以及vivi初始配置等。3支持Nand Flash啟動(dòng)的修改(vivi/arch/s3c2410/smdk.c)1) 修改Nand Flash分區(qū)系統(tǒng)存儲(chǔ)器使用 64 MB的 Nand Flash,因此vivi要從Nand Flash啟動(dòng)。Nand Flash只適合用來存放數(shù)據(jù),不能夠直接在其上執(zhí)行程序指令。為了支持 Na
10、nd Flash的系統(tǒng)引導(dǎo),S3C2410具備一個(gè)內(nèi)部 SRAM緩沖器,叫做 Steppingstone。當(dāng)系統(tǒng)啟動(dòng)時(shí),Nand Flash存儲(chǔ)器的前面 4 KB將被自動(dòng)載入到 Steppingstone中,然后系統(tǒng)自動(dòng)執(zhí)行這些載入的引導(dǎo)代碼。Nand Flash的最開始部分是head. S,在 head.S的尾部 vivi將執(zhí)行 copy_myself代碼段將自身拷貝到RAM中,然后跳轉(zhuǎn)到RAM中的 main()函數(shù),開始運(yùn)行。我們將系統(tǒng)的64M Nand Flash進(jìn)行了重新分區(qū),其具體分區(qū)如表7-2所示:表7-2 Nand Flash進(jìn)行了重新分區(qū)表名稱(name)起始地址(offset
11、)大小(size)引導(dǎo)程序(vivi)0 x000000000 x00020000(128k)參數(shù)(param)0 x000200000 x00010000(64k)內(nèi)核(kernel)0 x000300000 x00200000(2M)根文件系統(tǒng)(root)0 x002300000 x00400000(4M)應(yīng)用程序(jffs2)0 x006300000 x039d0000(57M+832k)因此,從Nand Flash中啟動(dòng)需要作修改:#ifdef CONFIG_S3C2410_NAND_BOOTmtd_partition_t default_mtd_partitions = name:v
12、ivi,offset:0,size:0 x00020000,/128kflag:0 , name:param,offset:0 x00030000,size:0 x00010000, /64kflag:0 , name:kernel,offset:0 x00030000,size:0 x00200000, /2Mflag:0 , name:root,offset:0 x00230000,size:0 x00400000,/4Mflag:MF_BONFS , name:jffs2,offset:0 x00630000,size:0 x039D0000,flag:MF_JFFS2 ; #endif
13、 2) 修改默認(rèn)參數(shù)vivi_parameter_t default_vivi_parameters = mach_type,MACH_TYPE,NULL , media_type,MT_S3C2410,NULL , boot_mem_base,0 x30000000,NULL , baudrate,UART_BAUD_RATE,NULL , xmodem_one_nak,0,NULL , xmodem_initial_timeout,300000,NULL , xmodem_timeout,30000000,NULL , ymodem_initial_timeout,1500000,NULL
14、 , boot_delay,0 x1000,NULL ; xmodem_timeout需要調(diào)整到30000000,不然你在使用下載時(shí)候很容易出現(xiàn)下載失敗的信息,如:“Retry 0: NAK on sector”;boot_delayo 為下載模式(Down Loading)下時(shí)間延時(shí),在這段時(shí)間里,如果開發(fā)人員不輸入任何vivi中的命令,則vivi將自動(dòng)引導(dǎo)內(nèi)核。本系統(tǒng)修改為:0 x1000000。3) 修改啟動(dòng)命令 在 int default_nb_params = ARRAY_SIZE(default_vivi_parameters);下添加: char linux_cmd = noin
15、itrd root=/dev/mtdblock3 init=/linuxrc console=ttyS0,115200 rootfstype=cramfs devfs=mount mem=64M;式中啟動(dòng)命令:noinitrd:不使用ramdisk;root:根文件系統(tǒng)所在的MTD(本系統(tǒng)為第四個(gè)分區(qū));init:內(nèi)核運(yùn)行入口命令文件;console:內(nèi)核信息輸出控制臺(tái);ttySAC0:表示串口,115200表示波特率,這是2.6內(nèi)核的串口名,這是為了方便引導(dǎo)第八章制作的2.6內(nèi)核,如果是引導(dǎo)2.4內(nèi)核則用串口名稱為:ttyS0。rootfstype:掛載的根文件系統(tǒng)類型,根據(jù)自己的根文件系統(tǒng)
16、來修改,本教材制作的根文件系統(tǒng)是cramfs;devfs :2.6內(nèi)核采用內(nèi)核使用devfs (Device File System);mem :Flash存儲(chǔ)器大??;4) 修改后編譯通過的vivi smdk.c源代碼:#include config.h#include machine.h#include vivi.h#include priv_data.h#include mtd/map.h#include boot_kernel.h#include command.h#include time.h#ifdef CONFIG_S3C2410_NAND_BOOTmtd_partition_t
17、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 x00200000, / 2M sector flag:0, name:root,offset:0 x00230000, size:0 x00400000, flag:MF_BONFS, name:jffs2,offset:0 x00630000, size:0 x039D0
18、000, flag:MF_BONFS;#endif#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,flag:0, name:root,offset:0 x00100000,size:0 x00140000,fla
19、g:MF_BONFS;#endifint default_nb_part = ARRAY_SIZE(default_mtd_partitions);#ifdef CONFIG_S3C2410_NAND_BOOT#define MT_S3C2410MT_SMC_S3C2410#endif#ifdef CONFIG_S3C2410_AMD_BOOT#define MT_S3C2410MT_NOR_FLASH#endifvivi_parameter_t default_vivi_parameters = mach_type,MACH_TYPE,NULL , media_type,MT_S3C2410
20、,NULL , boot_mem_base,0 x30000000,NULL , baudrate,UART_BAUD_RATE,NULL , xmodem_one_nak,0, NULL , xmodem_initial_timeout,300000,NULL , xmodem_timeout,30000000,NULL , ymodem_initial_timeout,1500000, NULL , boot_delay,0 x1000000,NULL ;int default_nb_params = ARRAY_SIZE(default_vivi_parameters);char lin
21、ux_cmd = noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttyS0,115200 rootfstype=cramfs devfs=mount mem=64M;void set_vpp(struct map_info *map, int vpp)void set_gpios(void)GPACON = vGPACON;GPBCON = vGPBCON;GPBUP = vGPBUP; GPCCON = vGPCCON;GPCUP = vGPCUP; GPDCON = vGPDCON;GPDUP = vGPDUP; GPECON = v
22、GPECON;GPEUP = vGPEUP; GPFCON = vGPFCON;GPFUP = vGPFUP; GPGCON = vGPGCON;GPGUP = vGPGUP; GPHCON = vGPHCON;GPHUP = vGPHUP; EXTINT0 = vEXTINT0;EXTINT1 = vEXTINT1;EXTINT2 = vEXTINT2;int board_init(void)init_time();set_gpios();return 0;extern user_command_t cpu_cmd;int misc(void)add_command(&cpu_cmd);re
23、turn 0;4、對(duì)vivi進(jìn)行配置與編譯進(jìn)入 vivi目錄執(zhí)行 “make clean”,在編譯之前將 vivi里所有的“ . o”和“ . o. flag”文件刪除。輸入“make menuconfig”進(jìn)入配置界面,,如圖7-10所示,進(jìn)行對(duì) vivi 裁剪。圖7-10 vivi配置界面一些主要配置和說明如下:System Type(系統(tǒng)類型) (S3C2410-based) ARM System type( ARM系統(tǒng)類型) ( ) SA1100 based ( ) PXA250/210 based ( ) S3C2400 based (x) S3C2410 basedImplemen
24、tations(啟動(dòng)位置) (SMDK)Platform (x)SMDK ( )MPORT3 ( )MPORT1 *Support NAND Boot(支持NAND啟動(dòng)) Support AMD Boot(支持AMD啟動(dòng)) Low Level Hardware Debugging(底層調(diào)試-硬件級(jí)) Enable simple memory test(簡(jiǎn)單的存儲(chǔ)器測(cè)試)General Setup(通用設(shè)置) Define TEXT Address(定義文本地址)(0) vivi base addressvivi(起始地址) support reset handler(支持復(fù)位處理程序)Seri
25、al Port(串口) * Serial Port (UART) support(串口支持)* Support serial terminal(支持串口終端)( EXTENDED)User interface(用戶界面) ( )STANDARD(標(biāo)準(zhǔn)) ( x)EXTENDED(擴(kuò)展) Ports(端口)* Support UART 0(支持UART0) Support UART 1(支持UART1) Support UART 2(支持UART2) Support UART 3(支持UART3) Transfer Protocol傳輸協(xié)議* Support X Modem(支持 X Modem
26、 傳輸) Support Y Modem(支持 Y Modem 傳輸) Support Z Modem(支持 Z Modem 傳輸)其它選項(xiàng)可采用默認(rèn)配置。輸入“make”對(duì)vivi進(jìn)行編譯,make沒有錯(cuò)誤,編譯后在當(dāng)前目錄下會(huì)生成vivi的二進(jìn)制代碼文件vivi,如下圖所示,這樣就可將其燒寫進(jìn)開發(fā)板中,驗(yàn)證是否能將內(nèi)核引導(dǎo)起來。2.2.2、燒寫vivi開發(fā)板上已經(jīng)存在vivi,可以用串口燒寫;1.串口下載vivi1)建立超級(jí)終端運(yùn)行Windows2000系統(tǒng)下開始程序附件通訊超級(jí)終端(HyperTerminal),新建一個(gè)通信終端。如果要求輸入?yún)^(qū)號(hào)、電話號(hào)碼等信息請(qǐng)隨意輸入,出現(xiàn)如下2.2
27、.21圖所示對(duì)話框時(shí),為所建超級(jí)終端取名為arm,可以為其選 一個(gè)圖標(biāo)。單擊“確定”按鈕。圖2.2.21在接下來的對(duì)話框中選擇ARM 開發(fā)平臺(tái)實(shí)際連接的PC串口(如COM1),按確定后出現(xiàn)如下圖2.2.22所示的屬性對(duì)話框,設(shè)置通信的格式和協(xié)議。這里波特率為115200,數(shù)據(jù)位8,無奇偶校驗(yàn),停止位1,無數(shù)據(jù)流控制。按確定完成設(shè)置。圖2.2.22完成新建超級(jí)終端的設(shè)置以后,可以選擇超級(jí)終端文件菜單中的另存為,把設(shè)置好的超級(jí)終端保存在桌面上,以備后用。 用串口線將PC 機(jī)串口和平臺(tái)UART0 正確連接后,就可以在超級(jí)終端上看到實(shí)驗(yàn)平臺(tái)程序輸出的信息。2) 格式化flash 打開超級(jí)終端,先按住P
28、C機(jī)鍵盤的Back Space鍵,然后啟動(dòng)2410-S,進(jìn)入vivi,按照以下命令格式化flash,重新分區(qū),如下圖2.2.23所示: vivibon part 0 128k 192k 2240k 6336k:m 65536k回車圖2.2.23 格式化flash3) 燒寫vivi 這時(shí)已格式化flash,運(yùn)行的是SDRAM中的vivi。注意如果這時(shí)重啟或斷電會(huì)丟失所有數(shù)據(jù),否則必須用Jtag重新燒寫vivi。viviload flash vivi x 回車。點(diǎn)擊超級(jí)終端任務(wù)欄上“傳送”下拉菜單中的“發(fā)送文件”,選擇協(xié)議為Xmodem,選擇鏡像文件vivi,點(diǎn)擊“發(fā)送”,如圖2.2.24,10秒
29、左右vivi就燒寫到flash里了。圖2.2.44 串口燒寫vivi4)燒寫內(nèi)核映象zImage viviload flash kernel x 回車 出現(xiàn)提示: Ready for downloading using xmodem. Waiting. 點(diǎn)擊超級(jí)終端任務(wù)欄上“傳送”下拉菜單中的“發(fā)送文件”,選擇協(xié)議為Xmodem,選擇鏡像文件zImage (光盤/linux-V5.1/img中),點(diǎn)擊“發(fā)送”,如圖2.2.25,4分鐘左 右zImage傳輸完畢,zImage 先傳輸?shù)絊DRAM中,再把數(shù)據(jù)從SDRAM 復(fù)制到flash 里,請(qǐng)等待這一過程結(jié)束到出現(xiàn)vivi,再燒寫root,否則會(huì)導(dǎo)致燒寫kernel 失敗。 圖 2.2.255)燒寫根文件系統(tǒng)(root) viviload flash root x 回車 出現(xiàn)提示: Ready for downloading using xmodem. Waiting.點(diǎn)擊超級(jí)終端任務(wù)欄上“傳送”下拉菜單中的“發(fā)送文件”,選擇鏡像文件root.cramfs(光盤/linux-V5.1/img)中,協(xié)議為Xmodem,點(diǎn)擊“發(fā)送”,如圖2.2.26,8 分鐘左右root.cramfs 燒寫完畢;圖2.2.26燒寫完后,重啟試驗(yàn)箱。6)網(wǎng)口下載燒寫應(yīng)用程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 一建建筑冬季施工方案
- 地理教學(xué)策略
- 藥物研發(fā)全景
- 全國(guó)導(dǎo)游基礎(chǔ)知識(shí)-全國(guó)導(dǎo)游基礎(chǔ)知識(shí)章節(jié)練習(xí)
- 初級(jí)銀行業(yè)法律法規(guī)與綜合能力-銀行專業(yè)初級(jí)《法律法規(guī)》??荚嚲?
- 初級(jí)公司信貸-初級(jí)銀行從業(yè)資格考試《公司信貸》點(diǎn)睛提分卷4
- 如何寫低保戶申請(qǐng)書
- 社交媒體海量信息的存儲(chǔ)應(yīng)對(duì)措施
- 5.1 觀察物體(同步練習(xí)) 二年級(jí)上冊(cè)數(shù)學(xué)同步課時(shí)練 (含答案)
- 大學(xué)勞動(dòng)委員申請(qǐng)書
- 2024黑龍江公務(wù)員考試【A類、B類、省直、筆試】四套真題及答案
- 四川省自貢市、遂寧市、廣安市等2024-2025學(xué)年高一上學(xué)期期末考試語文試題 含解析
- 2025年中國(guó)高價(jià)HPV疫苗行業(yè)競(jìng)爭(zhēng)格局分析及投資規(guī)劃研究報(bào)告
- 醫(yī)院感染與醫(yī)療器械消毒
- 2025年春新北師大版物理八年級(jí)下冊(cè)課件 第七章 運(yùn)動(dòng)和力 第四節(jié) 同一直線上二力的合成
- 智能客服系統(tǒng)中人工智能技術(shù)的應(yīng)用
- 2025年公司年會(huì)活動(dòng)總結(jié)樣本(3篇)
- 村衛(wèi)生室2025年初工作計(jì)劃
- 派出所校園安全創(chuàng)新
- 飛書項(xiàng)目管理
- 醫(yī)院醫(yī)共體2025年度工作計(jì)劃
評(píng)論
0/150
提交評(píng)論