AVR ELF文件的生成与烧录

通常AVR芯片包括flasheepromfuselockbitsuser signature等几个非易失的内容需要在编程时烧录到芯片中,其中fuse部分是只有外部的编程器可以进改写,应用程序本身是无法更改的。

在进行ISP烧录过程中,用户希望使用点一个按钮这样单一的动作来完成烧录,这就要求能把几个不同部分的擦出、烧写、比较的动作合成在一起来完成。可以使用ELF格式来完成这个目标,ELF格式的目标文件中可以包含不同的区域段,下载工具可以分别提取烧录到相应的位置。

1)使用Atmel Studio 6进行的软件开发

如果开发者使用是Atmel Studio 6(或者是AVR Studio 4/5,总之是GCC就行)来编写用户的源代码,avr glibc提供了一组方法来实现在源代码中指定这些不同区域的值。


如果希望生成的ELF文件中包含有芯片ID的段,用于ELF Production file下载之前进行比较,看是否是匹配当前设备的下载文件。这一步仅需要在源代码中加入头文件#include <avr/signature.h>重新编译即可,此头文件会定义一个常量数组并放置到ELF的.signature段中。(如果增加了.user_signature的段,好像编译器会自动将这.signature这个段添加到ELF文件中TBD)

const unsigned char __signature[3] __attribute__((section (".signature"))) =
        { SIGNATURE_2, SIGNATURE_1, SIGNATURE_0 };

2)使用IAR AVR进行的软件开发

由于IAR扩展语法中不能支持fuse,lockbits等位的定义,所以使用IAR仅能生产单一烧写FLASH的内容,通常我们生产HEX格式。

这时候就需要使用到AVR Studio 4中的ELF Production File  Fomart的功能:在选好flasheeprom的HEX文件位置后,分别去fuse,lockbits的页面勾选好相应的配置后,回来设置好需要产生的ELF文件路径,点Save即可由AVR Studio 4生成一个包含各个段内容的ELF文件格式,直接点Program按钮或者使用命令行工具atprogram.exe都可以简单的烧录。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值