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

EA lpc3250 Keil DDR init script

Собственно, сабж.

 

Основной процессорный код работает без запинки, но на некоторый этап отладки нужен скрипт инициализации DDR контроллера, штоб можно было бы грузить весь код ( с большой Data-RO секцией ) отладчиком сразу во внешнее ОЗУ. В Keil'е есть для SDR SDRAM для фитековских плат, а вот для DDR - нима.

 

Может кто проходил подобный этап?

 

 

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


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

Собственно, сабж.

 

Основной процессорный код работает без запинки, но на некоторый этап отладки нужен скрипт инициализации DDR контроллера, штоб можно было бы грузить весь код ( с большой Data-RO секцией ) отладчиком сразу во внешнее ОЗУ. В Keil'е есть для SDR SDRAM для фитековских плат, а вот для DDR - нима.

 

Может кто проходил подобный этап?

 

Естественно проходил. Качайте здесь: http://eewiki.ru/wiki/ARMGeoSpyder1

 

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


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

Естественно проходил. Качайте здесь: http://eewiki.ru/wiki/ARMGeoSpyder1

О! Много полезного для себя нашел. За это большая спасиба.

Но меня интересовало то что пишется в файликах "IntRAM.ini" и им подобных:

 exec("LOAD Obj\\proj.axf INCREMENTAL"); // Download
PC = 0x08000000  // PC setup to PSRAM
// exec("g,main");

ну или в пользуемом мной варианте

DEFINE CHAR Setup;
DEFINE INT  Entry;

DEFINE LONG SYS;
SYS    = 0x40004000;


FUNC void HELLO(void)
{
  printf ("--------------------------------\n\r");
}



FUNC void Remap (void) 
{
 LONG BOOT_MAP;
 BOOT_MAP = SYS + 0x14;              // Boot Map Control        Address
 _WDWORD(BOOT_MAP, 0x00000001);      // Remap IRAM to 0
}

FUNC void PC_Setup (void) 
{
 PC = Entry;
}

FUNC void GoMain (void) 
{
 exec("g,main");
}


FUNC void Download (void) 
{
 exec("LOAD D:\\Projects\\lpc3250\\soft\\_obj\\testing-load.axf INCREMENTAL");
}

Entry = 0x08000000;

// Memory mapped peripherals address definitions
DEFINE LONG EMC;
EMC    = 0x31080000;



FUNC void Clock_Setup (void) {
 if (Setup & 0x01) {
   // Setup clock: XTAL                      =  13.00 MHz, 
   //              SYSCLK                    =  13.00 MHz, 
   //              HCLKPLL                   = 208.00 MHz, 
   //              ARM_CLK    = HCLKPLL      = 208.00 MHz
   //              HCLK       = HCLKPLL / 2  = 104.00 MHz
   //              PERIPH_CLK = HCLKPLL / 16 =  13.00 MHz
   LONG PWR_CTRL, OSC_CTRL, SYSCLK_CTRL, PLL397_CTRL, HCLKPLL_CTRL, HCLKDIV_CTRL; 

   PWR_CTRL        = SYS + 0x44;       // Power Control Register  Address
   OSC_CTRL        = SYS + 0x4C;       // Main Oscilator Ctrl Reg Address
   SYSCLK_CTRL     = SYS + 0x50;       // SYSCLK Control Register Address
   PLL397_CTRL     = SYS + 0x48;       // PLL397 Control Register Address
   HCLKPLL_CTRL    = SYS + 0x58;       // ARM and HCLK Ctrl Reg   Address
   HCLKDIV_CTRL    = SYS + 0x40;       // HCLK Divider Settings   Address

   _sleep_ (10);
   _WDWORD(SYSCLK_CTRL  , 0x00000140);
   _WDWORD(OSC_CTRL     , 0x00000000);
   _WDWORD(HCLKPLL_CTRL , 0x0001401E);
   _sleep_ (10);
   _WDWORD(HCLKDIV_CTRL , 0x0000003D);
   _WDWORD(PWR_CTRL     , 0x00000016);
 }
}

HELLO();
Remap();

Clock_Setup();
//EMC_Setup();

Download();
PC_Setup();
GoMain();
HELLO();

Изменено пользователем IgorKossak
Тэги спойлеров поубирал

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


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

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

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

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

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

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

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

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

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

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