cf7k 0 28 сентября, 2010 Опубликовано 28 сентября, 2010 · Жалоба Собственно, сабж. Основной процессорный код работает без запинки, но на некоторый этап отладки нужен скрипт инициализации DDR контроллера, штоб можно было бы грузить весь код ( с большой Data-RO секцией ) отладчиком сразу во внешнее ОЗУ. В Keil'е есть для SDR SDRAM для фитековских плат, а вот для DDR - нима. Может кто проходил подобный этап? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 28 сентября, 2010 Опубликовано 28 сентября, 2010 · Жалоба Собственно, сабж. Основной процессорный код работает без запинки, но на некоторый этап отладки нужен скрипт инициализации DDR контроллера, штоб можно было бы грузить весь код ( с большой Data-RO секцией ) отладчиком сразу во внешнее ОЗУ. В Keil'е есть для SDR SDRAM для фитековских плат, а вот для DDR - нима. Может кто проходил подобный этап? Естественно проходил. Качайте здесь: http://eewiki.ru/wiki/ARMGeoSpyder1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
cf7k 0 28 сентября, 2010 Опубликовано 28 сентября, 2010 (изменено) · Жалоба Естественно проходил. Качайте здесь: 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(); Изменено 28 сентября, 2010 пользователем IgorKossak Тэги спойлеров поубирал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться