[求助] 求IAR的一个编译问题!

零晨   2011-12-26 16:06 楼主

现在我有两个程序,开机首先运行bootloader();-->项目需要,自己写的下载程序。

运行bootloader(),如果一直没有上位机(PC)通讯烧录代码,就会自动跳转到main()运行,

我想问的就是用C语言写程序,IAR编译,那怎么实现这个程序的跳转问题,开机自动运行在bootloader(),一段时间后,

跳转到main()运行主程序!~

 

求教各位大神啊!

回复评论 (14)

((void (*)())0x444)(); ,直接C语言跳转到0X444地址,当然,这个0x444是我随便写的,你把它换成MAIN入口地址
点赞  2011-12-26 16:27

回复 沙发 kingheimer 的帖子

所以开机运行的程序bootloader();是烧录在0xfff2,
main()主程序会在bootloader()程序中download在比如起始地址0x1600,
((void (*)())0x444)();是下在bootloader()中最后需要跳转到main()的指令吧?
点赞  2011-12-27 15:07
((void (*)())0x444)();转化为汇编批令是 BR指令,即在64K的地址空间内可以无条件跳转到所指地址,楼主说的不是很明白我
点赞  2011-12-28 10:41

回复 4楼 kingheimer 的帖子

那就是啦,转化为汇编就是BR的话,就是这个了,真是太感谢你啦,这个我找了很久了,现在项目赶着要做,就差程序上最后一点了!
点赞  2012-1-6 14:12
你用的是MSP430那颗芯片呢?用MSP430做远程在线升级的人很多
点赞  2012-1-6 18:57

这里上传一份LSD的串口升级代码的说明文档和参考例程给你,希望对你有所帮助.

UART自升级支持资料.rar (1.13 MB)
(下载次数: 60, 2012-1-7 21:45 上传)

点赞  2012-1-7 21:45

回复 6楼 hansonhe 的帖子

我用的是MSP430F2132,不知道这颗bootloader设计有没有特殊的地方!
点赞  2012-1-10 09:16

回复 7楼 Triton.zhang 的帖子

太感谢了,资料多了才能更深入的学习应用啊!
点赞  2012-1-10 09:17

回复 4楼 kingheimer 的帖子

兄弟,能不能再请教一个问题啊,就是IAR汇编语言有条指令ORG  1100H,
可以指定程序的起始空间吧,程序会从将程序烧录在0x1100起始的空间,想问一下,C语言怎么写这条指令呢?
点赞  2012-3-5 10:47

回复 10楼 零晨 的帖子

这条语句还真没了解过用C怎么写,不好意思
点赞  2012-3-5 10:57

回复 11楼 kingheimer 的帖子

呵呵,谢谢啊,之前那个也是你告诉我的,解决问题了呢!我再问问!
点赞  2012-3-5 11:01

回复 12楼 零晨 的帖子

能解决问题就好
点赞  2012-3-5 11:04

回复 13楼 kingheimer 的帖子

呵呵,是啊!
点赞  2012-3-5 11:07

回复 14楼 零晨 的帖子

可否用C和汇编混编来解决?
点赞  2012-3-5 17:15
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复