新闻  |   论坛  |   博客  |   在线研讨会
AVR studio(AVR GCC)下编译ATmega128 bootloader若干问题说明
0750long | 2009-07-10 08:46:26    阅读:3926   发布文章

AVR studio(AVR GCC)下编译ATmega128 bootloader若干问题说明

 

AVR studio(AVR GCC)下编译ATmega128 bootloader若干问题说明
1. 首先需要在 Memory Settings中Add: Flash .text=0xF000(使用4K).
   因为GCC不像ICC那样可以自动设置,所以此步必须写入.
2. 许多人(我也是)都是按照马老师那本书上的例程来做的内部flash的操作函数, 但是我试过多遍之后发现在GCC下这个不能使用,需要使用"avr/boot.h"下声明的几个库函数, 具体如下:
 boot_spm_busy_wait 等待flash操作完成
 boot_page_erase  擦除一个flash页
 boot_page_fill  写入数据到flash buffer
 flash_page_prog  将buffer数据写入flash
   有个这几个函数就可以对flash进行写入操作了. 具体为何要这样作我还不太清楚, 希望大家可以指教.
3. 程序下载完毕后如要启动, 需要调用如下函数:
 boot_rww_enable
   否则无法正常启动APP程序.
4. GCC对数据的处理也不太与ICC一样, 比如再读校验和的时候在ICC下进行如下操作:
 CheckSum = getch() << 8;   // 读校验和
 CheckSum|= getch();
   则可以正确执行, 8位16位之间的自动转换也正常, 但是在GCC下取有错误, 不得已写成了如下格式:
 CheckSum = ((uint16)getch()&0xFF) << 8;  // 读校验和
 CheckSum|= ((uint16)getch()&0xFF);

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客