Keil C中到底怎样使用bootload?

xu555xu   2010-4-6 20:58 楼主

加入说我的main1()要放在boot(F800开始)区,main2()要放在0000H开头的那个区
那么这2个main该怎么写?

[code]
void main1()
{
.....
}

void main2()
{
.....
}

main2以及main2需要的函数按正常程序一样写

但main1该怎么定位到F800呢?

回复评论 (7)

还有假如main1执行完了怎么跳到main2去呢,难道goto xxx?
点赞  2010-4-6 21:47
keil的bootloader会自动生成,不需要自己编写。bootloader就是startup.a51里的内容,里面对寄存器、指针、ram等做了初始化,当然最后有个跳转指令转到了main()函数。所以,整个程序只要从main()函数开始编写就可以了。
点赞  2010-4-6 22:37
定位用scf文件(分散加载文件)
点赞  2010-4-7 08:40
具体久不用我忘了

不过KEIL里是可以在连接选项里进行设置,把函数定位到目标地址的

你看看连接选项的那个地方
点赞  2010-4-7 08:46
先问一下,楼主你写boot想要干嘛?
点赞  2010-4-7 15:48
估计LZ是想破解吧,

有读写保护的,前三页flash是不让动的,别琢磨了,hoho
点赞  2010-4-7 16:34
这些东西可以在C51的手册里面找到的,手册在keil的安装目录里面。
可以使用options for target->BL51 locate 页面设置
比如使用
?C_C51STARTUP(0x800)
把这个函数定位到0x800,格式可以参考手册。

跳转可以使用嵌入式汇编,也可以使用函数指针。
比如
void (*MainApp)();
MainApp = (VOID code *)0x800;
(*MainApp)();  此处可以实现跳转到另外一个应用程序。
点赞  2010-4-7 18:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复