历史上的今天
今天是:2024年10月07日(星期一)
2018年10月07日 | AVR ELF文件的生成与烧录
2018-10-07 来源:eefocus
通常AVR芯片包括flash,eeprom,fuse,lockbits,user 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
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的功能:在选好flash与eeprom的HEX文件位置后,分别去fuse,lockbits的页面勾选好相应的配置后,回来设置好需要产生的ELF文件路径,点Save即可由AVR Studio 4生成一个包含各个段内容的ELF文件格式,直接点Program按钮或者使用命令行工具atprogram.exe都可以简单的烧录。

史海拾趣
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 几个月以来,3D电视非常热门。据德国《法兰克福汇报》报道,目前,制造商已经在市场上推出了整整12款3D电视产品,到7月份产品类型更将达到36种。到9月份的柏林国际消费电子展,可供消费者选择 ...… 查看全部问答> |
|
我在Keil uVision3中编了个小程序: #include #define u8 unsigned char #define u16 unsigned int #define MSG_MAX_DATA_LENGTH 4 typedef struct MsgObj { u8 datalen; u8 opCode; u8 date[MSG_MAX_DATA_LENGTH]; u16 crc; }MsgObj; ...… 查看全部问答> |
|
我刚接触zigbee,正研究协议栈程序(cc2430)。我发现这样的一个问题: 当一个rfd节点申请加入corde节点时,应该在corder节点处有判断PANID(网络号)是否相同,如果相同就可以加入,但是在协议栈corer源程序里不论nwk层,ma ...… 查看全部问答> |
|
最近在学NIOSII,总是有些问题出来,打扰大家了··· #include \"stdio.h\"#include \"sys/unistd.h\"#include \"io.h\"#include \"string.h\"#include \"system.h\"#include \"altera_avalon_pio_regs.h\"#include \"altera_avalon_timer_regs.h ...… 查看全部问答> |




