微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > F020在线升级程序

F020在线升级程序

时间:11-09 来源:互联网 点击:

分为三大CODE保存区:
升级程序区+用户程序区+用户Main入口地址保存区

复位0x0000-0x0003地址保存LJMP main命令
例如
C:0x000002F741LJMPSTARTUP1(C:F741)
0x0000 – 0x0003存储的就是02F741 ,其中02是LJMP命令码,F741是跳转地址(main),其实也不是main的地址,在main之前,还保护堆栈初始化等代码(通过汇编可以看到)。

0x0003之后的是各种中断的地址,比如你的程序中
void SMBUS_ISR (void) interrupt 7
{
}
SMBUS_ISR这个SMBUS中断函数的地址就保存在0x003B处

一个程序实际上就是由中断向量+用户代码程序构成
其中中断向量是在第一个扇区内

对于KEIL来说,除非特别指定函数地址,在编写完程序后,编译器会自动分配函数的地址,也就说改动编译后,中断向量中的地址都可能发生改变

对于KEIL,可以指定程序代码的位址,但这个位址是用户代码地址。
例如在Option For Target -àBL Loate -àcode Range 0XEA00-0XFDFF
代码实际区:中断向量(第一个扇区)+ 0XEA00-0XFDFF

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top