版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
IAP及其應(yīng)用以LPC2300為例,講述IAP功能在實(shí)際使用過(guò)程中的應(yīng)用方法以及相關(guān)解決方案產(chǎn)品應(yīng)用筆記AN070701概述Boot簡(jiǎn)介片內(nèi)Flash存儲(chǔ)系統(tǒng)數(shù)據(jù)存儲(chǔ)解決方案在線升級(jí)解決方案概述Boot簡(jiǎn)介片內(nèi)Flash存儲(chǔ)系統(tǒng)數(shù)據(jù)存儲(chǔ)解決方案在線升級(jí)解決方案IAP(In
Appplication
Program),即在應(yīng)用中編程。顧名思義,就是在系統(tǒng)運(yùn)行的過(guò)程中動(dòng)態(tài)編程,對(duì)程序執(zhí)行代碼的動(dòng)態(tài)修改。IAP技術(shù)應(yīng)用于嵌入式系統(tǒng)的數(shù)據(jù)存儲(chǔ)和在線升級(jí)。例如在程序運(yùn)行工程中產(chǎn)生4k字節(jié)數(shù)據(jù)表,為了避免占用SRAM空間,用戶可以使用IAP技術(shù)將此表寫(xiě)入片內(nèi)Flash。又如用戶在開(kāi)發(fā)完一個(gè)系統(tǒng)后要增加新的軟件功能,可以使用IAP技術(shù)在線升級(jí)程序,避免重新拆裝設(shè)備。概述概述Boot簡(jiǎn)介片內(nèi)Flash存儲(chǔ)系統(tǒng)數(shù)據(jù)存儲(chǔ)解決方案在線升級(jí)解決方案LPC2300系列處理器在出廠時(shí),由廠家在片內(nèi)固化了一段Boot代碼。Boot裝載程序控制芯片復(fù)位后的初始化操作,并提供對(duì)Flash編程的方法。
Boot程序可以對(duì)芯片進(jìn)行擦除、編程。在系統(tǒng)編程(ISP)在應(yīng)用編程(IAP)Boot簡(jiǎn)介Boot重映射Boot區(qū)裝位載于程地序址提0供x了00I0SP7和E0IA0P0編~程0x接00口0,7
F可FF以F處實(shí)?,F(xiàn)不對(duì)過(guò)片,內(nèi)芯Fla片sh上存電儲(chǔ)以器后的,編會(huì)程首。先對(duì)Boot區(qū)執(zhí)行一次重映射,映射到片內(nèi)存儲(chǔ)器空間的最高處,即接近2G(0x8000
0000)的地方。0x0000
003F0x0000
00002.0GB1.0GB8KB
Boot
Block
重映射片內(nèi)靜態(tài)RAM8KB
Boot
Block片內(nèi)Flash異常向量表0.0GB0x4000
00000x0007
FFFF0x0007
E0000x7FFF
FFFF0x7FFF
E000地址重映射ARM7處理器核外設(shè)控制器RAMBootBlockFLASHJTAGUART0串口在系統(tǒng)編程(ISP)在系統(tǒng)編程是通過(guò)Boot裝載程序和UART0對(duì)片內(nèi)Flash存儲(chǔ)器進(jìn)行擦除/編程的方法。UART0ARM7處理器核CPU運(yùn)行
Boot代碼通過(guò)ISP對(duì)Flash編程ARM7處理器核外設(shè)控制器RAMBootBlockFLASHJTAGUART0在應(yīng)用編程(IAP)在應(yīng)用編程是用戶的應(yīng)用代碼對(duì)片內(nèi)Flash存儲(chǔ)器進(jìn)行擦除/編程的方法。ARM7處理器核CPU運(yùn)行
Boot代碼通過(guò)各種途徑獲取用戶代碼通過(guò)IAP對(duì)Flash編程在應(yīng)用編程(IAP)IAP程序是Thumb代碼,位于地址0x7FFFFFF0。在ARM系統(tǒng)中實(shí)現(xiàn)狀態(tài)轉(zhuǎn)換的指令是“BXAddr”,目標(biāo)地址Addr的最低位(bit0)僅來(lái)確定最終狀態(tài),實(shí)際的“目的地址=Addr
&
0xFFFFFFFE”。在調(diào)用IAP函數(shù)時(shí),不僅要實(shí)現(xiàn)跳轉(zhuǎn)而且還…………Thumb代碼…0x…7FFF
FFF1
&
0x7FFF
FFFEBX
0x7FFF
FFF1IAP程序入口Bit0=1使處理器切換到
Thumb狀態(tài)要注意完:此成為狀示意態(tài)代碼轉(zhuǎn),換。實(shí)際編程中請(qǐng)用LDR
R0,=0x7FFFFAFFR1M代碼BAXRMR狀0態(tài)代字碼對(duì)替齊代。0x0000
40000x0000
40040x7FFF
FFF00x7FFF
FFF2Thumb狀態(tài)半字對(duì)齊ARM寄存器 命令參數(shù)表 命令結(jié)果表命令代碼參數(shù)1……狀態(tài)代碼結(jié)果1……結(jié)果nR0R1參數(shù)n參數(shù)表最大數(shù)目為5在應(yīng)用編程(IAP)在調(diào)用IAP函數(shù)時(shí),寄存器R0中的字指針指向存儲(chǔ)器(RAM)中包含的命令代碼和參數(shù),它作為函數(shù)的入口參數(shù),函數(shù)執(zhí)行的返回值保存在寄存器R1中的字指針指向存儲(chǔ)器(RAM)中,包含狀態(tài)代碼和結(jié)果。結(jié)果表最大數(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);在應(yīng)用編程(IAP)執(zhí)行跳轉(zhuǎn)指令時(shí),如果“目的地址”的bit0=
1,表示處理器需要進(jìn)行狀態(tài)切換,由ARM狀態(tài)切換到Thumb狀態(tài),Thumb代碼是“半字”對(duì)齊格式,即地址&0xFFFFFFFE。因此,雖然此處跳轉(zhuǎn)目的地址=0x7FFFFFF1,實(shí)際上跳轉(zhuǎn)到地址
0x7FFFFFF0,同時(shí)進(jìn)行切換到Thumb狀態(tài)。0x7FFFFFF1
IAP程序入口調(diào)用IAP定義函數(shù)類(lèi)型指針定義函數(shù)指針I(yè)AP命令表IAP返回值設(shè)置函數(shù)指針在應(yīng)用編程(IAP)由于IAP是Thumb代碼,因此,需要在ADS編譯選項(xiàng)中,選中ARM/ThumbInterworking選型,這樣ARM和Thumb指令就可以混合編譯。在應(yīng)用編程(IAP)IAP程序會(huì)使用片內(nèi)RAM空間的頂部32個(gè)字節(jié),因此,在支持IAP的場(chǎng)合,用戶程序應(yīng)該避免使用這部分空間。IAP代碼使用8KB
Boot
Block
重映射頂部32字節(jié)8KB
片內(nèi)靜態(tài)RAM片內(nèi)Flash異常向量表0x0000
003F0x0000
00000x4000
1FFF0x4000
1FE00x4000
00000x7FFF
FFFF0x7FFF
E000LPC23648KB
Boot
Block
重映射頂部32字節(jié)32KB
片內(nèi)靜態(tài)RAM片內(nèi)Flash異常向量表0x0000
003F0x0000
00000x4000
7FFF0x4000
7FE00x4000
00000x7FFF
FFFF0x7FFF
E000LPC2366/68/78IAP代碼使用小知識(shí):當(dāng)前程序狀態(tài)寄存器ARM內(nèi)核包含1個(gè)當(dāng)前程序狀態(tài)寄存器(CPSR)。CPSR反映當(dāng)前處理器的狀態(tài),其包含:4個(gè)條件代碼標(biāo)志(負(fù)標(biāo)志N、零標(biāo)志Z、進(jìn)位標(biāo)志
C和溢出標(biāo)志V);2個(gè)中斷禁止位(IRQ禁止與FIQ禁止);5個(gè)對(duì)當(dāng)前處理器模式進(jìn)行編碼的位(M[4:0]);1個(gè)用于指示當(dāng)前執(zhí)行指令的位(ARM指令還是
Thumb指令)。程序狀態(tài)寄存器的格式條件代碼標(biāo)志 保留NZCV——IM0M1M2M3M4TF—.
.
.31
30
29
28
27
268
7
6
5
4
3
2
1
0控制位溢出標(biāo)志進(jìn)位或借位擴(kuò)展零負(fù)或小于模式位狀態(tài)位
FIQ禁止IRQ禁止NZCVIM0M1M2M3M4TF條件代碼標(biāo)志各標(biāo)志位的含義如下:負(fù)標(biāo)志N:運(yùn)算結(jié)果的第31位值,記錄標(biāo)志設(shè)置操作的結(jié)果;零標(biāo)志Z:如果標(biāo)志設(shè)置的操作為0,則置位;進(jìn)位標(biāo)志C:記錄無(wú)符號(hào)加法溢出,減法無(wú)借位,循環(huán)移位;溢出標(biāo)志V:記錄標(biāo)志設(shè)置操作的有符號(hào)溢出??刂莆?31、處中理斷器禁模狀止式態(tài)控位制MT位;0I和~FM;4。;行。?當(dāng)控制位I置位時(shí),IRQ中斷被禁止;?當(dāng)控制位T置位時(shí),處理器正在Thumb狀態(tài)下?當(dāng)控制位F置位時(shí),F(xiàn)IQ中斷被禁止。?當(dāng)控制位T清零時(shí),處理器正在ARM狀態(tài)下運(yùn)警告:絕對(duì)不要強(qiáng)制改變CPSR寄存器中的控制
T。如果這樣做,處理器將進(jìn)入一個(gè)無(wú)法預(yù)測(cè)的態(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]模式可見(jiàn)的Thumb狀態(tài)寄存器可見(jiàn)的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,
運(yùn)行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,注意:不是所有模式位的組合都定義了有效的處理器模式,如果將非法值寫(xiě)入M[4:0]中,處理器將進(jìn)入一個(gè)無(wú)法恢復(fù)的模式。保留位CPSR中的保留位被保留將來(lái)使用。當(dāng)改變
CPSR標(biāo)志和控制位時(shí),請(qǐng)確認(rèn)沒(méi)有改變這些保留位。另外,請(qǐng)確保您的程序不依賴于包含特定值的保留位,因?yàn)閷?lái)的處理器可能會(huì)將這些位設(shè)置為1或者0。在應(yīng)用編程(IAP)用戶可以在啟動(dòng)代InitStack函數(shù)內(nèi)調(diào)整各……;設(shè)置系統(tǒng)模式堆棧MSR CPSR_c,
#0xdfLDR
SP,
=StackUsr
–
32MOV PC,
R0避免使用片內(nèi)RAM的頂部32個(gè)字節(jié)……InitS…ta…ck7
6
5
4
3
2
1I
F
T M4
M3
M2
M碼Startup.s文件中的個(gè)模式的堆??臻g位置。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禁止在應(yīng)用編程(IAP)IAP的命令表ISP命令命令代碼準(zhǔn)備編程扇區(qū)50將RAM內(nèi)容復(fù)制到Flash51擦除扇區(qū)52扇區(qū)查空53讀器件ID54讀boot代碼版本55比較56IAP各命令返回代碼及意義表返回代碼符號(hào)描述0CMD_SUCCESS命令被成功執(zhí)行。1INVALID_COMMAND無(wú)效命令。2SRC_ADDR_ERROR源地址沒(méi)有以字為邊界。3DST_ADDR_ERROR目標(biāo)地址的邊界錯(cuò)誤。4SRC_ADDR_NOT_MAPPED源地址沒(méi)有位于存儲(chǔ)器映射中。計(jì)數(shù)值必須考慮可用性。5DST_ADDR_NOT_MAPPED目標(biāo)地址沒(méi)有位于到存儲(chǔ)器映射中。計(jì)數(shù)值必須考慮到可用性。6COUNT_ERROR字節(jié)計(jì)數(shù)值不是4的倍數(shù)或是一個(gè)非法值。7INVALID_SECTOR扇區(qū)號(hào)無(wú)效。8SECTOR_NOT_BLANK扇區(qū)非空。9SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION為寫(xiě)操作準(zhǔn)備扇區(qū)命令未執(zhí)行。10COMPARE_ERROR源和目標(biāo)數(shù)據(jù)不相等。11BUSYFlash編程硬件接口忙。概述Boot簡(jiǎn)介片內(nèi)Flash存儲(chǔ)系統(tǒng)數(shù)據(jù)存儲(chǔ)解決方案在線升級(jí)解決方案BootBlock不占用片內(nèi)
Flash(LPC2364/66)用戶Flash(128/256KB)0x0000
0000存儲(chǔ)器空間Boot
Block(8KB)用戶Flash(128/256KB)0x0007
FFFF0x0007
E000在利用IAP代碼來(lái)操作片內(nèi)Flash時(shí),必須熟悉片內(nèi)Flash的扇區(qū)分布。片內(nèi)Flash的操作是以“扇區(qū)”為單位進(jìn)行的,每個(gè)“扇區(qū)”的大小不定。由于IAP代碼位于Boot區(qū)內(nèi),所以IAP命令不允許對(duì)Boot扇區(qū)執(zhí)行寫(xiě)/擦除操作。內(nèi)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存儲(chǔ)0器x0空00間1
FFFF扇區(qū)分布(LPC2368/78)片內(nèi)256KBFlashB0lxo0c0k0(18K8B00)
0片內(nèi)128KB0x00F0l0as8h000片內(nèi)Flash系統(tǒng)對(duì)于LPC2368/78來(lái)說(shuō),Boot區(qū)位于512kBFlash的頂部,因此在LPC2368/78器件中,只有
504kB
Flash可供用戶使用。用戶Flash(504KB)(LPC2368/78)存儲(chǔ)器空間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ū)分布片內(nèi)Flash系統(tǒng)概述Boot簡(jiǎn)介片內(nèi)Flash存儲(chǔ)系統(tǒng)數(shù)據(jù)存儲(chǔ)解決方案在線升級(jí)解決方案數(shù)據(jù)存儲(chǔ)解決方案系統(tǒng)概述通過(guò)IAP,用戶可以使用片內(nèi)Flash作為非易失性數(shù)據(jù)存儲(chǔ)器,存儲(chǔ)一些設(shè)備的配置信息。這樣不僅可以節(jié)約成本,而且還可以減小線路板的面積。LPC2364FlashFlashFlash系統(tǒng)概述利用IAP將Flash作為數(shù)據(jù)存儲(chǔ)器時(shí),用戶需要控制自身代碼量的大小及代碼定位。絕對(duì)不能夠出現(xiàn)Flash
數(shù)據(jù)區(qū)和Flash代碼區(qū)重疊的現(xiàn)象。因?yàn)樵诶肐AP向片內(nèi)Flash存儲(chǔ)器寫(xiě)入數(shù)據(jù)時(shí),需要對(duì)數(shù)據(jù)扇區(qū)進(jìn)行擦除。如果數(shù)據(jù)區(qū)和代碼區(qū)重合,就有可能會(huì)破壞系統(tǒng)的代
碼空間,造成系統(tǒng)死機(jī)或崩潰。用途扇區(qū)大小代碼空間0~628kB數(shù)據(jù)空間74kB注通意過(guò):IAP任向何片F(xiàn)內(nèi)lasFhl都ash是的有扇壽區(qū)命7的寫(xiě),入如51果2個(gè)對(duì)字片節(jié)內(nèi)的Fl數(shù)as據(jù)h
。的操作過(guò)于頻繁,就會(huì)對(duì)其造成損壞,LPC2300的
Flash擦除/寫(xiě)入次數(shù)為10萬(wàn)次。系統(tǒng)概述使用IAP將SRAM中的數(shù)據(jù)編程到Flash時(shí),源數(shù)據(jù)區(qū)只能夠使用片內(nèi)局部總線上的SRAM,不能使用通用
USB
SRAM和以太網(wǎng)SRAM。片內(nèi)SRAM片內(nèi)FlashARM7TDMIAHB橋AHB橋16kSRAM8k 4k
SRAMSRAM
USB控制器局部總線AHB1AHB2小知識(shí):存儲(chǔ)數(shù)據(jù)的對(duì)齊方式如果一個(gè)數(shù)據(jù)是從偶地址開(kāi)始的連續(xù)存儲(chǔ),那么它就是半字對(duì)齊,否則就是非半字對(duì)齊;如果一個(gè)數(shù)據(jù)是以能被4整除的地址開(kāi)始的連續(xù)存儲(chǔ),那么它就是字對(duì)齊,否則就是非字對(duì)齊。方式半字對(duì)齊字對(duì)齊…………地址0x40020x40040x40040x4008…………特征Bit0=0其他位為任意值Bit1=0,Bit0=0其他位為任意值片內(nèi)Flash編程步驟確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗(yàn)數(shù)據(jù)(可選)擦除操作之前必須先選擇扇區(qū),一次可以選擇多個(gè)扇區(qū)使用IAP之前需要定義的一些常量寫(xiě)入數(shù)據(jù)之前要先擦除扇區(qū),已擦除的可不必重復(fù)擦IAP提供數(shù)據(jù)校驗(yàn)手段,用戶不必自己動(dòng)手校驗(yàn)數(shù)據(jù)編程操作之前必須先選擇扇區(qū),一次可以選擇多個(gè)扇區(qū)字對(duì)齊的SRAM數(shù)據(jù)區(qū)數(shù)據(jù)寫(xiě)入到256字節(jié)對(duì)齊的Flash中,一次寫(xiě)入256、512、1024或4096字節(jié)。片內(nèi)Flash編程步驟通過(guò)在使用IAP代碼之前,需要定義一些常量,如系統(tǒng)時(shí)鐘、IAP函數(shù)入口、IAP入口緩沖區(qū)和出口緩沖區(qū)等。確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗(yàn)數(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ù)片內(nèi)Flash編程步驟對(duì)某一個(gè)扇區(qū)執(zhí)行擦除、寫(xiě)入等操作之前,必須先選擇該扇區(qū)。但也可以一次選擇多個(gè)扇區(qū)。確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗(yàn)數(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]);}設(shè)置扇起區(qū)始選扇擇區(qū)命令字設(shè)置終止扇區(qū)選擇扇區(qū)(可選)返回操調(diào)作用狀I(lǐng)A態(tài)P碼服務(wù)程序片內(nèi)Flash編程步驟LPC2300片內(nèi)Flash在寫(xiě)入數(shù)據(jù)前需要執(zhí)行擦除操作。如果目標(biāo)區(qū)域已經(jīng)被擦除,那么就不必重復(fù)擦除,可直
接寫(xiě)入數(shù)據(jù)。擦除操作一次可以擦除多個(gè)扇區(qū)。確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗(yàn)數(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]);}設(shè)置扇起區(qū)始擦扇除區(qū)命令字設(shè)置終止扇區(qū)擦除扇區(qū)(可選)返回操調(diào)作用狀I(lǐng)A態(tài)P碼服務(wù)程序片內(nèi)Flash編程步驟執(zhí)行完以上幾步后,就可以編程Flash了。執(zhí)行編程扇區(qū)的操作時(shí),IAP函數(shù)會(huì)將RAM中的數(shù)據(jù)拷貝到Flash中。確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗(yàn)數(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]);}設(shè)置扇區(qū)編程命令字paramin[1]=dst;
設(shè)置Flash目標(biāo)地址paramin[2]=src;設(shè)置SRAM源地址編程扇區(qū)返回操調(diào)作用狀I(lǐng)A態(tài)P碼服務(wù)程序設(shè)置復(fù)制字節(jié)數(shù)paramin[4]=IAP_FCCLK2;
56/512/1024/4096片內(nèi)Flash編程步驟IAP代碼還為用戶提供了一個(gè)數(shù)據(jù)校驗(yàn)的手段,這樣用戶就可以不必自己動(dòng)手來(lái)校驗(yàn)寫(xiě)入Flash中的數(shù)據(jù)是否正確。確定系統(tǒng)參數(shù)選擇扇區(qū)(可選)擦除扇區(qū)(可選)選擇扇區(qū)編程扇區(qū)校驗(yàn)數(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è)置數(shù)目據(jù)標(biāo)比地較址命令字設(shè)置源地址校驗(yàn)數(shù)據(jù)(可選)返回操調(diào)作用狀I(lǐng)A態(tài)P碼服務(wù)程序比較字節(jié)個(gè)數(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寫(xiě)入512個(gè)字節(jié)的數(shù)據(jù),扇區(qū)7可以作為一個(gè)E2PROM來(lái)使用,如存儲(chǔ)一些系統(tǒng)的配置信息。#define DestAddr
0x00007000
扇區(qū)7的起始地址intmain(void){__align(4)
uint8
SendData[512];uint32
i;
以字對(duì)齊定義變量區(qū)for(i
=
0;
i
<
512;
i++){SendData[i]=i;
初始化變量區(qū)數(shù)據(jù)選擇扇區(qū)7擦除扇區(qū)7選擇扇區(qū)7寫(xiě)入數(shù)據(jù)到Flash編程后的Flash區(qū)域編程后的Flash區(qū)域擦除后的Flash區(qū)域擦除后的Flash區(qū)域概述Boot簡(jiǎn)介片內(nèi)Flash存儲(chǔ)系統(tǒng)數(shù)據(jù)存儲(chǔ)解決方案在線升級(jí)解決方案在線升級(jí)解決方案系統(tǒng)概述“系在統(tǒng)線通升過(guò)級(jí)串”口實(shí)接際收上升是級(jí)Fl代as碼h數(shù),據(jù)然存后儲(chǔ)調(diào)的用一IA個(gè)P函應(yīng)數(shù)用實(shí)特
例現(xiàn)。在系線統(tǒng)升開(kāi)級(jí)發(fā)。完為畢了后實(shí),現(xiàn)在線用升過(guò)級(jí)程,中本,系如統(tǒng)果將需芯要片增的加片
內(nèi)部F分la功sh能重,新那分么區(qū)為:了避免重新拆裝設(shè)備,可以借助BLOooWt代區(qū)碼和區(qū)HI:G又H區(qū)叫:固用件戶區(qū)代碼分為兩個(gè)區(qū)
LOW“在線程升序級(jí)標(biāo)”志方區(qū)式:。標(biāo)記當(dāng)前用戶,程存序放運(yùn)系行統(tǒng)的區(qū),程序B區(qū)標(biāo)目o志和o前t區(qū)HL,oI的Ga在dH首e線區(qū)r地,升,址可級(jí)當(dāng)為完是程:成很序0代多x位0碼系于0升0統(tǒng)L0O級(jí)都4W,0必0區(qū)首需0時(shí)。地的,對(duì)址一可于位個(gè)以這于功對(duì)個(gè)能區(qū),間,對(duì)于0H僅LxIP僅G0C0H使203區(qū)0用0進(jìn)0了0來(lái)行0前說(shuō)0升4;,個(gè)級(jí)利字。用節(jié)反I,之AP用,函來(lái)如數(shù)保果即存程可當(dāng)序?qū)嵡拔滑F(xiàn)用于在戶H線I代G升H碼級(jí)區(qū)區(qū)。,用戶可的程首以序地對(duì)接L址收O。W新如區(qū)的程進(jìn)代序行碼標(biāo)升,志級(jí)然=。后0L調(diào)Ox0用W0I0區(qū)A0P的函80首數(shù)0地0將,址新則為的當(dāng):代前碼程編程0序到x運(yùn)0F0l行a0s0h在扇8L0O區(qū)0W0中,區(qū),H;實(shí)IG如現(xiàn)H程在區(qū)序線的標(biāo)升首志級(jí)地。=址為0x:0000x100000010,0則0當(dāng)00前,程每序個(gè)運(yùn)用行戶在代H碼IG區(qū)H的區(qū)容;量如為程3序2k標(biāo)B;志為其它值,則當(dāng)前程序運(yùn)行在固件區(qū)域。ARM7處理器核RAMFLASHUART0串口P0.6升級(jí)HIGH區(qū)代碼UART0通過(guò)IAP對(duì)Flash編程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)理質(zhì)量考核方案及控制標(biāo)準(zhǔn)
- 2025年江西陶瓷工藝美術(shù)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)帶答案解析
- 2025年武鳴縣幼兒園教師招教考試備考題庫(kù)附答案解析(奪冠)
- 2025年施秉縣招教考試備考題庫(kù)及答案解析(奪冠)
- 2025年雅江縣招教考試備考題庫(kù)附答案解析(必刷)
- 2025年江蘇財(cái)會(huì)職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性考試題庫(kù)帶答案解析
- 2024年馬山縣招教考試備考題庫(kù)及答案解析(必刷)
- 2025年重慶航天職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(奪冠)
- 2025年宣化科技職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試題庫(kù)附答案解析
- 2024年長(zhǎng)江職業(yè)學(xué)院馬克思主義基本原理概論期末考試題及答案解析(奪冠)
- 加工覆膜合同范例
- 湖北省荊州市八縣2024-2025學(xué)年高一上學(xué)期期末聯(lián)考英語(yǔ)試題(無(wú)答案)
- 《新疆工程勘察設(shè)計(jì)計(jì)費(fèi)導(dǎo)則(工程勘察部分)》
- 字母認(rèn)主協(xié)議書(shū)(2篇)
- 骨科研究生年終總結(jié)
- (完整)七年級(jí)生物上冊(cè)思維導(dǎo)圖
- HG20202-2014 脫脂工程施工及驗(yàn)收規(guī)范
- DL∕T 1573-2016 電力電纜分布式光纖測(cè)溫系統(tǒng)技術(shù)規(guī)范
- 20G520-1-2鋼吊車(chē)梁(6m-9m)2020年合訂本
- 電梯維護(hù)保養(yǎng)規(guī)則(TSG T5002-2017)
- PLC控制的搶答器設(shè)計(jì)與仿真
評(píng)論
0/150
提交評(píng)論