6077|7

94

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

Keil C中到底怎样使用bootload? [复制链接]


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

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

void main2()
{
.....
}

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

但main1该怎么定位到F800呢?

最新回复

这些东西可以在C51的手册里面找到的,手册在keil的安装目录里面。 可以使用options for target->BL51 locate 页面设置 比如使用 ?C_C51STARTUP(0x800) 把这个函数定位到0x800,格式可以参考手册。 跳转可以使用嵌入式汇编,也可以使用函数指针。 比如 void (*MainApp)(); MainApp = (VOID code *)0x800; (*MainApp)();  此处可以实现跳转到另外一个应用程序。   详情 回复 发表于 2010-4-7 18:21
点赞 关注

回复
举报

62

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
还有假如main1执行完了怎么跳到main2去呢,难道goto xxx?
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
keil的bootloader会自动生成,不需要自己编写。bootloader就是startup.a51里的内容,里面对寄存器、指针、ram等做了初始化,当然最后有个跳转指令转到了main()函数。所以,整个程序只要从main()函数开始编写就可以了。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
定位用scf文件(分散加载文件)
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

5
 
具体久不用我忘了

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

你看看连接选项的那个地方
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 
先问一下,楼主你写boot想要干嘛?
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
估计LZ是想破解吧,

有读写保护的,前三页flash是不让动的,别琢磨了,hoho
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

8
 
这些东西可以在C51的手册里面找到的,手册在keil的安装目录里面。
可以使用options for target->BL51 locate 页面设置
比如使用
?C_C51STARTUP(0x800)
把这个函数定位到0x800,格式可以参考手册。

跳转可以使用嵌入式汇编,也可以使用函数指针。
比如
void (*MainApp)();
MainApp = (VOID code *)0x800;
(*MainApp)();  此处可以实现跳转到另外一个应用程序。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表