Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101855
  • 博文数量: 14
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-29 17:53
个人简介

坚持不懈的努力,从容不迫的追求

文章分类

全部博文(14)

文章存档

2013年(14)

我的朋友

分类: 嵌入式

2013-02-01 09:12:59

通常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 重新编译即可,此头文件会定义一个常量数组并放置到ELF的.signature段中。(如果增加了.user_signature的段,好像编译器会自动将这.signature这个段添加到ELF文件中TBD)


  1. const unsigned char __signature[3] __attribute__((section (".signature"))) =  
  2.         { 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都可以简单的烧录。

阅读(4252) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~