新聞中心

F020在線升級程序

作者: 時(shí)間:2016-11-09 來源:網(wǎng)絡(luò) 收藏

分為三大CODE保存區(qū):
升級程序區(qū)+用戶程序區(qū)+用戶Main入口地址保存區(qū)

復(fù)位0x0000-0x0003地址保存LJMP main命令
例如
C:0x000002F741LJMPSTARTUP1(C:F741)
0x0000 – 0x0003存儲(chǔ)的就是02F741 ,其中02是LJMP命令碼,F(xiàn)741是跳轉(zhuǎn)地址(main),其實(shí)也不是main的地址,在main之前,還保護(hù)堆棧初始化等代碼(通過匯編可以看到)。

0x0003之后的是各種中斷的地址,比如你的程序中
void SMBUS_ISR (void) interrupt 7
{
}
SMBUS_ISR這個(gè)SMBUS中斷函數(shù)的地址就保存在0x003B處

一個(gè)程序?qū)嶋H上就是由中斷向量+用戶代碼程序構(gòu)成
其中中斷向量是在第一個(gè)扇區(qū)內(nèi)

對于KEIL來說,除非特別指定函數(shù)地址,在編寫完程序后,編譯器會(huì)自動(dòng)分配函數(shù)的地址,也就說改動(dòng)編譯后,中斷向量中的地址都可能發(fā)生改變

對于KEIL,可以指定程序代碼的位址,但這個(gè)位址是用戶代碼地址。
例如在Option For Target -àBL Loate -àcode Range 0XEA00-0XFDFF
代碼實(shí)際區(qū):中斷向量(第一個(gè)扇區(qū))+ 0XEA00-0XFDFF


關(guān)鍵詞: F020在線升

評論


技術(shù)專區(qū)

關(guān)閉