Jump to content

    

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.

 

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

Share this post


Link to post
Share on other sites

Попробуйте опции проекта->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

Share this post


Link to post
Share on other sites
поскипано

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

 

Внимательный анализ доки привел к тому, что один из правильных 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 )
  }


}

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this