Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: EA lpc3250 Keil DDR init script
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Отладочные платы
cf7k
Собственно, сабж.

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

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

AlexandrY
Цитата(cf7k @ Sep 28 2010, 19:56) *
Собственно, сабж.

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

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


Естественно проходил. Качайте здесь: http://eewiki.ru/wiki/ARMGeoSpyder1
cf7k
Цитата(AlexandrY @ Sep 28 2010, 20:58) *
Естественно проходил. Качайте здесь: http://eewiki.ru/wiki/ARMGeoSpyder1

О! Много полезного для себя нашел. За это большая спасиба.
Но меня интересовало то что пишется в файликах "IntRAM.ini" и им подобных:
Код
exec("LOAD Obj\\proj.axf INCREMENTAL"); // Download
PC = 0x08000000  // PC setup to PSRAM
// exec("g,main");

ну или в пользуемом мной варианте
CODE
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();
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.