реклама на сайте
подробности

 
 
> Как включить версию прошивки в бинарник?
Ivan Kuznetzov
сообщение Mar 7 2011, 21:22
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Привет всем! Есть девайс на STM32, обновление прошивки происходит с SD карты. Обновляется бинарником, сгенерированными ИАРом. Как в бинарник включить в начало какое-нибудь слово (или дату компиляции прошивки), которое было-бы для моего девайса уникальным?

спасибо


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
prottoss
сообщение Mar 8 2011, 04:38
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(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"
......................
......................
......................


--------------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 04:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016