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

 
 
 
Reply to this topicStart new topic
> EA lpc3250 Keil DDR init script, хочу разжиться готовеньким
cf7k
сообщение Sep 28 2010, 16:56
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 14-03-06
Из: Санкт-Петербург
Пользователь №: 15 227



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

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

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

Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 28 2010, 16:58
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



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

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

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


Естественно проходил. Качайте здесь: http://eewiki.ru/wiki/ARMGeoSpyder1
Go to the top of the page
 
+Quote Post
cf7k
сообщение Sep 28 2010, 17:23
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 14-03-06
Из: Санкт-Петербург
Пользователь №: 15 227



Цитата(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();


Сообщение отредактировал IgorKossak - Sep 28 2010, 17:32
Причина редактирования: Тэги спойлеров поубирал
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:14
Рейтинг@Mail.ru


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