如何把bootloader和应用区程序这两个hex文件合并成一个hex文件
我使用的是mega88+avrstudio+GCC,手头有一个bootloader的程序和一个应用区的程序,我想过一个办法,就是先把bootloader先烧录,然后通过上位机将应用程序更新进单片机,最后在将单片机的整个flash读取出来。请问大家有没有更好更快捷的方法能够实现?
谢谢! 这个简单。编译好的HEX文件都有地址。并且应用程序和BOOT地址不同。分割地址合并就可以了。 bynce 罗曼能否详细介绍一下。 有好多种办法.
比如要把loader放在地址0x7000
1、把loader程序绝对定位
#pragma abs_address:0x7000 //也可以是别的地址
void loader(void)
{
......
}
#pragma end_abs_address
跟你的应用程序放在一起编译,编译选项选择没有loader
2、用DOS的debug命令
run CMD打开DOS界面
-debug xxx.bin (这里是你的应用程序名)
-n xxx.bin (这里是你的loader程序名)
-l 7100 (要加0x100的地址偏移量)
-rcx
cx xxxx (这里显示的是loader的文件长度)
: xxxx (输入要写的总长度)
-n xxx.bin(新的文件名)
-w100(写入文件)
-q(退出debug)
3、用VC或者VB写一个小程序完成文件自动拼接 最简单的办法:把应用区hex最后一行删掉,然后把bootloader区hex内容全部拷贝到应用区hex后面就行。 呵呵非常感谢大家。学到了不少。 hex2bin main.hex /L7168
hex2bin bootload\bloader.hex slave.bin /M
这样就好了 mark 用编程器软件! 对4l的方法表示怀疑 学到了,好贴,回去好好测试一下.在网上搜了两天了终于找到了 powerpan 发表于 2010-1-2 17:18
hex2bin main.hex /L7168
hex2bin bootload\bloader.hex slave.bin /M
hex2bin能分享下, 我的没有/M参数
页:
[1]