打印
[AVR单片机]

请教AVR高手,关于bootloader程序的下载地址

[复制链接]
1795|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xzq1019|  楼主 | 2012-3-29 15:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,我用的单片机为atmega162,所用编译器为winavr  所用的makefile贴上如附件:
makefilek中规定了链接选项如下

LDFLAGS += -Wl,--section-start=.text=0x1c00

理论上,程序下载后应该在0X1C00处开始的,为何我从MKII仿真器里看到程序是从E00处开始的?
而atmega162是具有16KB 的flash的,造成了一半的flash未用到。
我试着把0x1c00,改变为0X3C00,发现编译后无法下载,提示说这个单片机不支持这个文件。
这个makefile是从芯艺处得来,基于其atmega8应用,我将其改为适用于atmega162,请大侠帮忙分析!

Makefile.rar

4.19 KB

相关帖子

沙发
xzq1019|  楼主 | 2012-3-29 16:00 | 只看该作者
补充一句:所生成的mapfile中是从0X1C00开始向量地址的。

使用特权

评论回复
板凳
airwill| | 2012-3-30 12:08 | 只看该作者
E00处开始, 那是以字(16位)为单位的记数方式哦.
也正因为此
把0x1c00,改变为0X3C00,发现编译后无法下载,提示说这个单片机不支持这个文件。

使用特权

评论回复
地板
xzq1019|  楼主 | 2012-3-30 23:23 | 只看该作者
atmega162,以字(16位)为单位记数,其总地址为0-0x2000
把bootloader程序下载到以0xE00开始的地址实在是浪费
真不知道如何能改为以0x1C00开始的地址。

使用特权

评论回复
5
airwill| | 2012-3-30 23:38 | 只看该作者
这个, 楼主得仔细研究一下 bootload 的资料, 在数据手册上详细的介绍了.

使用特权

评论回复
6
xzq1019|  楼主 | 2012-3-31 22:45 | 只看该作者
哦,已经解决,把makefile中

LDFLAGS += -Wl,--section-start=.text=0x1c00

改为

LDFLAGS += -Wl,--section-start=.text=0x3800

这时编译后的软件可以正常加载。而从仿真器读了出下载到程序里的位置
是1C00首地址。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

168

帖子

2

粉丝