zhenekan 0 3 апреля, 2010 Опубликовано 3 апреля, 2010 (изменено) · Жалоба Доброго времени суток! Помогите пожалуйста - пытаюсь запустить RedBoot (ROM Little Endian) на плате с процессором ixp465. загрузчик прошиваю во флеш и он стартует при включении (ресете) платы Процесс загрузки останавливается на инициализации MMU. (возможно из-за памяти) На плате имеется 3 микросхемы памяти ddr Micron MT46V16M16BG-5B:F третья из них для ECC всего памяти 64mb (из 2 микросхем по 32 мб) - ECC пока решил отключить чтоб не мешала тайминги настраивал по даташиту на микросхемы: Tras = 8 (55/7.5) Trp = 2 (15/7.5) Tpcd = 2 (15/7.5) Trfc = 10 (70/7.5) Trc = 8 (55/7.5) Twr = 2 (15/7.5) Twtr = 2 CAS latency = 2.5 соотвественно из ixp465.h #define SDRAM_SIZE 0x04000000 // 64MB // dlya 64 mb operativki #define SDRAM_BANK64M (0x2) // 64mb size #define IXDP465_SBR0_INIT (DDR_SBR_256Mx16 | SDRAM_BANK64M) // 0x80000002 #define IXDP465_SBR1_INIT (IXDP465_SBR0_INIT) // 0x80000002 (from datasheet) перед записью в регистры некоторые нужно изменить немного (согласно даташиту на процессор) #define IXDP465_SDCR0_INIT \ (DDR_SDCR0_TRAS(7) | DDR_SDCR0_TRP(1) | DDR_SDCR0_TRCD(1) | DDR_SDCR0_TEDP(2) | \ DDR_SDCR0_TWL(0) | DDR_SDCR0_CAS_2_5 | DDR_SDCR0_DDR_I | DDR_SDCR0_BUS32) #define IXDP465_SDCR1_INIT \ (DDR_SDCR1_TRTCMD(2) | DDR_SDCR1_TWTCMD(5) | DDR_SDCR1_TRTW(6) | \ DDR_SDCR1_TRFC(9) | DDR_SDCR1_TRC(7) | DDR_SDCR1_TWTRD(5)) далее сама настройка из hal_platform_setup.h // Setup SDRAM controller ldr r0, =IXP_DDR_CFG_BASE1 ldr r1, =IXDP465_SDCR0_INIT str r1, [r0, #IXP_DDR_SDCR0] //set timings for chip1 ldr r1, =IXDP465_SDCR1_INIT str r1, [r0, #IXP_DDR_SDCR1] //set timings for chip2 mov r1, #SDRAM_PHYS_BASE str r1, [r0, #IXP_DDR_SDBR] // set memory start address in register SDBR ldr r1, [r0, #IXP_DDR_SDBR] // readback ldr r1, =IXDP465_SBR0_INIT str r1, [r0, #IXP_DDR_SBR0] // set bank 0 params in SBR0 ldr r1, [r0, #IXP_DDR_SBR0] ldr r1, =IXDP465_SBR1_INIT str r1, [r0, #IXP_DDR_SBR1] // set bank 1 params in SBR1 ldr r1, [r0, #IXP_DDR_SBR1] // Step 5. Disable refresh cycles mov r1, #0 str r1, [r0, #IXP_DDR_RFR] // Step 6. Send NOP command mov r1, #DDR_SDIR_NOP str r1, [r0, #IXP_DDR_SDIR] DELAY 0x100000, r1 // Step 7. Issue precharge-all command to close all open banks mov r1, #DDR_SDIR_PRECHARGE_ALL str r1, [r0, #IXP_DDR_SDIR] DELAY 0x100000, r1 // Step 8. Issue extended mode register set to enable dll mov r1, #DDR_SDIR_EMRS_DLL_ENABLE str r1, [r0, #IXP_DDR_SDIR] DELAY 0x100000, r1 // Step 9. Issue mode register set w/ DLL reset mov r1, #DDR_SDIR_MODE_SET_RESET str r1, [r0, #IXP_DDR_SDIR] DELAY 0x100000, r1 // Step 10. Issue precharge-all command mov r1, #DDR_SDIR_PRECHARGE_ALL str r1, [r0, #IXP_DDR_SDIR] DELAY 0x100000, r1 // Step 11. provide 2 auto-refresh cycles mov r1, #DDR_SDIR_AUTO_REFRESH mov r2, #2 1: str r1, [r0, #IXP_DDR_SDIR] ldr r3, [r0, #IXP_DDR_SDIR] DELAY 0x800, r3 subs r2, r2, #1 bne 1b // Step 12. Issue mode register set w/o DLL reset mov r1, #DDR_SDIR_MODE_SET_NO_RESET str r1, [r0, #IXP_DDR_SDIR] DELAY 0x100000, r1 // start normal operation mov r1, #0xf str r1, [r0, #IXP_DDR_SDIR] DELAY 0x10000, r1 // Step 14. Set refresh val ldr r1, =IXDP465_SDRAM_REFRESH_CNT // Enable byte swapping control via page table P bit. ldr r2, =IXP425_EXP_CFG_BASE ldr r1, [r2, #IXP425_EXP_CNFG1] orr r1, r1, #EXP_CNFG1_BYTE_SWAP_EN str r1, [r2, #IXP425_EXP_CNFG1] str r1, [r0, #IXP_DDR_RFR] DELAY 0x100000, r1 Размерность настроил вроде правильно Написал тест памяти - пробую писать (например 0xF5 ) во всю память а затем считывать и при чтении из некоторых ячеек возвращается то 0xF5 то 0x900000F5 то 0x4E0000F5 :laughing: Может кто работал с RedBoot или этим процессором или этой памятью(или похожей)? Пробовал разные настройки памяти и не помогает... :crying: может все-таки не так настроил? :rolleyes: datasheet sdram http://ifolder.ru/17116375 Изменено 3 апреля, 2010 пользователем zhenekan Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zhenekan 0 10 апреля, 2010 Опубликовано 10 апреля, 2010 · Жалоба Если точно не знаете, может кто-нибудь имел дело с подобным? необязательно на этом процессоре Проблема может быть из-за железа? Или разводки? Уже много настроек перепробовал результата ноль... Разве что при записи единиц нормально было - а далее при записи осмысленных данных ошибки полезли... ((( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться