prst 0 20 февраля, 2007 Опубликовано 20 февраля, 2007 · Жалоба авторизуй меня в Icq Огромное спасибо откликнувшимся на зов о помощи, и особенно уважаемому - Lelick. с его советами и помощью таки нашел проблемные места и... - запустил! проблемма крылась в глубинах u-boot и в инициализации тактовой частоты... (везде по чуточку) пришлось правда с нуля пересобрать u-boot-1.1.1с патчами иналожить свои патчи на езернет lxt972 вот наблюдаю заветное... [42949372.960000] Linux version 2.6.19 (root@server) (gcc version 3.4.6) .... [42949375.590000] loop: loaded (max 8 devices) [42949375.600000] LXT970: Registered new driver [42949375.610000] LXT971: Registered new driver [42949375.620000] at91_ether: probe of at91_ether failed with error -1 [42949375.640000] physmap platform flash device: 00200000 at 10000000 [42949375.650000] physmap-flash physmap-flash.0: map_probe failed [42949375.660000] udc: at91_udc version 3 May 2006 [42949375.670000] mice: PS/2 mouse device common for all mice [42949375.680000] at91_rtc at91_rtc: rtc intf: sysfs [42949375.680000] at91_rtc at91_rtc: rtc intf: proc [42949375.690000] at91_rtc at91_rtc: rtc intf: dev (254:0) [42949375.690000] at91_rtc at91_rtc: rtc core: registered at91_rtc as rtc0 [42949375.700000] AT91 Real Time Clock driver. [42949375.710000] i2c /dev entries driver [42949375.720000] at91_i2c at91_i2c: AT91 i2c bus driver. [42949375.730000] TCP cubic registered [42949375.730000] NET: Registered protocol family 1 [42949375.740000] NET: Registered protocol family 17 [42949375.750000] at91_rtc at91_rtc: setting the system clock to 1998-01-01 00:0 1:43 (883612903) [42949375.770000] No filesystem could mount root, tried: ext2 cramfs [42949375.770000] Kernel panic - not syncing: VFS: Unable to mount root fs on un known-block(1,0) Unable to mount root fs on unknown-block(1,0) - но, это уже второй шаг, создание ФС. я рад... но... только вот теперь друга проблема, из серии "назад в будущее".... на моем собранном romboot и моем u-boot-1.1.1 - ядро не стартует, а на loader(от lelick) - стартует я так понимаю что проблема вновь с инициялизацией скоростей, и видимо опять скоростей работы контроллера(а может и еще чегото иного...) Подскажите пожалуйста, где в romboot может прятаться это проблемное место? сейчас у меня вот какие значения в romboot *----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash 5: __TEST__ *----------------------------------------* Enter: 5 AT91C_BASE_PMC = FFFFFC00; AT91C_BASE_CKGR = FFFFFC20; AT91C_PLLA_VALUE = 20273E04; AT91C_PLLA_MCK = 302; может в какойто мере влияет тип памяти или его инициализация? используется 2 штуки - samsung k4s561632e-tc75, схемное включение - 32-бита... по умолчанию в romboot стояло void AT91F_InitSdram() { .... pRegister = (int *)0xFFFFFF98; // *pRegister = 0x2188c155; .... } пробовал ставить вроде как знячения для моей памяти *pRegister = 0x2a99C259; без результатно... еще раз благодарство для - Lelick, реально помог... . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jaybee 0 21 февраля, 2007 Опубликовано 21 февраля, 2007 · Жалоба а можно поделиться loader(от lelick) у меня аналогичная проблема с romboot --- те же грабли, те же симптомы :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 21 февраля, 2007 Опубликовано 21 февраля, 2007 · Жалоба B)--> (This is j.b @ Feb 21 2007, 17:30) <{POST_SNAPBACK}> а можно поделиться loader(от lelick) у меня аналогичная проблема с romboot --- те же грабли, те же симптомы :( сказал бы - что радует что не у одного меня такая беда - но радоваться не чему :) )) я уже думал что это только у меня такая ерунда творится с romboot lelick - только лоадер готовый дал(в общем то и на том ему спасибо), исходник он не дает... кстати делал тест памяти - он полностью проходит case '5': printf("...test...\r\n"); unsigned int volatile *pSDRAM; unsigned int wCount; unsigned int wRead, wWrite; // printf ("CPU %d MHz\n",GetCPUFrequencyMhz() ); // printf ("PCK %d MHz\n",GetPCKFrequencyMhz() ); while (1) { printf("-T WR- 0x00000000\n"); // pSDRAM = (unsigned int *) BASE_EBI_CS1_ADDRESS; pSDRAM = (unsigned int *) 0x20000000; // for ( wCount = 0, wWrite=0x0; wCount < 0x800000; wCount ++ ) for ( wCount = 0, wWrite=0xff; wCount < 0x4000008; wCount ++ ) { *pSDRAM = wWrite; wRead = *pSDRAM; if (wWrite != wRead ) printf ("[0x%08X] = 0x%08X ( 0x%08X,0x%08X)\n",wCount,wRead^wWrite,wRead,wWrite ); pSDRAM++; } } command = 0; break; тоесть проблема не в памяти по идее а все таки гдето в клоках.... только вот где - не пойму... аж бошка лопается уже... и помочь ни кто не может... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nvn 0 22 февраля, 2007 Опубликовано 22 февраля, 2007 · Жалоба у меня с romboot тоже были проблемы AT45DB321 не шилась, u-boot не стартовал.... после общения с Дмитрием Черкашиным, за что ему отдельно спасибо, он написал тестовый загрузчик с которым у меня все сразу заработало... см. http://www.ucrouter.ru/download.html тут и исходники есть Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexMad 0 22 февраля, 2007 Опубликовано 22 февраля, 2007 · Жалоба B)--><div class='quotetop'>(This is j.b @ Feb 21 2007, 17:30) <{POST_SNAPBACK}></div><div class='quotemain'><!--quotec--> а можно поделиться loader(от lelick) у меня аналогичная проблема с romboot --- те же грабли, те же симптомы :( сказал бы - что радует что не у одного меня такая беда - но радоваться не чему :) )) я уже думал что это только у меня такая ерунда творится с romboot lelick - только лоадер готовый дал(в общем то и на том ему спасибо), исходник он не дает... кстати делал тест памяти - он полностью проходит case '5': printf("...test...\r\n"); unsigned int volatile *pSDRAM; unsigned int wCount; unsigned int wRead, wWrite; // printf ("CPU %d MHz\n",GetCPUFrequencyMhz() ); // printf ("PCK %d MHz\n",GetPCKFrequencyMhz() ); while (1) { printf("-T WR- 0x00000000\n"); // pSDRAM = (unsigned int *) BASE_EBI_CS1_ADDRESS; pSDRAM = (unsigned int *) 0x20000000; // for ( wCount = 0, wWrite=0x0; wCount < 0x800000; wCount ++ ) for ( wCount = 0, wWrite=0xff; wCount < 0x4000008; wCount ++ ) { *pSDRAM = wWrite; wRead = *pSDRAM; if (wWrite != wRead ) printf ("[0x%08X] = 0x%08X ( 0x%08X,0x%08X)\n",wCount,wRead^wWrite,wRead,wWrite ); pSDRAM++; } } command = 0; break; тоесть проблема не в памяти по идее а все таки гдето в клоках.... только вот где - не пойму... аж бошка лопается уже... и помочь ни кто не может... Думаю, проблема именно в памяти, верней в ее инициализации, я у себя Romboot запустил только после того, как помянял настройки СДРАМ под конкретные микрухи, что у меня впаяны. COMA выложил свой загрузчик, так вот - он у меня даже не пытается чего-то делать, а я не верю, что уважаемый COMA выложил заведомо нерабочие вещи, просто проблема в том, что у всех у нас запаяны разные СДРАМ и ДатаФлешь, вот и получается, что советы одного не подходят другому. У меня ОЗУ-хи k4s641632h-tc75, флешь - at45db321c romboot P.S. флешку я также протестил случайными числами. RomBoot_Rainbow.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 22 февраля, 2007 Опубликовано 22 февраля, 2007 · Жалоба Думаю, проблема именно в памяти, верней в ее инициализации, я у себя Romboot запустил только после того, как помянял настройки СДРАМ под конкретные микрухи, что у меня впаяны. COMA выложил свой загрузчик, так вот - он у меня даже не пытается чего-то делать, а я не верю, что уважаемый COMA выложил заведомо нерабочие вещи, просто проблема в том, что у всех у нас запаяны разные СДРАМ и ДатаФлешь, вот и получается, что советы одного не подходят другому. У меня ОЗУ-хи k4s641632h-tc75, флешь - at45db321c romboot P.S. флешку я также протестил случайными числами. угу, вот теперь начитается у меня раздвоение мисли очередной раз... я предпологаю что память тут не причем, с Ваших слов получается что я гдето заблуждаюсь и такое возможно... я пытаюсь мыслить следующим образом, из увиденного загрузчита от lelick, а именно.... его загрузчик сконфигурен на иной тип памяти, и иной размер памяти, если я все верно помню с его слов, то у него используется 16М. у lelick значения регистр памяти (0xffffff90 (SDRAMC Configuration Register)) - 29912154 клоки (PMC Clock Generator PLL A Register) - 2027BE04 и заметьте, при этом - его лоадер у меня запустился, тоесть тип и размер памяти не должен так влиять... а вот тактовая(настройка клоков) - вероятно больше может повлиять... на всякий случай - у меня кварц - 18.432 данные из U-Boot-1.1.1 .... /* ARM asynchronous clock */ #define AT91C_MAIN_CLOCK 179712000 /* from 18.432 MHz crystal (18432000 / 4 * 39) */ #ifdef MASTER_CLOCK_45 /* Master clock 45Mhz */ #define AT91C_MASTER_CLOCK 44928000 /* peripheral clock (AT91C_MAIN_CLOCK / 3) */ //#else /* MASTER_CLOCK_45 */ //#ifdef MASTER_CLOCK_60 //#define AT91C_MASTER_CLOCK 59904000 /* peripheral clock (AT91C_MAIN_CLOCK / 3) */ //#else /* MASTER_CLOCK_60 */ //#error Master clock must be defined //#endif #endif .... память у меня используется - K4S561632E-TC/75 и если верить даташиту - это: 16M x 16 166MHz (CL=3) Organization Row Address Column Address 16Mx16 A0~A12 A0-A8 тоесть колонок 9 рядов 13 это - если верить даташиту, тоесть в 0xffffff90 (SDRAMC Configuration Register) надо грузить 0x2a99C259, lelick говорит, что если 2 микрухи используется то надо 0x2a99C25A - но с таким значением не грузится щяс у меня стоят такие значения регистр памяти (0xffffff90 (SDRAMC Configuration Register)) - 0x2a99C259 клоки (PMC Clock Generator PLL A Register) - 2027BE04 а вот что получаетс я при 0x2a99C25A Enter: press any key to enter bootloader Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000] Set PLLA to 180Mhz and Master clock to 60Mhz and start U-BOOT и зависает кстати, не-не Вы не подумайте что я хочу сказать, что ктото специально делает неверный код, что бы его распространять... я даже не мыслю в этом направлении... я пытаюсь решить проблему, в частности свою, но оказывается такая беда не у одного меня, и как с ней бороться - "никто не знает"... кстати собрал ваш RomBoot_Rainbow.zip и что получил, тоже самое... ## Booting image at 20007fc0 ... Image Name: Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2098432 Bytes = 2 MB Load Address: 20007fc0 Entry Point: 20008000 Verifying Checksum ... OK XIP Kernel Image ... OK Starting kernel ... AT91C_CKGR_PLLAR = 2026BE04 AT91C_CKGR_PLLBR = 10483E0E AT91C_PMC_MCKR = 302 AT91C_CKGR_MCFR = 12328 AT91C_CKGR_MOR = FF01 еще.. вот что известноиз варианта лоадера от lelick, известно что кернел говорит про тактовую при старте.. вот огрызок сркина-терминала где говорит кернел (о чем я его просил когда фиксил этот участок кода в ядре...) какую тактовую он смог определить... [42949372.960000] Linux version 2.6.19 (root@server) (gcc version 3.4.6) #14Tue Feb 20 12:46:57 EET 2007 [42949372.960000] CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=### [42949372.960000] Clocks: PLLA overclocked, 184 MHz [42949372.960000] Clocks: CPU 184 MHz, master 46 MHz, main 18.432 MHz [42949372.960000] CPU0: D VIVT write-back cacheage Name: [42949372.960000] CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 может это и есть то что я ищю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 22 февраля, 2007 Опубликовано 22 февраля, 2007 · Жалоба щяс у меня стоят такие значения регистр памяти (0xffffff90 (SDRAMC Configuration Register)) - 0x2a99C259 клоки (PMC Clock Generator PLL A Register) - 2027BE04 более того, нарыл в инете перепиську пиплов... http://lists.arm.linux.org.uk/pipermail/li...ber/024650.html и так пробовал, как они рекомендуют #define AT91C_PLLA_VALUE 0x2270BE40 тоже бестолку пока, тотже результат получается, не стартует ядро... хотя это(0x2270BE40), в пересчете все те же 0x2027BE04... вот архив с моим ромбутом... http://projects.org.ua/_files_/AT91RM9200_...19_last.tar.bz2 который не может загрузить мой кернел... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jaybee 0 22 февраля, 2007 Опубликовано 22 февраля, 2007 · Жалоба полистал исходники romboot нашел такие вот строки (dataflash.h) #define AT45DB161 0x2c #define AT45DB321 0x34 #define AT45DB642 0x3c #define AT45DB128 0x10 у нас на плате стоит AT45DB011B согласно даташиту на AT91RM9200 (стр 87) проц поддерживает эту датафлешку, но она просто не описана в рамбут, из -за этого получается проблема при программировании я правильно мыслю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 22 февраля, 2007 Опубликовано 22 февраля, 2007 · Жалоба B)--> (This is j.b @ Feb 22 2007, 15:24) <{POST_SNAPBACK}> полистал исходники romboot нашел такие вот строки (dataflash.h) #define AT45DB161 0x2c #define AT45DB321 0x34 #define AT45DB642 0x3c #define AT45DB128 0x10 у нас на плате стоит AT45DB011B согласно даташиту на AT91RM9200 (стр 87) проц поддерживает эту датафлешку, но она просто не описана в рамбут, из -за этого получается проблема при программировании я правильно мыслю? в принципе верно, если пропишеш ее код - опознает ее... только те надо ее код найти.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jaybee 0 23 февраля, 2007 Опубликовано 23 февраля, 2007 · Жалоба код взял из даташита. (это маскированые биты стаус-регистра) завтра откомпиляю.. проверим :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dron_Gus 2 23 февраля, 2007 Опубликовано 23 февраля, 2007 · Жалоба кстати делал тест памяти - он полностью проходит case '5': printf("...test...\r\n"); unsigned int volatile *pSDRAM; unsigned int wCount; unsigned int wRead, wWrite; // printf ("CPU %d MHz\n",GetCPUFrequencyMhz() ); // printf ("PCK %d MHz\n",GetPCKFrequencyMhz() ); while (1) { printf("-T WR- 0x00000000\n"); // pSDRAM = (unsigned int *) BASE_EBI_CS1_ADDRESS; pSDRAM = (unsigned int *) 0x20000000; // for ( wCount = 0, wWrite=0x0; wCount < 0x800000; wCount ++ ) for ( wCount = 0, wWrite=0xff; wCount < 0x4000008; wCount ++ ) { *pSDRAM = wWrite; wRead = *pSDRAM; if (wWrite != wRead ) printf ("[0x%08X] = 0x%08X ( 0x%08X,0x%08X)\n",wCount,wRead^wWrite,wRead,wWrite ); pSDRAM++; } } command = 0; break; Если Вы делали именно этот тест памяти, то он обсуждался в разделе отладочной платы Rainbow. И в процессе обсуждения пришли к выводу, что это тест при включенно кэше (а он, вроде,изначально включен) всегда будет проходиться за счет того, что данные будут гоняться только между процом и кэшем. По-идее он будет работать даже при отсутствии памяти, как таковой. :) Необходимо вначале делать полное заполнение, а потом полную проверку. Я выложил свой код, правда там версия с некоторыми ошибками, но он помог мне отловить глюки с памятью.По поводу Ваших МС памяти. У меня стоят такие-же, только окончание C-TC1L, это немного другие скорости. Вечером могу выложить свою инициализацию. Как раз для кварца 18.432. У меня, опять же, работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jaybee 0 28 февраля, 2007 Опубликовано 28 февраля, 2007 · Жалоба путем игр с исходниками собрал я все же ромбут, который начал показывать флешку DataFlash:AT45DB011 Nb pages: 000512 Page Size: 000264 Size=00135168 bytes Logical address: 0xC0000000 *----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash *----------------------------------------* Enter : зашивать ромбут (как я понял без проблем) Modification of Arm Vector 6 :2112015 000122 Write 10240 bytes in DataFlash [0xc0000000].@.....)...... Hit a Key!aflash: OK но при попытке залить u-boot ругается... и при сбросе платы пишет следующее: Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT подскажите куда копать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 1 марта, 2007 Опубликовано 1 марта, 2007 · Жалоба B)--> (This is j.b @ Feb 28 2007, 09:30) <{POST_SNAPBACK}> но при попытке залить u-boot ругается... и при сбросе платы пишет следующее: Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT подскажите куда копать ругается? и что пишет конкретно? дело в том, что само сообщение "Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT" - статическое, и оно ни какий информации не несет за собой(кроме той что написано). если после этой надписи засыпает - в вашем случае это означает что выполнение кода дальше не идет... возможно не верно чтото проинициализировано... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jaybee 0 1 марта, 2007 Опубликовано 1 марта, 2007 · Жалоба при загрузке u-boot происходит следующее: ATMEL LOADER VER 1.01 Feb 28 2007 09:08:29 *----------------------------------------* DataFlash:AT45DB011 Nb pages: 000512 Page Size: 000264 Size=00135168 bytes Logical address: 0xC0000000 *----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash *----------------------------------------* Enter: 1 c0008000 Download Dataflash [0xc0008000] CCCCCCCCCC Modification of Arm Vector 6 :21120d3 Write 107520 bytes in DataFlash [0xc0008000] Hit a Key!aflash: Failed у меня возникла такая мысль -- может не хватает флешки загрузчику (флешка маленькая ведь) загрузчик весит порядка 100 Кбайт, + ромбут 10 Кбайт надо посмотреть как ромбут пишет флешку.. т.е подряд все или с дырами (разделяя ромбут и ю-бут, раскладывая их в разные страницы) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexMad 0 2 марта, 2007 Опубликовано 2 марта, 2007 · Жалоба B)--> (This is j.b @ Mar 1 2007, 13:40) <{POST_SNAPBACK}> при загрузке u-boot происходит следующее: Write 107520 bytes in DataFlash [0xc0008000] Hit a Key!aflash: Failed У меня было абсолютно тоже самое, специально сделал вывод контрольных сумм из флеша и из рамы на терминал... Вобщем, оказалось, что в ромбуте СДРАМ проинициализирована не так, как нужно для моих микросхем памяти, как только поправил - сразу заработало. Рекомендую посмотреть на пост с тестированием памяти, там, правда, тоже про инициализацию не заикаются, но пока я не сделал, чтобы прошел тест ВСЕЙ рамы случайными числами, ничего не получалось. Потом просто функцию инициализации из теста подставил в ромбут и усе. //*---------------------------------------------------------------------------- //* \fn AT91F_InitSDRAM //* \brief This function performs very low level HW initialisation //*---------------------------------------------------------------------------- void AT91F_InitSDRAM() { int i; volatile int *pSDRAM = (int *)BASE_EBI_CS1_ADDRESS; //* Configure PIOC as peripheral (D16/D31) AT91F_SDRC_CfgPIO(); //* Setup MEMC to support CS1=SDRAM AT91C_BASE_EBI->EBI_CSA |= AT91C_EBI_CS1A; AT91C_BASE_EBI->EBI_CFGR = (AT91C_EBI_DBPUC & 0x00) | (AT91C_EBI_EBSEN & 0x00); //* Init SDRAM //* 1. A minimum pause of 200us is provided to precede any signal toggle /* AT91C_BASE_SDRC->SDRC_CR = AT91C_SDRC_NC_9 | AT91C_SDRC_NR_12 | AT91C_SDRC_NB_4_BANKS | AT91C_SDRC_CAS_2 | 0x100 | 0x4000 | 0x8000 | 0x880000 | 0x21000000; */ // вот здесь нужно указать количество строк , столбцов и банков, которые присутствуют в ваших //микрухах AT91C_BASE_SDRC->SDRC_CR = AT91C_SDRC_NC_8 | AT91C_SDRC_NR_12 | AT91C_SDRC_NB_2_BANKS | AT91C_SDRC_CAS_2 | 0x100 | 0x4000 | 0x8000 | 0x880000 | 0x21000000; //* 2. A Precharge All command is issued to the SDRAM AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_PRCGALL_CMD; *pSDRAM = 0; //* 3. Eight Auto-refresh are provided AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_RFSH_CMD; for(i=0;i<8;i++) *pSDRAM = 0; //* 4. A mode register cycle is issued to program the SDRAM parameters AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_LMR_CMD; *(pSDRAM+0x80) = 0; //* 5. Write refresh rate into SDRAMC refresh timer COUNT register AT91C_BASE_SDRC->SDRC_TR = (AT91C_SDRC_COUNT & 0x2E0); *pSDRAM = 0; //* 6. A Normal Mode Command is provided, 3 clocks after tMRD is set AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_NORMAL_CMD; *pSDRAM = 0; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться