Перейти к содержанию
    

Keil flash download

Комрады, зарасскажите, что за грабелька такая.

 

Собрал под Keil 3.8 для sam7s64

 

LR_IROM1 0x00100000 0x00010000  {   ; load region size_region
  ER_IROM1 0x00100000 0x0000C000  { ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  
  RW_ 0x0010C000 0x00004000 {
   *.o ( flh_data )
  }

  RW_IRAM1 0x00200000 0x00004000  { ; RW data
   .ANY (+RW +ZI)
  }

}

 

вижу в мапе

Inflash_images                           0x0010c000   Data          16  test.o(.ARM.__AT_0x0010C000)
    image_gear                               0x0010c010   Data         546  test.o(flh_data)
    image_background_white_bluetitle         0x0010c232   Data       13538  test.o(flh_data)
    image_exclamation_diamond                0x0010f714   Data         546  test.o(flh_data)
    image_exclamation_red                    0x0010f936   Data         546  test.o(flh_data)

Всё вроде бы замечательно, однако после загрузки в целевую платформу MT-Link'ом по адресам 0x0010c000 девственная чистота флэши , тобишь 0xFF.

 

Что за грабелька ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте опции проекта->Debug->Initialization File

FUNC void Setup (void) {
// <o> Program Entry Point
  PC = 0x00100000;
}

// Configure GPNVM bits
_WDWORD(0xFFFFFF64, (0x5A<<24)|(2<<8)|(0xB));  //MC_FCR: Set GPNVM2 Bit for flash startup
_sleep_(10);

_WDWORD(0xFFFFFD44, 0x00008000);     // WDT_WDMR: Disable Watchdog

// Switching from Slow Clock to Main Oscillator for faster Download
_WDWORD(0xFFFFFC20, 0x00000601);     // PMC_MOR: Enable Main Oscillator
_sleep_(10);                         // Wait for stable Main Oscillator
_WDWORD(0xFFFFFC30, 0x00000001);     // PMC_MCKR: Switch to Main Oscillator

LOAD FLASH\firmware.axf INCREMENTAL      // FLASH\firmware.axf надо заменить на путь и название Вашего выходного файла

Setup();                             // Setup for Running

g, main

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

поскипано

Конечно, если раскинуть мозгом, то какое отношение инициализация дебага имеет отношение к программированию флэша , к тому же видно , что и линк расположил исполняемый код и констатны во флэше?

 

Внимательный анализ доки привел к тому, что один из правильных scatter файл может быть таким

LR_IROM1 0x00100000 0x000C000  {   ; load region size_region
  ER_IROM1 0x00100000 0x0000C000  { ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
    
  RW_IRAM1 0x00200000 0x00004000  { ; RW data
   .ANY (+RW +ZI)
  }

}

LOAD_ROM2 0x0010C000 0x00004000 {
  FLASH 0x0010C000 {
   .ANY ( flh_data )
  }


}

Кстати, явного запрета на первый варант размещения я не нашёл.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...