5932|7

4

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

大家好,求助,急,bootloader在avr studio(gcc)的环境下配置问题,我用是mega128 [复制链接]

大家好、请教一下,bootloader在avr studio(gcc)的环境下应该怎么配置呀?我用是mega128
这几天上网找了很多的资料(包括马潮老师,傻孩子老师,shaoziyang老师的帖子)也看了大家的讨论,ICC下的bootloader已经实现。但是avr studio(gcc)始终不行。
我主要代码如下,其中写flash代码是来自于
http://www.nongnu.org/avr-libc/user-manual/group__avr__boot.html

unsigned char data1[]={…………………………………………};//这个是我希望用bootloader 写入的数组

void boot_program_page (uint32_t page, uint8_t *buf) //来源于avr-libc的范例
{
uint16_t i;
uint8_t sreg;

// Disable interrupts.

sreg = SREG;
cli();

eeprom_busy_wait ();

boot_page_erase (page);
boot_spm_busy_wait (); // Wait until the memory is erased.



for (i=0; i<SPM_PAGESIZE; i+=2)
{
// Set up little-endian word.

uint16_t w = *buf++;
w += (*buf++) << 8;

boot_page_fill (page + i, w);
}

boot_page_write (page); // Store buffer in flash page.
boot_spm_busy_wait(); // Wait until the memory is written.

// Reenable RWW-section again. We need this if we want to jump back
// to the application after bootloading.

boot_rww_enable ();

// Re-enable interrupts (if they were ever enabled).

SREG = sreg;
}


void main()//主函数,调用上面的函数,将数组写入对应的地址
{
……
address=0x0000;
boot_program_page(address,data1);
……
}

我的BOOTSZ1和BOOTSZ0都是取默认的0,即4096words, 32 pages;应用区0000~EFFF; boot:F000~FFFF直接在avr studio里面选好就行了。
同时BOOTRST也是默认,返回到0000;
另外,原来的帖子中写到需要在makefile 里面加上LDFLAGS = -Wl,-Map=$(TARGET).map,--cref,--section-start=工程名.text=0x1F000 但是这样不能写入。
或者,在memory 中设置memory:flash
name: 工程名.text
address: 0x1F000
也不成功。另外我尝试的地址有0x1e000也不行

lib中的代码应该是没问题的,我想请教大家,avr studio中具体的应该怎么设置啊?关于mega128的

最新回复

您好,我也遇到这个问题了。您最后是怎么解决的?  详情 回复 发表于 2017-8-5 11:19
点赞 关注
 

回复
举报

281

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
看的很乱。。
 
个人签名[url=http://www.51great.org/]嵌入式培训[/url
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
谢谢回复,的确没说清楚

我的数组其实是个bin程序文件,被转化成十进制了
我需要在avr studio中将这个数组写入从地址0000开始的flash中,然后跳到段首执行这个程序。
这个我已经在ICC中实现了,gcc中代码应该也是对的,就是makefile文件好像不对
我的QQ:374933900,方便的话,可以私聊
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

4
 
有大牛知道么?可付报酬~~~详情请私聊
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

5
 
问题已经解决,上面的程序可以执行,问题出在project->configuration options->memory settings
点击 memory segments中add
第一个填“flash”
第二个填“.text”,这个表示是text
第三个填“0xfc00”,其实填其他的0xf800,0xf000都可以,但是注意要和熔丝位设置的一致才行

其实是老问题了,只是我是新手而已,呵呵,不好意思啊
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

6
 
我也遇到过这个问题,一直没搞定,甚至以为是编译器的问题,不错借鉴一下你的经验试试
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

7
 
这个问题有人成功了吗?我也遇到了同样的问题,bootloader程序烧写完了,应用程序也成功发送了,可是就是不支持应用程序,我用的是stutio6,有知道的指导下啊,我qq1025774619,万分感谢
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
李兵李兵 发表于 2016-12-28 10:24
这个问题有人成功了吗?我也遇到了同样的问题,bootloader程序烧写完了,应用程序也成功发送了,可是就是不 ...

您好,我也遇到这个问题了。您最后是怎么解决的?
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表