加入说我的main1()要放在boot(F800开始)区,main2()要放在0000H开头的那个区
那么这2个main该怎么写?
[code]
void main1()
{
.....
}
void main2()
{
.....
}
main2以及main2需要的函数按正常程序一样写
但main1该怎么定位到F800呢?
还有假如main1执行完了怎么跳到main2去呢,难道goto xxx?
keil的bootloader会自动生成,不需要自己编写。bootloader就是startup.a51里的内容,里面对寄存器、指针、ram等做了初始化,当然最后有个跳转指令转到了main()函数。所以,整个程序只要从main()函数开始编写就可以了。
具体久不用我忘了
不过KEIL里是可以在连接选项里进行设置,把函数定位到目标地址的
你看看连接选项的那个地方
估计LZ是想破解吧,
有读写保护的,前三页flash是不让动的,别琢磨了,hoho
这些东西可以在C51的手册里面找到的,手册在keil的安装目录里面。
可以使用options for target->BL51 locate 页面设置
比如使用
?C_C51STARTUP(0x800)
把这个函数定位到0x800,格式可以参考手册。
跳转可以使用嵌入式汇编,也可以使用函数指针。
比如
void (*MainApp)();
MainApp = (VOID code *)0x800;
(*MainApp)(); 此处可以实现跳转到另外一个应用程序。