




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
IAP及其應用以LPC2300為例,講述IAP功能在實際使用過程中的應用方法以及相關解決方案產品應用筆記AN070701概述Boot簡介片內Flash存儲系統(tǒng)數(shù)據(jù)存儲解決方案在線升級解決方案概述Boot簡介片內Flash存儲系統(tǒng)數(shù)據(jù)存儲解決方案在線升級解決方案IAP(In
Appplication
Program),即在應用中編程。顧名思義,就是在系統(tǒng)運行的過程中動態(tài)編程,對程序執(zhí)行代碼的動態(tài)修改。IAP技術應用于嵌入式系統(tǒng)的數(shù)據(jù)存儲和在線升級。例如在程序運行工程中產生4k字節(jié)數(shù)據(jù)表,為了避免占用SRAM空間,用戶可以使用IAP技術將此表寫入片內Flash。又如用戶在開發(fā)完一個系統(tǒng)后要增加新的軟件功能,可以使用IAP技術在線升級程序,避免重新拆裝設備。概述概述Boot簡介片內Flash存儲系統(tǒng)數(shù)據(jù)存儲解決方案在線升級解決方案LPC2300系列處理器在出廠時,由廠家在片內固化了一段Boot代碼。Boot裝載程序控制芯片復位后的初始化操作,并提供對Flash編程的方法。
Boot程序可以對芯片進行擦除、編程。在系統(tǒng)編程(ISP)在應用編程(IAP)Boot簡介Boot重映射Boot區(qū)裝位載于程地序址提0供x了00I0SP7和E0IA0P0編~程0x接00口0,7
F可FF以F處實?,F(xiàn)不對過片,內芯Fla片sh上存電儲以器后的,編會程首。先對Boot區(qū)執(zhí)行一次重映射,映射到片內存儲器空間的最高處,即接近2G(0x8000
0000)的地方。0x0000
003F0x0000
00002.0GB1.0GB8KB
Boot
Block
重映射片內靜態(tài)RAM8KB
Boot
Block片內Flash異常向量表0.0GB0x4000
00000x0007
FFFF0x0007
E0000x7FFF
FFFF0x7FFF
E000地址重映射ARM7處理器核外設控制器RAMBootBlockFLASHJTAGUART0串口在系統(tǒng)編程(ISP)在系統(tǒng)編程是通過Boot裝載程序和UART0對片內Flash存儲器進行擦除/編程的方法。UART0ARM7處理器核CPU運行
Boot代碼通過ISP對Flash編程ARM7處理器核外設控制器RAMBootBlockFLASHJTAGUART0在應用編程(IAP)在應用編程是用戶的應用代碼對片內Flash存儲器進行擦除/編程的方法。ARM7處理器核CPU運行
Boot代碼通過各種途徑獲取用戶代碼通過IAP對Flash編程在應用編程(IAP)IAP程序是Thumb代碼,位于地址0x7FFFFFF0。在ARM系統(tǒng)中實現(xiàn)狀態(tài)轉換的指令是“BXAddr”,目標地址Addr的最低位(bit0)僅來確定最終狀態(tài),實際的“目的地址=Addr
&
0xFFFFFFFE”。在調用IAP函數(shù)時,不僅要實現(xiàn)跳轉而且還…………Thumb代碼…0x…7FFF
FFF1
&
0x7FFF
FFFEBX
0x7FFF
FFF1IAP程序入口Bit0=1使處理器切換到
Thumb狀態(tài)要注意完:此成為狀示意態(tài)代碼轉,換。實際編程中請用LDR
R0,=0x7FFFFAFFR1M代碼BAXRMR狀0態(tài)代字碼對替齊代。0x0000
40000x0000
40040x7FFF
FFF00x7FFF
FFF2Thumb狀態(tài)半字對齊ARM寄存器 命令參數(shù)表 命令結果表命令代碼參數(shù)1……狀態(tài)代碼結果1……結果nR0R1參數(shù)n參數(shù)表最大數(shù)目為5在應用編程(IAP)在調用IAP函數(shù)時,寄存器R0中的字指針指向存儲器(RAM)中包含的命令代碼和參數(shù),它作為函數(shù)的入口參數(shù),函數(shù)執(zhí)行的返回值保存在寄存器R1中的字指針指向存儲器(RAM)中,包含狀態(tài)代碼和結果。結果表最大數(shù)目為2#define
IAP_LOCATIONtypedef void
(*IAP)
(unsigned
int
[
]
,
unsigned
int
[
]);……IAP
iap_entry;unsigned
long
command[5];unsigned
long
result[2];iap_entry
=
(IAP)
IAP_LOCATION;iap_entry
(command
,
result);在應用編程(IAP)執(zhí)行跳轉指令時,如果“目的地址”的bit0=
1,表示處理器需要進行狀態(tài)切換,由ARM狀態(tài)切換到Thumb狀態(tài),Thumb代碼是“半字”對齊格式,即地址&0xFFFFFFFE。因此,雖然此處跳轉目的地址=0x7FFFFFF1,實際上跳轉到地址
0x7FFFFFF0,同時進行切換到Thumb狀態(tài)。0x7FFFFFF1
IAP程序入口調用IAP定義函數(shù)類型指針定義函數(shù)指針I(yè)AP命令表IAP返回值設置函數(shù)指針在應用編程(IAP)由于IAP是Thumb代碼,因此,需要在ADS編譯選項中,選中ARM/ThumbInterworking選型,這樣ARM和Thumb指令就可以混合編譯。在應用編程(IAP)IAP程序會使用片內RAM空間的頂部32個字節(jié),因此,在支持IAP的場合,用戶程序應該避免使用這部分空間。IAP代碼使用8KB
Boot
Block
重映射頂部32字節(jié)8KB
片內靜態(tài)RAM片內Flash異常向量表0x0000
003F0x0000
00000x4000
1FFF0x4000
1FE00x4000
00000x7FFF
FFFF0x7FFF
E000LPC23648KB
Boot
Block
重映射頂部32字節(jié)32KB
片內靜態(tài)RAM片內Flash異常向量表0x0000
003F0x0000
00000x4000
7FFF0x4000
7FE00x4000
00000x7FFF
FFFF0x7FFF
E000LPC2366/68/78IAP代碼使用小知識:當前程序狀態(tài)寄存器ARM內核包含1個當前程序狀態(tài)寄存器(CPSR)。CPSR反映當前處理器的狀態(tài),其包含:4個條件代碼標志(負標志N、零標志Z、進位標志
C和溢出標志V);2個中斷禁止位(IRQ禁止與FIQ禁止);5個對當前處理器模式進行編碼的位(M[4:0]);1個用于指示當前執(zhí)行指令的位(ARM指令還是
Thumb指令)。程序狀態(tài)寄存器的格式條件代碼標志 保留NZCV——IM0M1M2M3M4TF—.
.
.31
30
29
28
27
268
7
6
5
4
3
2
1
0控制位溢出標志進位或借位擴展零負或小于模式位狀態(tài)位
FIQ禁止IRQ禁止NZCVIM0M1M2M3M4TF條件代碼標志各標志位的含義如下:負標志N:運算結果的第31位值,記錄標志設置操作的結果;零標志Z:如果標志設置的操作為0,則置位;進位標志C:記錄無符號加法溢出,減法無借位,循環(huán)移位;溢出標志V:記錄標志設置操作的有符號溢出??刂莆?31、處中理斷器禁模狀止式態(tài)控位制MT位;0I和~FM;4。;行。?當控制位I置位時,IRQ中斷被禁止;?當控制位T置位時,處理器正在Thumb狀態(tài)下?當控制位F置位時,F(xiàn)IQ中斷被禁止。?當控制位T清零時,處理器正在ARM狀態(tài)下運警告:絕對不要強制改變CPSR寄存器中的控制
T。如果這樣做,處理器將進入一個無法預測的態(tài)。位
CPSR,
SPSR_abt CPSR,
SPSR_abt11011
未定義
R0~R7,
SP_und,
LR_und,
PC, R0~R12,
R13_und,
R14_und,
PC,狀
CPSR,
SPSR_und CPSR,
SPSR_und11111
系統(tǒng)
R0~R7,
SP,
LR,
PC, R0~R14,
PC,CPSR
CPSRM[4:0]模式可見的Thumb狀態(tài)寄存器可見的ARM狀態(tài)寄存器10000用戶R0~R7,
SP,
LR,
PC,
CPSRR0~R14,
PC,
CPSR10001快速中斷R0~R7,
SP_fiq,
LR_fiq,
PC,CPSR,
SPSR_fiqR0~R7,R8_fiq~R14_fiq,PC,
運行CPSR,
SPSR_fiq10010中斷R0~R7,
SP_irq,
LR_irq,
PC,CPSR,
SPSR_fiqR0~R12,
R13_irq,
R14_irq,
PC,CPSR,
SPSR_irq10011管理R0~R7,
SP_svc,
LR_svc,
PC,CPSR,
SPSR_svcR0~R12,
R13_svc,
R14_svc,
PC,CPSR,
SPSR_svc10111中止R0~R7,
SP_abt,
LR_abt,
PC,R0~R12,
R13_abt,
R14_abt,
PC,注意:不是所有模式位的組合都定義了有效的處理器模式,如果將非法值寫入M[4:0]中,處理器將進入一個無法恢復的模式。保留位CPSR中的保留位被保留將來使用。當改變
CPSR標志和控制位時,請確認沒有改變這些保留位。另外,請確保您的程序不依賴于包含特定值的保留位,因為將來的處理器可能會將這些位設置為1或者0。在應用編程(IAP)用戶可以在啟動代InitStack函數(shù)內調整各……;設置系統(tǒng)模式堆棧MSR CPSR_c,
#0xdfLDR
SP,
=StackUsr
–
32MOV PC,
R0避免使用片內RAM的頂部32個字節(jié)……InitS…ta…ck7
6
5
4
3
2
1I
F
T M4
M3
M2
M碼Startup.s文件中的個模式的堆棧空間位置。01
M0……1
1
0
1
1
1
1
1……7
6
5
4
3
2
1
0系統(tǒng)模式
ARM狀態(tài)
IRQ禁止
FIQ禁止在應用編程(IAP)IAP的命令表ISP命令命令代碼準備編程扇區(qū)50將RAM內容復制到Flash51擦除扇區(qū)52扇區(qū)查空53讀器件ID54讀boot代碼版本55比較56IAP各命令返回代碼及意義表返回代碼符號描述0CMD_SUCCESS命令被成功執(zhí)行。1INVALID_COMMAND無效命令。2SRC_ADDR_ERROR源地址沒有以字為邊界。3DST_ADDR_ERROR目標地址的邊界錯誤。4SRC_ADDR_NOT_MAPPED源地址沒有位于存儲器映射中。計數(shù)值必須考慮可用性。5DST_ADDR_NOT_MAPPED目標地址沒有位于到存儲器映射中。計數(shù)值必須考慮到可用性。6COUNT_ERROR字節(jié)計數(shù)值不是4的倍數(shù)或是一個非法值。7INVALID_SECTOR扇區(qū)號無效。8SECTOR_NOT_BLANK扇區(qū)非空。9SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION為寫操作準備扇區(qū)命令未執(zhí)行。10COMPARE_ERROR源和目標數(shù)據(jù)不相等。11BUSYFlash編程硬件接口忙。概述Boot簡介片內Flash存儲系統(tǒng)數(shù)據(jù)存儲解決方案在線升級解決方案BootBlock不占用片內
Flash(LPC2364/66)用戶Flash(128/256KB)0x0000
0000存儲器空間Boot
Block(8KB)用戶Flash(128/256KB)0x0007
FFFF0x0007
E000在利用IAP代碼來操作片內Flash時,必須熟悉片內Flash的扇區(qū)分布。片內Flash的操作是以“扇區(qū)”為單位進行的,每個“扇區(qū)”的大小不定。由于IAP代碼位于Boot區(qū)內,所以IAP命令不允許對Boot扇區(qū)執(zhí)行寫/擦除操作。內512KBFlash用戶FlashBoot0x0007
FFFF0x0007
E000扇區(qū)0(4K)0x0000
0000
0x0000
0000(500x40K0B00)7000扇區(qū)7(4K)……扇區(qū)8(32K)片扇區(qū)10(32K)扇區(qū)14(32K)…………0x0003
80000x0003
FFFF存儲0器x0空00間1
FFFF扇區(qū)分布(LPC2368/78)片內256KBFlashB0lxo0c0k0(18K8B00)
0片內128KB0x00F0l0as8h000片內Flash系統(tǒng)對于LPC2368/78來說,Boot區(qū)位于512kBFlash的頂部,因此在LPC2368/78器件中,只有
504kB
Flash可供用戶使用。用戶Flash(504KB)(LPC2368/78)存儲器空間Boot
Block(8KB)用戶Flash(504KB)0x0000
00000x0007
FFFF0x0007
E000扇區(qū)27(4K)……扇區(qū)22(4K)扇區(qū)21(32K)……扇區(qū)8(32K)扇區(qū)7(4K)……扇區(qū)0(4K)0x00070x0007DFFFD0000x000780000x000700000x000080000x000070000x00000000扇區(qū)分布片內Flash系統(tǒng)概述Boot簡介片內Flash存儲系統(tǒng)數(shù)據(jù)存儲解決方案在線升級解決方案數(shù)據(jù)存儲解決方案系統(tǒng)概述通過IAP,用戶可以使用片內Flash作為非易失性數(shù)據(jù)存儲器,存儲一些設備的配置信息。這樣不僅可以節(jié)約成本,而且還可以減小線路板的面積。LPC2364FlashFlashFlash系統(tǒng)概述利用IAP將Flash作為數(shù)據(jù)存儲器時,用戶需要控制自身代碼量的大小及代碼定位。絕對不能夠出現(xiàn)Flash
數(shù)據(jù)區(qū)和Flash代碼區(qū)重疊的現(xiàn)象。因為在利用IAP向片內Flash存儲器寫入數(shù)據(jù)時,需要對數(shù)據(jù)扇區(qū)進行擦除。如果數(shù)據(jù)區(qū)和代碼區(qū)重合,就有可能會破壞系統(tǒng)的代
碼空間,造成系統(tǒng)死機或崩潰。用途扇區(qū)大小代碼空間0~628kB數(shù)據(jù)空間74kB注通意過:IAP任向何片F(xiàn)內lasFhl都ash是的有扇壽區(qū)命7的寫,入如51果2個對字片節(jié)內的Fl數(shù)as據(jù)h
。的操作過于頻繁,就會對其造成損壞,LPC2300的
Flash擦除/寫入次數(shù)為10萬次。系統(tǒng)概述使用IAP將SRAM中的數(shù)據(jù)編程到Flash時,源數(shù)據(jù)區(qū)只能夠使用片內局部總線上的SRAM,不能使用通用
USB
SRAM和以太網SRAM。片內SRAM片內FlashARM7TDMIAHB橋AHB橋16kSRAM8k 4k
SRAMSRAM
USB控制器局部總線AHB1AHB2小知識:存儲數(shù)據(jù)的對齊方式如果一個數(shù)據(jù)是從偶地址開始的連續(xù)存儲,那么它就是半字對齊,否則就是非半字對齊;如果一個數(shù)據(jù)是以能被4整除的地址開始的連續(xù)存儲,那么它就是字對齊,否則就是非字對齊。方式半字對齊字對齊…………地址0x40020x40040x40040x4008…………特征Bit0=0其他位為任意值Bit1=0,Bit0=0其他位為任意值片內Flash編程步驟確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗數(shù)據(jù)(可選)擦除操作之前必須先選擇扇區(qū),一次可以選擇多個扇區(qū)使用IAP之前需要定義的一些常量寫入數(shù)據(jù)之前要先擦除扇區(qū),已擦除的可不必重復擦IAP提供數(shù)據(jù)校驗手段,用戶不必自己動手校驗數(shù)據(jù)編程操作之前必須先選擇扇區(qū),一次可以選擇多個扇區(qū)字對齊的SRAM數(shù)據(jù)區(qū)數(shù)據(jù)寫入到256字節(jié)對齊的Flash中,一次寫入256、512、1024或4096字節(jié)。片內Flash編程步驟通過在使用IAP代碼之前,需要定義一些常量,如系統(tǒng)時鐘、IAP函數(shù)入口、IAP入口緩沖區(qū)和出口緩沖區(qū)等。確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗數(shù)據(jù)(可選)#define#defineuint32paramin[8];uint32paramout[8];IAP_FCCLK
48000IAP_ENTER_A定DR義C0CxL7KFF值F大FF小F,1IAP入口參數(shù)緩沖區(qū)IAP出口參數(shù)緩沖區(qū)I單AP位入為口K地Hz址定義確定系統(tǒng)參數(shù)片內Flash編程步驟對某一個扇區(qū)執(zhí)行擦除、寫入等操作之前,必須先選擇該扇區(qū)。但也可以一次選擇多個扇區(qū)。確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗數(shù)據(jù)(可選)uint32
SelSector(uint8
sec1,uint8
sec2){paramin[0]
=
IAP_SELECTOR;paramin[1]=sec1;paramin[2]=sec2;(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);return(paramout[0]);}設置扇起區(qū)始選扇擇區(qū)命令字設置終止扇區(qū)選擇扇區(qū)(可選)返回操調作用狀IA態(tài)P碼服務程序片內Flash編程步驟LPC2300片內Flash在寫入數(shù)據(jù)前需要執(zhí)行擦除操作。如果目標區(qū)域已經被擦除,那么就不必重復擦除,可直
接寫入數(shù)據(jù)。擦除操作一次可以擦除多個扇區(qū)。確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗數(shù)據(jù)(可選)uint32
EraseSector(uint32
sec1,uint32
sec2){paramin[0]
=
IAP_ERASESECTOR;paramin[1]=sec1;paramin[2]=sec2;paramin[3]=IAP_FCCLK;(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);return(paramout[0]);}設置扇起區(qū)始擦扇除區(qū)命令字設置終止扇區(qū)擦除扇區(qū)(可選)返回操調作用狀IA態(tài)P碼服務程序片內Flash編程步驟執(zhí)行完以上幾步后,就可以編程Flash了。執(zhí)行編程扇區(qū)的操作時,IAP函數(shù)會將RAM中的數(shù)據(jù)拷貝到Flash中。確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗數(shù)據(jù)(可選)uint32
RamToFlash(uint32
dst,
uint32
src,
uint32
no){paramin[0]
=
IAP_RAMTOFLASH;paramin[3]=no;(*(void(*)())IAP_ENTER_ADR)(paramin,paramout);return(paramout[0]);}設置扇區(qū)編程命令字paramin[1]=dst;
設置Flash目標地址paramin[2]=src;設置SRAM源地址編程扇區(qū)返回操調作用狀IA態(tài)P碼服務程序設置復制字節(jié)數(shù)paramin[4]=IAP_FCCLK2;
56/512/1024/4096片內Flash編程步驟IAP代碼還為用戶提供了一個數(shù)據(jù)校驗的手段,這樣用戶就可以不必自己動手來校驗寫入Flash中的數(shù)據(jù)是否正確。確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗數(shù)據(jù)(可選)uint32
Compare(uint32
dst,
uint32
src,
uint32
no){paramin[0]
=
IAP_COMPARE;paramin[1]=dst;paramin[2]=src;paramin[3]=no;return(paramout[0]);}設置數(shù)目據(jù)標比地較址命令字設置源地址校驗數(shù)據(jù)(可選)返回操調作用狀IA態(tài)P碼服務程序比較字節(jié)個數(shù)(*(void(*)())IAP_ENTER_A必D須R)能(p被ar4a整mi除n,paramout);}SelSector(7,7);EraseSector(7,7);SelSector(7,7);RamToFlash(DestAddr,
(uint32)SendData,
512);while(1);}函數(shù)主體向扇區(qū)7寫入512個字節(jié)的數(shù)據(jù),扇區(qū)7可以作為一個E2PROM來使用,如存儲一些系統(tǒng)的配置信息。#define DestAddr
0x00007000
扇區(qū)7的起始地址intmain(void){__align(4)
uint8
SendData[512];uint32
i;
以字對齊定義變量區(qū)for(i
=
0;
i
<
512;
i++){SendData[i]=i;
初始化變量區(qū)數(shù)據(jù)選擇扇區(qū)7擦除扇區(qū)7選擇扇區(qū)7寫入數(shù)據(jù)到Flash編程后的Flash區(qū)域編程后的Flash區(qū)域擦除后的Flash區(qū)域擦除后的Flash區(qū)域概述Boot簡介片內Flash存儲系統(tǒng)數(shù)據(jù)存儲解決方案在線升級解決方案在線升級解決方案系統(tǒng)概述“系在統(tǒng)線通升過級串”口實接際收上升是級Fl代as碼h數(shù),據(jù)然存后儲調的用一IA個P函應數(shù)用實特
例現(xiàn)。在系線統(tǒng)升開級發(fā)。完為畢了后實,現(xiàn)在線用升過級程,中本,系如統(tǒng)果將需芯要片增的加片
內部F分la功sh能重,新那分么區(qū)為:了避免重新拆裝設備,可以借助BLOooWt代區(qū)碼和區(qū)HI:G又H區(qū)叫:固用件戶區(qū)代碼分為兩個區(qū)
LOW“在線程升序級標”志方區(qū)式:。標記當前用戶,程存序放運系行統(tǒng)的區(qū),程序B區(qū)標目o志和o前t區(qū)HL,oI的Ga在dH首e線區(qū)r地,升,址可級當為完是程:成很序0代多x位0碼系于0升0統(tǒng)L0O級都4W,0必0區(qū)首需0時。地的,對址一可于位個以這于功對個能區(qū),間,對于0H僅LxIP僅G0C0H使203區(qū)0用0進0了0來行0前說0升4;,個級利字。用節(jié)反I,之AP用,函來如數(shù)保果即存程可當序實前位現(xiàn)用于在戶H線I代G升H碼級區(qū)區(qū)。,用戶可的程首以序地對接L址收O。W新如區(qū)的程進代序行碼標升,志級然=。后0L調Ox0用W0I0區(qū)A0P的函80首數(shù)0地0將,址新則為的當:代前碼程編程0序到x運0F0l行a0s0h在扇8L0O區(qū)0W0中,區(qū),H;實IG如現(xiàn)H程在區(qū)序線的標升首志級地。=址為0x:0000x100000010,0則0當00前,程每序個運用行戶在代H碼IG區(qū)H的區(qū)容;量如為程3序2k標B;志為其它值,則當前程序運行在固件區(qū)域。ARM7處理器核RAMFLASHUART0串口P0.6升級HIGH區(qū)代碼UART0通過IAP對Flash編程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 休閑娛樂場所拆舊協(xié)議
- 交通建設項目可行性研究報告編制辦法
- 農業(yè)行業(yè)農產品溯源與農技服務系統(tǒng)方案
- 物聯(lián)網智能家居系統(tǒng)
- 咖啡廳品牌傳播與推廣預案
- 太陽能光伏地面電站
- 傳媒行業(yè)融媒體運營與內容創(chuàng)新方案
- 育嬰師復習測試附答案
- 車聯(lián)網技術在智能交通中的應用與實踐
- 中級養(yǎng)老護理復習測試卷含答案(一)
- 無人機快遞技術-無人機的操作
- 智慧工地及智慧工地整體方案
- 工作指導手冊
- 電梯重大活動應急預案
- 中國城市區(qū)域劃分表(超實用)
- 人教版高中地理必修一 (海水的性質)課件教學
- 北京十大景點英文介紹課件
- 2019北師大版五年級數(shù)學下冊教材分析講義課件
- 更換備胎課件
- 2、3的加法課件-學前班用
- 起重機械安全風險管控清單模板
評論
0/150
提交評論