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

 
 
> Cortex-M3 GCC, копия таблицы векторов в 2 адресах
Cosmojam
сообщение Aug 17 2013, 11:42
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



LPC1788, gcc. Есть загрузчик и приложение. Нужно сделать чтобы один и тот же бинарник с приложением можно было прошивать и через загрузчик и напрямую через ISP без оного.
Я не понимаю как это сделать, но говорят что надо разместить копию таблицы векторов приложения по 0 адресу. Т.е. на случай приложения без загрузчика (прошито через ISP, например) мы стартуем с 0 адреса, оттуда попадаем по нужному адресу с приложением (0x4000), там таблица векторов перемещается на начальный адрес приложения (0x4000) и т.к. таблицы одинаковые и на 0 и на 0x4000, то всё должно работать.
Пока пытаюсь запустить такой вариант и не получается. Делаю в скрипте линкера
Код
MEMORY
{
   FLASH (rx) : ORIGIN = 0x4000 LENGTH = 0x7C000
   SRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 0x10000
   PIRAM(rw)  : ORIGIN = 0x20000000, LENGTH = 0x8000
    
   SDRAM (rw) : ORIGIN = 0xA0080000, LENGTH = 0x10000
  
   VECTORS_AT_ZERO (rx) : ORIGIN = 0x0 LENGTH = 0x1FF
  
}
  .text :
  {
    KEEP(*(.isr_vector))
  } > VECTORS_AT_ZERO
  
  .text :
  {
    KEEP(*(.isr_vector))
    *(.text*)
    *(.rodata*)

  } > FLASH

В стартап файле
Код
extern void (* const g_pfnVectors[])(void);
__attribute__ ((section(".isr_vector")))
void (* const g_pfnVectors[])(void) =
{
  // Core Level - CM3
  (void *)&_vStackTop,    // The initial stack pointer
  ResetISR,               // The reset handler

Но работает только 1 раз сразу же после прошивки через ISP, потом после сброса уже не работает до следующей прошивки.

Подскажите как можно решить эту задачу? Если размещением копии таблицы векторов по 0 адресу, то как это сделать?


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 02:01
Рейтинг@Mail.ru


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