Цитата(Ivan Kuznetzov @ Mar 8 2011, 04:22)

Привет всем! Есть девайс на STM32, обновление прошивки происходит с SD карты. Обновляется бинарником, сгенерированными ИАРом. Как в бинарник включить в начало какое-нибудь слово (или дату компиляции прошивки), которое было-бы для моего девайса уникальным?
спасибо
Я устанавливаю все нужные константы после таблицы векторов:
В файле cstartup.s
Код
/*******************************************************************************
Exception vectors & startup code
*******************************************************************************/
#define ASSEMBLER_INCLUDE
#include "app_cfg.h"
MODULE ?cstartup
SECTION IRQ_STACK:DATA:NOROOT(2)
SECTION FIQ_STACK:DATA:NOROOT(2)
SECTION SVC_STACK:DATA:NOROOT(2)
SECTION ABT_STACK:DATA:NOROOT(2)
SECTION UND_STACK:DATA:NOROOT(2)
SECTION C_STACK:DATA:NOROOT(3)
/*******************************************************************************
Def's
*******************************************************************************/
/* Mode, correspords to bits 0-5 in CPSR */
#define ARM_MODE_BITS 0x1F
#define ARM_MODE_USR 0x10
#define ARM_MODE_FIQ 0x11
#define ARM_MODE_IRQ 0x12
#define ARM_MODE_SVC 0x13
#define ARM_MODE_ABT 0x17
#define ARM_MODE_UND 0x1B
#define ARM_MODE_SYS 0x1F
/* Irq's bits in CPSR */
#define ARM_CPSR_I_DIS 0x80
#define ARM_CPSR_F_DIS 0x40
/*******************************************************************************
*******************************************************************************/
SECTION .vectors:CODE:NOROOT(2)
PUBLIC __program_start
PUBLIC __sw_version
EXTERN AT91_CPU_UndefHandler
EXTERN AT91_CPU_SWIHandler
EXTERN AT91_CPU_PREFHandler
EXTERN AT91_CPU_DATAHandler
EXTERN AT91_CPU_FIQHandler
CODE32 /* ARM mode */
/* Vectors */
/* CPU */
__program_start:
LDR PC, = __cstartup /* Branch to low level init code */
LDR PC, __cpu_undef_handler /* Branch to undefined instruction handler */
LDR PC, __cpu_swi_handler /* Branch to software interrupt handler */
LDR PC, __cpu_pref_handler /* Branch to prefetch handler */
LDR PC, __cpu_data_handler /* Branch to data abort handler */
LDR PC, = __cstartup /* Branch to startup code - reserved vector */
LDR PC, = __irq_handler /* Branch to IRQ handler */
LDR PC, __cpu_fiq_handler /* Branch to FIQ handler */
__cpu_undef_handler: DCD AT91_CPU_UndefHandler
__cpu_swi_handler: DCD AT91_CPU_SWIHandler
__cpu_pref_handler: DCD AT91_CPU_PREFHandler
__cpu_data_handler: DCD AT91_CPU_DATAHandler
__cpu_fiq_handler: DCD AT91_CPU_FIQHandler
/*******************************************************************************
Application version.
Address = __programm_start + (13 * 4) = 52
*******************************************************************************/
__sw_version: DCD APP_CFG_SW_VERSION
__sw_name: DCD APP_CFG_SW_NAME
/*******************************************************************************
Handles incoming interrupt requests by branching to the corresponding
handler, as defined in the AIC. Supports interrupt nesting.
*******************************************************************************/
__irq_handler:
......................
......................
......................
В файле конфигурации приложения:
Код
#ifndef APP_CFG_H
#define APP_CFG_H
#include <ioat91sam7s64.h> /* Link CPU */
/*******************************************************************************
Configs
*******************************************************************************/
/* Board version */
#define APP_CFG_BOARD_VERSION 2
/* This software version */
#define APP_CFG_SW_VERSION 0x00110210 /* Year, Month, Day */
/* This software name */
#define APP_CFG_SW_NAME "My Device"
......................
......................
......................