|
AT91RM9200 - мистика? SPI? или romboot.bin?, задачка не для слабонервных.... |
|
|
|
Jan 8 2007, 18:02
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Здравия желаю! уже несколько дней мучительная попытка запустить камешек 9200 и плату к нему Люди вот такая проблемма, помоги решить ее плз собрали макетную платку ( http://projects.org.ua/project/arm/9200/ ) пытаемся загрузить в нее romboot.bin ( следуем как написано в статье - http://heavy-online.ru/arm-linux/ ) и сталкиваемся с мистическим поведением контроллера, а именно: после того, как прицепились гипертерминалом - отсылаем по xmodem файлик - romboot.binон отсылается и появляется сообщение CCCCCCCCCCCCCCCCC AT91F_LowLevelInit(): Debug channel initialized press any key to enter bootloader
ATMEL LOADER VER 1.01 May 3 2006 15:21:06 *----------------------------------------* *----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash *----------------------------------------* Enter: тут вроде все верно говорим Enter: 1 c0000000 Download Dataflash [0xc0000000] CCCCCCCCCCCCCCCCCC
отсылаем файл (как требует статья) и здесь начинается самое интересное: Modification of Arm Vector 6 :34340015
Write 10240 bytes in DataFlash [0xc0000000] -F- Data Abort detectedтоесть, казалось бы, по какой-то неведомой причине не пишется в DataFlash
Так, берем осциллограф и идем далее... проделываем тоже самое параллельно наблюдая осцилом за SPCK, MOSI и NPCS0и к нашему удивлению - на SPCK, MOSI и NPCS0 нет изменения логического уровня и данных вообще!!!!! аппартно все верно, все прозвонено тестером - с точки зрения железа все корректно, проверяли несколько раз! это настараживает и мы идем читать исходники от romboot-evm9200 (SPI 1:1 + схема почти такая же) только микруха у нас - AT45DB642 в исходнике разобрались - вроде все должно инициализироваться и SPI обязан работать...! фух однако SPI - НЕ РАБОТАЕТ... Люди - у кого есть какие мысли и идеи на этот счет? потому что реально уже отпало понимание происходяших глюков.... HELP PLZ !!!
--------------------
|
|
|
|
10 страниц
1 2 3 > »
|
 |
Ответов
(1 - 99)
|
Jan 8 2007, 18:44
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 8 2007, 17:28)  На висящем процессоре SPI работать и не должен - обратите внимание на строку -F- Data Abort detected. Нужно разобраться, почему возникает Data Abort. Так данные то реально не поступают на пины SPI вообще, как будто не проинициализирован вообще SPI тоесть состояние пинов не изменно... а что значит - "На висящем процессоре" ??? по терминалу то он как-то отвечает 8)))) Вы думанете что процессор по какойто причине завис? или я неверно Вас понял?
--------------------
|
|
|
|
|
Jan 8 2007, 18:57
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(PrSt @ Jan 8 2007, 18:44)  а что значит - "На висящем процессоре" ??? по терминалу то он как-то отвечает 8)))) Вы думанете что процессор по какойто причине завис? или я неверно Вас понял? Я думаю, что случился Data Abort. А судя по тексту init.cpp - Код void AT91F_DataAbort() { AT91F_DBGU_Printk("-F- Data Abort detected\n\r"); while (1); } - процессор должен намертво встать на строке while (1).
|
|
|
|
|
Jan 9 2007, 00:20
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 8 2007, 17:57)  Цитата(PrSt @ Jan 8 2007, 18:44)  а что значит - "На висящем процессоре" ??? по терминалу то он как-то отвечает 8)))) Вы думанете что процессор по какойто причине завис? или я неверно Вас понял?
Я думаю, что случился Data Abort. А судя по тексту init.cpp - Код void AT91F_DataAbort() { AT91F_DBGU_Printk("-F- Data Abort detected\n\r"); while (1); } - процессор должен намертво встать на строке while (1). верно, вот когда он встанет на while(1) вопроса нет - но ведь он оказывается здесь и заходит в процедуру _DataAbort() после какой-то проблемы.... и видимо по той причине что где-то какие-то проблемы, а именно как я уже писал реально"физически" не работает SPI как перифирия вообще.... по этой причине он и попадает в эту процедуру... и это логично... но почему нет данных на SPI? ведь и инициализация проведена была корректно (я так подозреваю что всетаки корректно, если верить коду...) и потом попытка отослать данные по SPI, следовательно на пинах должен был осциллографом увидеть клоки и данные, а там девственная тишина как в пещере... Цитата(COMA @ Jan 8 2007, 19:26)  Попробуйте этот загрузчик. Писать по адресу 0x00000000, т. е. 1 00000000 Правда он под 16 МГц. ок, спасибо большое - попробую (кстати - а исходник можно тоже посмотреть - что хоть шить буду?) перепаять кварц с 18.432 на 16.0 не проблема, тем более если верить даташиту, то можно и не перепаивать - должен стартонуть...
--------------------
|
|
|
|
|
Jan 9 2007, 00:45
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(PrSt @ Jan 9 2007, 00:20)  верно, вот когда он встанет на while(1) вопроса нет - но ведь он оказывается здесь и заходит в процедуру _DataAbort() после какой-то проблемы.... и видимо по той причине что где-то какие-то проблемы, а именно как я уже писал реально"физически" не работает SPI как перифирия вообще.... по этой причине он и попадает в эту процедуру... и это логично... Вы путаете причину и следствие. "Физически" SPI работает, просто до его применения дело не доходит из-за вылета в Data Abort. Причиной этому может служить некорректное обращение к памяти - неверный адрес или ошибка выравнивания. Сообщение терминала: Write 10240 bytes in DataFlash [0xc0000000] -F- Data Abort detectedКод из main.cpp: Код printf("\n\rWrite %d bytes in DataFlash [0x%x]\n\r",SizeToDownload, DeviceAddress); crc1 = 0; pAT91->CRC32((const unsigned char *)AddressToDownload, SizeToDownload , &crc1); // write the dataflash write_dataflash (DeviceAddress, AddressToDownload, SizeToDownload); Возможно, ошибка возникает при выполнении CRC32. Соответствующую диагностику добавить проблемы не составит.
|
|
|
|
|
Jan 9 2007, 10:27
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(COMA @ Jan 8 2007, 19:26)  Попробуйте этот загрузчик. Писать по адресу 0x00000000, т. е. 1 00000000 Правда он под 16 МГц. загрузил по xmodem - не работает (полная тишина) перепаял кварц на 16.0, загрузил по xmodem - тоже полная тишина тоесть, " C" прекратили бежать вообще
--------------------
|
|
|
|
|
Jan 9 2007, 10:48
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 8 2007, 23:45)  ... Вы путаете причину и следствие. "Физически" SPI работает, просто до его применения дело не доходит из-за вылета в Data Abort. Причиной этому может служить некорректное обращение к памяти - неверный адрес или ошибка выравнивания. Сообщение терминала: Write 10240 bytes in DataFlash [0xc0000000] -F- Data Abort detectedКод из main.cpp: Код printf("\n\rWrite %d bytes in DataFlash [0x%x]\n\r",SizeToDownload, DeviceAddress); crc1 = 0; pAT91->CRC32((const unsigned char *)AddressToDownload, SizeToDownload , &crc1); // write the dataflash write_dataflash (DeviceAddress, AddressToDownload, SizeToDownload); Возможно, ошибка возникает при выполнении CRC32. Соответствующую диагностику добавить проблемы не составит. Вы по ходу правы, если верить огрызку кода... этого я не заметил честно говоря... так...веселье наступает... тогда, вопросиком плавно переходим к новому вопросику связанным с корректной работой схемы... а именно с работой с памятью... вопрос по памяти: используется SAMSUNG K4S561632E-IC75 + абсолютно на всех цепях от МК до RAM стоят резюки на 33 Ом... - могут ли они както влиять? или может проще Вам показать схему, на эту плату, что бы посмотреть правильно ли мы память вообще прицепили к МК?
--------------------
|
|
|
|
|
Jan 9 2007, 12:07
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(PrSt @ Jan 9 2007, 10:48)  Вы по ходу правы, если верить огрызку кода... этого я не заметил честно говоря... так...веселье наступает... тогда, вопросиком плавно переходим к новому вопросику связанным с корректной работой схемы... а именно с работой с памятью... Стоп! Причем здесь корректная работа памяти? С ней, скорее всего, все в порядке. Data Abort возникает из-за некорректного обращения к памяти, а не по причине неисправности оной. У AT91RM9200 есть MC Abort Status Register и MC Abort Address Register - выведите их значения printf'ом в DataAbort(), и станет ясно, где происходит глюк.
|
|
|
|
|
Jan 9 2007, 16:52
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 9 2007, 11:07)  Стоп! Причем здесь корректная работа памяти? С ней, скорее всего, все в порядке. Data Abort возникает из-за некорректного обращения к памяти, а не по причине неисправности оной. У AT91RM9200 есть MC Abort Status Register и MC Abort Address Register - выведите их значения printf'ом в DataAbort(), и станет ясно, где происходит глюк. собрать из линукса и gcc - бинарик для прошивки получилось.... щяс пробую сделать проверку по Вашему совету... я так понимаю Вы говорите про это? The full 32-bit wide abort address is saved in the Abort Address Status Register (MC_AASR). Parameters of the access are saved in the Abort Status Register (MC_ASR) and include: • the size of the request (ABTSZ field) • the type of the access, whether it is a data read or write or a code fetch (ABTTYP field) • whether the access is due to accessing an undefined address (UNDADD bit) or a misaligned address (MISADD bit) • the source of the access leading to the last abort (MST0, MST1, MST2 and MST3 bits) • whether or not an abort occurred for each master since the last read of the register (SVMST0, SVMST1, SVMST2 and SVMST3 bits) except if it is traced in the MST bits.
вот что я сделал //*---------------------------------------------------------------------------- //* \fn AT91F_DataAbort //* \brief This function reports an Abort //*---------------------------------------------------------------------------- void AT91F_DataAbort() { int i; AT91F_DBGU_Printk("-F- Data Abort detected\n\r"); AT91F_DBGU_Printk("-F- LOOP... \n\r"); // Abort Address Status Register (MC_AASR) // Abort Status Register (MC_ASR) //int *iii; //iii=(int *AT91C_MC_ASR); printf("\n --------- ASR --------->: %X \n\r", *AT91C_MC_ASR); //iii=(int *AT91C_MC_AASR); printf("\n --------- AASR --------->: %X \n\r", *AT91C_MC_AASR);
while (1); }
и вот что получилось Enter: 1 c0000000 Download Dataflash [0xc0000000] CCCCC Modification of Arm Vector 6 :34340015
Write 10368 bytes in DataFlash [0xc0000000]
--------- ASR --------->: 10201
--------- AASR --------->: EA000438 -F- Data Abort detected -F- LOOP...судя по всему за аддрес EA000438 отвечает этот кусок кода из lib_AT91RM9200.h //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_SetExceptionVector //* \brief Configure vector handler //*---------------------------------------------------------------------------- __inline unsigned int AT91F_AIC_SetExceptionVector ( unsigned int *pVector, // \arg pointer to the AIC registers void (*Handler) () ) // \arg Interrupt Handler { unsigned int oldVector = *pVector;
if ((unsigned int) Handler == (unsigned int) AT91C_AIC_BRANCH_OPCODE) *pVector = (unsigned int) AT91C_AIC_BRANCH_OPCODE; else *pVector = (((((unsigned int) Handler) - ((unsigned int) pVector) - 0x8) >> 2) & 0x00FFFFFF) | 0xEA000000;
return oldVector; }
что это может значит?
--------------------
|
|
|
|
|
Jan 10 2007, 11:57
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(PrSt @ Jan 9 2007, 15:52)  что это может значит? Кстати по ходу дела CRC32 не учавствует в этом всем... дело в том что если верить даташиту страницы 17, то по этому аддресу доступ вообще - undefinedследовательно - ерунда какаято...... кто-нибудь что-нибудь может дельное посоветовать? крыша едет...
--------------------
|
|
|
|
|
Jan 10 2007, 13:18
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(PrSt @ Jan 10 2007, 11:57)  дело в том что если верить даташиту страницы 17, то по этому аддресу доступ вообще - undefined Могу только сказать, что адрес больше похож на код команды (b +0x10e8). Цитата(PrSt @ Jan 10 2007, 11:57)  кто-нибудь что-нибудь может дельное посоветовать? Для начала следует выяснить, где именно вызывается исключение. Для этого нужно прочитать значение LR_abt, только до этого нужно выяснить, не портится ли он, что в C-программе более чем вероятно.
|
|
|
|
|
Jan 10 2007, 15:40
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 10 2007, 12:18)  Могу только сказать, что адрес больше похож на код команды (b +0x10e8).
Для начала следует выяснить, где именно вызывается исключение. Для этого нужно прочитать значение LR_abt, только до этого нужно выяснить, не портится ли он, что в C-программе более чем вероятно. а как это выснить? и что за LR_abt? я так понимаю если схема правильная, то и romboot должен корректно вести себя и работать, ведь у людей же работает он.... вот тот romboot который я пытаюсь загрузить... http://heavy-online.ru/arm-linux/files/pac...oot-evm9200.tgz
--------------------
|
|
|
|
|
Jan 10 2007, 15:49
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(PrSt @ Jan 10 2007, 15:40)  а как это выснить? Посмотреть генерируемый компилятором код. Цитата(PrSt @ Jan 10 2007, 15:40)  и что за LR_abt? Link Register (R14) процессора для режима Abort. Придется написать свой обработчик Data Abort, и написать на ассемблере, по крайней мере, частично.
|
|
|
|
|
Jan 10 2007, 17:25
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 10 2007, 14:49)  Посмотреть генерируемый компилятором код.
Link Register (R14) процессора для режима Abort.
Придется написать свой обработчик Data Abort, и написать на ассемблере, по крайней мере, частично. в асмовсвом коде я непонял где искать... на всякий случай, в прикрепленном файле асмовкский код этого файлика, если это не испугнет ~100К размер его... оброботчик есть в файле cstartup.S /*- Set up Abort Mode and set Abort Mode Stack*/ msr CPSR_c, #ARM_MODE_ABORT | I_BIT | F_BIT mov r13, r0 /* Init stack Abort*/ sub r0, r0, #ABT_STACK_SIZE
--------------------
|
|
|
|
|
Jan 10 2007, 18:16
|

Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394

|
Цитата(PrSt @ Jan 10 2007, 10:57)  Цитата(PrSt @ Jan 9 2007, 15:52)  что это может значит? Кстати по ходу дела CRC32 не учавствует в этом всем... дело в том что если верить даташиту страницы 17, то по этому аддресу доступ вообще - undefinedследовательно - ерунда какаято...... кто-нибудь что-нибудь может дельное посоветовать? крыша едет... JTAGом пошагово пробежаться по этому куску, и все станет ясно. А так гадать можно очень долго.
|
|
|
|
|
Jan 10 2007, 18:22
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(PrSt @ Jan 10 2007, 17:25)  в асмовсвом коде я непонял где искать... на всякий случай, в прикрепленном файле асмовкский код этого файлика, если это не испугнет ~100К размер его... Посмотрел. В функции AT91F_DataAbort() LR должен остаться целым. Его можно попробовать вытащить через inline asm - это <адрес инструкции, вызвавшей Abort> + 0x08. Цитата(PrSt @ Jan 10 2007, 17:25)  оброботчик есть в файле cstartup.S Это не обработчик, а установка стека режима Abort.
|
|
|
|
|
Jan 10 2007, 18:32
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(AlexBoy @ Jan 10 2007, 17:16)  JTAGом пошагово пробежаться по этому куску, и все станет ясно. А так гадать можно очень долго. JTAG спаяем (WIGGLER) - а каким инструментарием "пошагово пробежаться по этому куску"? я не делат этого никогда, не знаю как... в инете конечно посмотрю... но может уже есть правельное отканаттое решение?
--------------------
|
|
|
|
|
Jan 10 2007, 20:09
|

Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394

|
Цитата(PrSt @ Jan 10 2007, 17:32)  Цитата(AlexBoy @ Jan 10 2007, 17:16)  JTAGом пошагово пробежаться по этому куску, и все станет ясно. А так гадать можно очень долго. JTAG спаяем (WIGGLER) - а каким инструментарием "пошагово пробежаться по этому куску"? я не делат этого никогда, не знаю как... в инете конечно посмотрю... но может уже есть правельное отканаттое решение? Если в GCC то на сайте Macraigor подробно написано как отлаживаться через вигглер. www.macraigor.com/gnu_faq.htm Я пишу в RVDS 2.2 и отлаживаюсь встроенным отладчиком через H-JTAG.
|
|
|
|
|
Jan 11 2007, 12:09
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 10 2007, 17:22)  Посмотрел. В функции AT91F_DataAbort() LR должен остаться целым. Его можно попробовать вытащить через inline asm - это <адрес инструкции, вызвавшей Abort> + 0x08. Вы были правы полностью: - вспоминается ваш пост: Стоп! Причем здесь корректная работа памяти? С ней, скорее всего, все в порядке.Data Abort возникает из-за некорректного обращения к памяти, а не по причине неисправности оной. с ней таки действительно все в порядке... я это проверил, вставил кусок кода для проверки памяти с топика - http://electronix.ru/forum/index.php?showtopic=20153 Подскажите пожалуста а как " можно попробовать вытащить через inline asm" ? и узнать " <адрес инструкции, вызвавшей Abort>" ?
--------------------
|
|
|
|
|
Jan 11 2007, 12:23
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(PrSt @ Jan 11 2007, 12:09)  Подскажите пожалуста а как "можно попробовать вытащить через inline asm" ? и узнать "<адрес инструкции, вызвавшей Abort>" ? Не знаю, как в GCC, нужно посмотреть документацию Для ADS/RVDS это будет выглядеть так: Код void AT91F_DataAbort() { int i; AT91F_DBGU_Printk("-F- Data Abort detected\n\r"); AT91F_DBGU_Printk("-F- LOOP... \n\r"); // Abort Address Status Register (MC_AASR) // Abort Status Register (MC_ASR) //int *iii; //iii=(int *AT91C_MC_ASR); printf("\n --------- ASR --------->: %X \n\r", *AT91C_MC_ASR); //iii=(int *AT91C_MC_AASR); printf("\n --------- AASR --------->: %X \n\r", *AT91C_MC_AASR);
__asm { mov i, R14 } printf("\n --------- Address --------->: %X \n\r", (i - 0x08));
while (1); }
|
|
|
|
|
Jan 12 2007, 17:38
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 11 2007, 11:23)  Честно говоря, как это сделать на GCC я так и не понял пытался это делать читая - http://www.ethernut.de/en/documents/arm-inline-asm.htmlи все одно не получается я не могу понять как ввставить такое, как асм вставку...
--------------------
|
|
|
|
|
Jan 12 2007, 18:06
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(PrSt @ Jan 12 2007, 17:38)  Честно говоря, как это сделать на GCC я так и не понял пытался это делать читая - http://www.ethernut.de/en/documents/arm-inline-asm.htmlи все одно не получается я не могу понять как ввставить такое, как асм вставку... Должно быть что-то типа: Код asm volatile("mov %0, r14" : "=r" (i) : ); Только листинг надо потом проверить обязательно.
|
|
|
|
|
Jan 12 2007, 18:44
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 12 2007, 17:06)  Код asm volatile("mov %0, r14" : "=r" (i) : ); Только листинг надо потом проверить обязательно. оказуется так просто? вот что в итоге получается... AT91F_LowLevelInit(): Debug channel initialized AT91F_DataflashInit AT91F_SpiInit PIOA->PIO_ABSR - 0 PIOA->PIO_PSR - 3FFFFF80 PMC->PMC_PCSR - 2000 SPI->SPI_SR - 100F2 SPI->SPI_MR - E0019 dfcode - 0 press any key to enter bootloader
*----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash 5: ...test... *----------------------------------------* Enter: 1 c0000000 Download Dataflash [0xc0000000] CCCCC Modification of Arm Vector 6 :34340017
Write 11392 bytes in DataFlash [0xc0000000] write_dataflash AT91F_DataflashSelect novalid -F- Data Abort detected -F- LOOP...
--------- ASR --------->: 10201
--------- AASR --------->: EA000490
--------- Address --------->: 11C8тоесть - 11C8 если я верно понял - это адрес из пространства - Internal Memories на еще и диапазона 0х0..0х100000 ( Boot Memory) так а что это теперь может нам сообщить?
--------------------
|
|
|
|
|
Jan 12 2007, 19:12
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 12 2007, 18:00)  Теперь смотрите map-файл линкера - к какой процедуре относится этот адрес. В асм-листинге все в порядке с R14? Еще не грех прочитать значение кода команды по полученному адресу. если я все правильно вижу - такого файла нет (map-файл линкера) root@server:romboot-evm9200_dmb# ll итого 435 drwxr-xr-x 6 dmb dmb 1320 2007-01-12 17:35 ./ drwxr-sr-x 5 root staff 280 2007-01-11 09:47 ../ -rw-r--r-- 1 root root 732 2007-01-12 17:35 asm_isr.o -rw-rw-rw- 1 dmb dmb 2058 2007-01-09 11:37 asm_isr.S -rw-rw-rw- 1 dmb dmb 23776 2007-01-12 17:15 at45.cpp -rw-r--r-- 1 root root 4792 2007-01-12 17:35 at45.o -rw-rw-rw- 1 dmb dmb 3711 2007-01-09 16:09 com.cpp -rw-rw-rw- 1 dmb dmb 3252 2007-01-09 11:37 com.h -rw-r--r-- 1 root root 2488 2007-01-12 17:35 com.o -rwxr-xr-x 1 dmb dmb 835 2007-01-09 17:34 compile* -rw-r--r-- 1 root root 1208 2007-01-12 17:35 cstartup_ram.o -rw-rw-rw- 1 dmb dmb 5272 2007-01-09 11:37 cstartup_ram.S -rw-rw-rw- 1 dmb dmb 7556 2007-01-12 17:15 dataflash.cpp -rw-rw-rw- 1 dmb dmb 7174 2007-01-12 16:06 dataflash.h -rw-r--r-- 1 root root 3940 2007-01-12 17:35 dataflash.o -rw-rw-rw- 1 dmb dmb 984 2007-01-09 16:09 div0.c -rw-r--r-- 1 root root 648 2007-01-12 17:35 div0.o -rw-rw-rw- 1 dmb dmb 348 2007-01-09 16:10 elf32-littlearm.lds -rw-rw-rw- 1 dmb dmb 27065 2007-01-09 11:37 embedded_services.h -rwxr-xr-x 1 dmb dmb 192 2007-01-09 11:37 env.sh* drwxrwxrwx 2 root root 112 2007-01-11 10:35 exchange/ drwxr-xr-x 2 dmb dmb 144 2007-01-10 10:08 include/ -rwxrw-rw- 1 root root 8429 2007-01-12 17:35 init.cpp* -rw-r--r-- 1 root root 2944 2007-01-12 17:35 init.o -rw-r--r-- 1 root root 508 2007-01-12 17:35 jump.o -rw-rw-rw- 1 dmb dmb 39 2007-01-09 11:37 jump.S -rw-rw-rw- 1 dmb dmb 15700 2007-01-12 16:10 main.cpp -rw-rw-rw- 1 dmb dmb 1352 2007-01-09 16:10 main.h -rw-r--r-- 1 root root 6580 2007-01-12 17:35 main.o lrwxrwxrwx 1 root root 13 2007-01-11 10:32 Makefile -> Makefile_last -rw-rw-rw- 1 dmb dmb 1044 2007-01-12 12:42 Makefile_last drwxr-xr-x 2 root root 1288 2007-01-11 10:30 old/ drwxr-xr-x 3 root root 1280 2007-01-11 10:32 old2/ -rw-r--r-- 1 root root 117345 2007-01-11 13:18 ROMBOOT.asm -rwxr-xr-x 1 root root 11308 2007-01-12 17:35 romboot.bin* -rwxrw-rw- 1 root root 10116 2007-01-09 11:37 romboot.bin.orig* -rw-rw-rw- 1 root root 44010 2007-01-12 17:35 romboot.lss -rwxr-xr-x 1 root root 18007 2007-01-12 17:35 romboot.out* -rw-rw-rw- 1 dmb dmb 5276 2007-01-09 11:37 stdio.cpp -rw-rw-rw- 1 dmb dmb 643 2007-01-09 11:37 stdio.h -rw-r--r-- 1 root root 3776 2007-01-12 17:35 stdio.o -rw-r--r-- 1 root root 900 2007-01-12 17:35 _udivsi3.o -rw-rw-rw- 1 dmb dmb 2219 2004-07-04 11:49 _udivsi3.S -rw-r--r-- 1 root root 892 2007-01-12 17:35 _umodsi3.o -rw-rw-rw- 1 dmb dmb 2767 2004-07-04 11:49 _umodsi3.S значение... посмотрите пожалуста(я не знаю что там искать) в приклепленном файле асмовый код...
--------------------
|
|
|
|
|
Jan 12 2007, 20:49
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(PrSt @ Jan 12 2007, 19:12)  если я все правильно вижу - такого файла нет (map-файл линкера) Значит линкер нужно попросить - посмотрите документицию. Цитата(PrSt @ Jan 12 2007, 19:12)  значение... посмотрите пожалуста(я не знаю что там искать) в приклепленном файле асмовый код... Посмотрел, могу сказать только, что LR не поврежден. Значение посмотрите тем же printf'ом: *(unsigned int*)i.
|
|
|
|
|
Jan 15 2007, 00:31
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 12 2007, 19:49)  Значит линкер нужно попросить - посмотрите документицию.
Посмотрел, могу сказать только, что LR не поврежден. Значение посмотрите тем же printf'ом: *(unsigned int*)i. Благодарю Вас... >"Значит линкер нужно попросить" - не совсем понятно, честно говоря что Вы имеете ввиду, а где его можно попросить? кстати, elf32-littlearm.lds - это не линкер скрипт? Кстати, раз проблема близка к проблеме с стеком... как можно проверить вообще стек? как узнать что должно быть и что получаем...? Видимо если - DataAbort - то \то очень вероятно что чтото или с памятью или с стеком... Как выяснилось память SDRAM тут не причем... Мне вообще не ясно что может быть за проблемма??? По следующей логике пытаюсь судить ---> Ведь, romboot этот стандартный(причем написан фирмой ATMEL если я правильно все понимаю) и у других людей этот загрузчик работает видимо корректно, почемуже не работает у нас? Схема то отличается только подключением переферии - ETHRNET и т д Я конечно извеняюсь, такого уровня проект делаю первый раз и подобная проблемма просто как скала перед носом... руки опускать не хочу и не могу себе позволить, а решить нада задачку... Вот и прошу Вас помочь...
--------------------
|
|
|
|
|
Jan 15 2007, 19:13
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
А вам кажется подозрительной фраза:
Modification of Arm Vector 6 :34340017
вообще-nо для AT45DB642 должно быть 0841a017 (см стр. 87 на at91rm9200 "Structure of arm vector 6")
|
|
|
|
|
Jan 15 2007, 22:33
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 15 2007, 18:22)  Совершенно верно, но к проблеме отношения не имеет Только не обязательно 0841a017, правильнее 0841a0xx. Можно Вас попросить изложить свою мысль по этому поводу? Хотелось бы понять что же все таки происходит и куда копать... Вы довольно метко подмечаете особенности вопроса! а то, уже, есть идея начинать пробовать писать свой загрузчик... неделю мыкаюсь и без результата... Правда побаиваюсь что после написания своего загрузчика тоже можем натолкнуться на такой же "глюк, эффект"...
--------------------
|
|
|
|
|
Jan 16 2007, 00:18
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Попробую кратко изложить свои мысли по поводу Вашей проблемы. Итак, исключение DataAbort возникает из-за обращения инструкции, находящейся по адресу 0x11C8, к несуществующей памяти по адресу 0xEA000490. Само значение адреса говорит о том, что базовый регистр, использующийся при обращении, был загружен неправильно, и в результате вместо адреса в нем оказался фрагмент кода (b +0x10e8). Сейчас нужно установить, к какой именно части кода относится инструкция, расположенная по адресу 0x11C8. Это можно заставить сделать линкер, но у меня, к сожалению, нет сейчас под рукой документации. Добавьте в обработчик AT91F_DataAbort() еще одну строку: Код printf("\n --------- Address --------->: %X \n\r", (i - 0x08)); printf("\n --------- Opcode --------->: %X \n\r", *(volatile unsigned int*)(i - 0x08)); Возможно, это поможет обойтись без map-файла, но все же он крайне желателен.
|
|
|
|
|
Jan 16 2007, 10:15
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 15 2007, 23:18)  Попробую кратко изложить свои мысли по поводу Вашей проблемы. Итак, исключение DataAbort возникает из-за обращения инструкции, находящейся по адресу 0x11C8, к несуществующей памяти по адресу 0xEA000490. Само значение адреса говорит о том, что базовый регистр, использующийся при обращении, был загружен неправильно, и в результате вместо адреса в нем оказался фрагмент кода (b +0x10e8). Сейчас нужно установить, к какой именно части кода относится инструкция, расположенная по адресу 0x11C8. Это можно заставить сделать линкер, но у меня, к сожалению, нет сейчас под рукой документации. Добавьте в обработчик AT91F_DataAbort() еще одну строку: Код printf("\n --------- Address --------->: %X \n\r", (i - 0x08)); printf("\n --------- Opcode --------->: %X \n\r", *(volatile unsigned int*)(i - 0x08)); Возможно, это поможет обойтись без map-файла, но все же он крайне желателен. собственно, вот что получил в терминале... Enter: 1 c0000000 Download Dataflash [0xc0000000] CCCCCCCC Modification of Arm Vector 6 :bdf80017
Write 11392 bytes in DataFlash [0xc0000000] write_dataflash - это я выводу для дебага путиAT91F_DataflashSelect novalid - это я выводу для дебага пути-F- Data Abort detected - это я выводу для дебага пути -F- LOOP... - это я выводу для дебага пути--------- ASR --------->: 10201 --------- AASR --------->: EA000494 --------- Address --------->: 11C8 --------- Opcode --------->: E59F002C
--------------------
|
|
|
|
|
Jan 16 2007, 11:09
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 15 2007, 18:22)  Совершенно верно, но к проблеме отношения не имеет Только не обязательно 0841a017, правильнее 0841a0xx. да кстати вот тест в int AT91F_DataflashInit (void) делаю маленькое изменение // for (i = 0; i < CFG_MAX_DATAFLASH_BANKS; i++) { for (i = 0; i < 1; i++) {и вот что получаю AT91F_LowLevelInit(): Debug channel initialized AT91F_DataflashInit AT91F_SpiInit PIOA->PIO_ABSR - 0 PIOA->PIO_PSR - 3FFFFF80 PMC->PMC_PCSR - 2000 SPI->SPI_SR - 100F2 SPI->SPI_MR - E0019 dfcode - 3C AT45DB642 press any key to enter bootloaderATMEL LOADER VER 1.01 Jan 16 2007 09:56:44 *----------------------------------------* AT91F_DataflashPrintInfo DataFlash:AT45DB642 Nb pages: 008192 Page Size: 001056 Size=08650752 bytes Logical address: 0xC0000000 AT91F_DataflashPrintInfo ERROR detect - 0 *----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash 5: ...test... *----------------------------------------* Enter:Enter: 1 c0000000 Download Dataflash [0xc0000000]
Modification of Arm Vector 6 :841a017
Write 11392 bytes in DataFlash [0xc0000000] write_dataflash AT91F_DataflashSelect read_dataflash AT91F_DataflashSelect Hit a Key!CCCCCCCCCCCC AT91F_LowLevelInit(): Debug channel initialized AT91F_DataflashInit AT91F_SpiInit PIOA->PIO_ABSR - 0 PIOA->PIO_PSR - 3FFFFF80 PMC->PMC_PCSR - 2000 SPI->SPI_SR - 100F2 SPI->SPI_MR - E0019 dfcode - 3C AT45DB642 PIOA->PIO_ABSR - 0 PIOA->PIO_PSR - 3FFFFF80 PMC->PMC_PCSR - 2000 SPI->SPI_SR - 100F2 SPI->SPI_MR - 70019 dfcode - 0 press any key to enter bootloader Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000] read_dataflash AT91F_DataflashSelect Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT и - УРА!!!!!! зашилось нада зхаметить чтло это случайно....!!!!!!!!! с какойто промежуточной редакцией гдето в коде.... тоесть вот что я вижу
--------------------
|
|
|
|
|
Jan 16 2007, 11:09
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 8-02-05
Пользователь №: 2 486

|
>CCCCCCCCCCCCCCCCC >AT91F_LowLevelInit(): Debug channel initialized >press any key to enter bootloader > >ATMEL LOADER VER 1.01 May 3 2006 15:21:06 >*----------------------------------------* >*----------------------------------------* >1: Download Dataflash [addr] >2: Read Dataflash [addr] >3: Start U-BOOT >4: Clear bootloader section in Dataflash >*----------------------------------------* >Enter: > >тут вроде все верно как раз тут и неверно... у Вас DataFlash вообще неопределяется romboot'ом, поэтому дальше идти рано... добейтесь что бы romboot увидел вашу флэшку. Должно быть что-то вроде этого: ATMEL LOADER VER 1.01 May 3 2006 15:21:06 *----------------------------------------* DataFlash:AT45DB321 Nb pages: 008192 Page Size: 000528 Size=04325376 bytes Logical address: 0xC0000000 *----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash *----------------------------------------* Enter: упс!! не заметил пока печатал, что вы уже решили эту проблему  З.Ы.: да еще на AT45DB321 запись у romboot'а глючит
Сообщение отредактировал nvn - Jan 16 2007, 11:24
|
|
|
|
|
Jan 16 2007, 11:22
|
Частый гость
 
Группа: Новичок
Сообщений: 79
Регистрация: 1-11-06
Пользователь №: 21 868

|
Стас, а ты не пробовал прицеплять к 9200 CrossWorks (он же CrossStudio)?. У меня щас версия 1.6 build 3, но только мы работаем с LPC21xx. Это IDE, основанная на gcc. Без make, собственная система сборки проекта. Субъективно ее отладчик мне понравился больше чем Insight. Интерфейс содран с MS VS 7. Она правда не совсем халявная, но есть методы лечения. В списке поддерживаемых процов есть 9200. Правда не знаю как обстоят дела с загрузчиком. У LPC с этим проще - флеша внутренняя и загрузчик cw ее писать может, через jtag прямо из среды. В числе поддерживаемых отладчиков есть вигглер. Но ты в любом случае вигглер собери, хоть с cw, хоть с gdb+insight+openocd - несравненно удобнее иметь пошаговую отладку и просмотр всех регистров и переменных, чем просто консоль  . К сожалению, именно по твоему загрузчику тебе ничего посоветовать не могу, с 9200 сам не работал. А мапу вывести - линкеру опцию -Map mapfile скормить. Там много интересного пишут.
|
|
|
|
|
Jan 16 2007, 16:29
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(aaarrr @ Jan 16 2007, 10:36)  Цитата(PrSt @ Jan 16 2007, 11:09)  и - УРА!!!!!! зашилось нада зхаметить чтло это случайно....!!!!!!!!! с какойто промежуточной редакцией гдето в коде....
Это хорошо. А с диагностикой я малость наврал - строку asm volatile("mov %0, r14" : "=r" (i) : ); нужно ставить перед первым printf'ом, иначе LR теряется. Всем спасибо! помогли! серьезно! надо заметить - локализовал проблемму(!как мне кажется!) завелась схема прошивкой после следующего 1 - скорость SPI инициализировани с снижением скорости в 32 раза 2 - #define AT91C_PLLA_MCK назначили как 0x3023 - сменил в int AT91F_DataflashInit (void) ... // for (i = 0; i < CFG_MAX_DATAFLASH_BANKS; i++) { for (i = 0; i < 1; i++) {....этот пункт отметим как FFF так как это временное решение, сами понимаете... дело втом, что на флешку все сигналы кроме MISO идут через буфер (если посмотреть на схему - то можно это увидить), и стояла HC244 но она оказалась медленной, там какаято беда с тормозами фронтов, именно - по этому снижение скорости SPI помоло... сменил ее на AC244 как рукой сняло эту проблемму... Видимо из-за этого все и было...хотя может и не только... за исключением еще одной.... которая отмечена ранее FFF
порвая флэшка стоит на CS0, как положенно....
у нас в схеме вторая флэшка используется на CS1 а в этом лоадере используется CS0 и CS3 вопрос:
что мне сменить в программе что бы использовать не CS3 а CS1 ? и еще такой вопрос - как сделать что бы размер памяти 2 флэшек был виден как единая память? тоесть у нас стоит 8M+8M а хочется сумарно видеть все 16M. надеюсь передал верно мысль. вообще такое реально?
--------------------
|
|
|
|
|
Jan 17 2007, 14:16
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(PrSt @ Jan 16 2007, 15:29)  первая флэшка стоит на CS0, как положенно.... у нас в схеме вторая флэшка используется на CS1 а в этом лоадере используется CS0 и CS3 вопрос: что мне сменить в программе что бы использовать не CS3 а CS1 ? и еще такой вопрос - как сделать что бы размер памяти 2 флэшек был виден как единая память? тоесть у нас стоит 8M+8M а хочется сумарно видеть все 16M. надеюсь передал верно мысль. вообще такое реально? Судя по всему CS0 и CS1 заработали если верить сообщению на терминале Nb pages: 008192 Page Size: 001056 Size=08650752 bytes Logical address: 0xC0000000 DataFlash:AT45DB642 Nb pages: 008192 Page Size: 001056 Size=08650752 bytes Logical address: 0xD0000000 *----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash *----------------------------------------* Enter:а вот на счет 8M+ 8M вопрос все еще остался... просветите кто нибудь плз...
--------------------
|
|
|
|
|
Jan 18 2007, 10:10
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(PrSt @ Jan 17 2007, 13:16)  а вот на счет 8M+8M вопрос все еще остался... просветите кто нибудь плз... Также вопрос к СОМА, aaarrr и к другим опытным ребятам... ...плюс ко всему не работает U-Boot. вот в этой статье(http://heavy-online.ru/arm-linux/) сказано " Если все нормально - то после ресета - u-boot будет грузиться автоматически (если ничего не нажимать) " ВОПРОС! - а если не нормально?объясняю проблемку:прошит - romboot.bin его исход ник в вложении если не нажимать интер то после вклоючения AT91F_LowLevelInit(): Debug channel initialized press any key to enter bootloader Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000] Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT и тут висит.... если с нажатием после включения AT91F_LowLevelInit(): Debug channel initialized press any key to enter bootloader
ATMEL LOADER VER 1.01 Jan 17 2007 09:45:22 *----------------------------------------* DataFlash:AT45DB642 Nb pages: 008192 Page Size: 001056 Size=08650752 bytes Logical address: 0xC0000000 DataFlash:AT45DB642 Nb pages: 008192 Page Size: 001056 Size=08650752 bytes Logical address: 0xD0000000 *----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash *----------------------------------------* Enter: собрал U-Boot запись U-Boot`a *----------------------------------------* Enter: 1 c0008000 Download Dataflash [0xc0008000] CCCCCCCCCCCC Modification of Arm Vector 6 :841a0bc
Write 95744 bytes in DataFlash [0xc0008000] Hit a Key!aflash: OK снимаю питание при включении надеюсь увидеть U-Boot а вижу следующее AT91F_LowLevelInit(): Debug channel initialized press any key to enter bootloader Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000] Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT
это означает что U-Boot мягко говоря - не стартанул вообще... зотя если проверить пунктом 2 по адрессу 20008000, из romboot, то вижу что таки в flash находится бействительно U-Boot.bin что за проблемма? может в файле include/configs/RM9200.h: не верно чтото, в зависимости от моей схемы?
--------------------
|
|
|
|
|
Jan 18 2007, 12:36
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
проверь в rm9200.h значения master_clock и main_clock на сooтветствие настройкам plla в bootloader + проверь в rm9200.h значение brgr_divisor делителя dbgu порта на соответствие master_clock
|
|
|
|
|
Jan 18 2007, 14:48
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(Lelick @ Jan 18 2007, 11:36)  проверь в rm9200.h значения master_clock и main_clock на сooтветствие настройкам plla в bootloader + проверь в rm9200.h значение brgr_divisor делителя dbgu порта на соответствие master_clock вроде все одинаково я тут вот на что натолкнулся, похоже что U-boot не умеет вообще грузиться с последовательно flash а только с параллельной... если верить содержимому файла /usr/local/arm9/src/u-boot-1.1.6/board/at91rm9200dk/flash.c а с другой стороны в /usr/local/arm9/src/u-boot-1.1.6/board/at91rm9200dk/at45.c инициализация SPI и т д (такие жу куски кода как и в изходнике от romboot) и вот теперь вопрос - с какой он флешки всеже грузится? и где это можно указать? + ко всему еще вот на что наткнулся на терминале наблюдаю следующее AT91F_LowLevelInit(): Debug channel initialized press any key to enter bootloader Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000] Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT AT91F_ResetRegisters
если смотреть на исходный код от romboot, то видим следующее... void AT91F_StartUboot(unsigned int dummy, void *pvoid) { printf("Load U-BOOT from dataflash[%x] to SDRAM[%x]\n\r", AT91C_UBOOT_DATAFLASH_ADDR, AT91C_UBOOT_ADDR); read_dataflash(AT91C_UBOOT_DATAFLASH_ADDR, AT91C_UBOOT_SIZE, (char *)(AT91C_UBOOT_ADDR)); printf("Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT\n\r"); //* Reset registers AT91F_ResetRegisters(); printf("Jump(AT91C_UBOOT_ADDR)\n\r"); Jump(AT91C_UBOOT_ADDR); printf("Jump(AT91C_UBOOT_ADDR) - DONE \n\r"); while(1); }//*-------------------------------------------------------------------------------------- //* Function Name : AT91F_ResetRegisters //* Object : Restore the initial state to registers //* Input Parameters : //* Output Parameters : //*-------------------------------------------------------------------------------------- static void AT91F_ResetRegisters(void) { volatile int i = 0;
printf("AT91F_ResetRegisters\n\r");
//* set the PIOs in input *AT91C_PIOA_ODR = 0xFFFFFFFF; /* Disables all the output pins */ *AT91C_PIOA_PER = 0xFFFFFFFF; /* Enables the PIO to control all the pins */
printf("1 \n\r"); AT91F_AIC_DisableIt (AT91C_BASE_AIC, AT91C_ID_SYS);
printf("2 \n\r"); /* close all peripheral clocks */ AT91C_BASE_PMC->PMC_PCDR = 0xFFFFFFFC;
printf("3 \n\r"); //* Disable core interrupts and set supervisor mode __asm__ ("msr CPSR_c, #0xDF"); //* ARM_MODE_SYS(0x1F) | I_BIT(0x80) | F_BIT(0x40)
printf("4 \n\r"); //* Clear all the interrupts *AT91C_AIC_ICCR = 0xffffffff;
/* read the AIC_IVR and AIC_FVR */ i = *AT91C_AIC_IVR; i = *AT91C_AIC_FVR;
printf("5 \n\r"); /* write the end of interrupt control register */ *AT91C_AIC_EOICR = 0;
AT91F_SetPLL(); printf("AT91F_ResetRegisters - DONE \n\r"); }и вопросик теперь что тут предпологается ? делается ведь тупое //* set the PIOs in input *AT91C_PIOA_ODR = 0xFFFFFFFF; /* Disables all the output pins */ *AT91C_PIOA_PER = 0xFFFFFFFF; /* Enables the PIO to control all the pins */
так что неудивительно что что прекращяется вывод... но по ходу тут прекращяется все! или ни кто так глубоко ни когда не лез?
--------------------
|
|
|
|
|
Jan 18 2007, 22:16
|
Частый гость
 
Группа: Участник
Сообщений: 116
Регистрация: 18-12-04
Из: Минск
Пользователь №: 1 550

|
если используется romboot.bin и uboot загрузка из dataflash то должен быть define #define CONFIG_SKIP_LOWLEVEL_INIT иначе uboot будет виснуть Embedded Linux Engineer Promwad Company>а с другой стороны в >/usr/local/arm9/src/u-boot-1.1.6/board/at91rm9200dk/at45.c >инициализация SPI и т д (такие жу куски кода как и в изходнике от romboot) > >и вот теперь вопрос - с какой он флешки всеже грузится? и где это можно указать? romboot.bin грузит из dataflash u-boot в SDRAM и передает управление uboot
--------------------
|
|
|
|
|
Jan 31 2007, 13:47
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(vanokuten @ Jan 18 2007, 21:16)  если используется romboot.bin и uboot загрузка из dataflash то должен быть define #define CONFIG_SKIP_LOWLEVEL_INIT иначе uboot будет виснуть в томто и дело - версия u-boot-1.1.6 и u-boot-1.2.0 виснет... версию u-boot-1.1.1 чуть пропатчил, вставил драйвер lxt-972, но с этимдрайвером оно только посылает в сеть ARP, а пинговать не получается... такое впечатление что не верно инициализировалась... или еще чтото... по этой теме - я тут http://electronix.ru/forum/index.php?showtopic=26464 вопрос задавал уже , но ни кто не ответил досе... может все же ктото с таким сталкивался?
--------------------
|
|
|
|
|
Feb 1 2007, 11:42
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(COMA @ Feb 1 2007, 07:59)  Помочь не чем У меня все заработало с полпинка по этому руководству - http://www.heavy-online.ru/arm-linux/дык по этой же статье и делаю... ну хоть за попытку, и то всем спасибо большое! кстати, поднял это дело... - запинговалось, tftp поднял... пробую идти дальше...
--------------------
|
|
|
|
|
Feb 6 2007, 13:03
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(PrSt @ Feb 1 2007, 10:42)  пробую идти дальше... пытаюсь загрузить линуксовое ядро, то что с сайта heavy-online.... и вот наткнулся на следующее не совсем понятное поведение... AT91RM9200 > bootm ## Booting image at 20800000 ... Image Name: Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 1124113 Bytes = 1.1 MB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
Starting kernel ...и стоит тут (затрял), что это может быть за ерунда? иду дальше, пересобрал ядро пробую стартануть и вот что получаю Starting kernel ...
Error: unrecognized/unsupported machine ID (r1 = 0x000000fb).
Available machine support:
ID (hex) NAME 00000106 uCrouter EVM9200
Please check your kernel config and/or bootloaderкорень вопроса... у меня в U-Boot - CFG_PROMPT объявлен как "AT91RM9200_board# " кокое в ядре нада правильно имя указать? "AT91RM9200_board# " ? или "AT91RM9200_board" ? или речь идет о чем-то ином...?
--------------------
|
|
|
|
|
Feb 7 2007, 13:04
|
Частый гость
 
Группа: Участник
Сообщений: 116
Регистрация: 18-12-04
Из: Минск
Пользователь №: 1 550

|
Цитата(PrSt @ Feb 6 2007, 12:03)  Цитата(PrSt @ Feb 1 2007, 10:42)  пробую идти дальше...
пытаюсь загрузить линуксовое ядро, то что с сайта heavy-online.... и вот наткнулся на следующее не совсем понятное поведение... AT91RM9200 > bootm ## Booting image at 20800000 ... Image Name: Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 1124113 Bytes = 1.1 MB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
Starting kernel ...и стоит тут (затрял), что это может быть за ерунда? иду дальше, пересобрал ядро пробую стартануть и вот что получаю Starting kernel ...
Error: unrecognized/unsupported machine ID (r1 = 0x000000fb).
Available machine support:
ID (hex) NAME 00000106 uCrouter EVM9200
Please check your kernel config and/or bootloaderкорень вопроса... у меня в U-Boot - CFG_PROMPT объявлен как "AT91RM9200_board# " кокое в ядре нада правильно имя указать? "AT91RM9200_board# " ? или "AT91RM9200_board" ? или речь идет о чем-то ином...? Речь идет об ином а именно об соответствии machine ID между uboot и linux kernel см linux-source/arch/arm/tools/mach-types а также u-boot-source/include/asm-arm/mach-types.h
--------------------
|
|
|
|
|
Feb 8 2007, 16:15
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(vanokuten @ Feb 7 2007, 12:04)  Цитата(PrSt @ Feb 6 2007, 12:03)  Цитата(PrSt @ Feb 1 2007, 10:42)  пробую идти дальше...
пытаюсь загрузить линуксовое ядро, то что с сайта heavy-online.... и вот наткнулся на следующее не совсем понятное поведение... AT91RM9200 > bootm ## Booting image at 20800000 ... Image Name: Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 1124113 Bytes = 1.1 MB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
Starting kernel ...и стоит тут (затрял), что это может быть за ерунда? Речь идет об ином а именно об соответствии machine ID между uboot и linux kernel см linux-source/arch/arm/tools/mach-types а также u-boot-source/include/asm-arm/mach-types.h не получается дальше чем Starting kernel ... Ну неужели ни у кого не было такой проблеммы? уже пол ядра перерыл - не могу найти в чем проблемма.... ядро 2.6.16 с патчами на AT91RM9200 кроме DS1307, но он щяс ни не нужен.... пробовал также собранное ядро с сайта heavy-online, такое же самое поведение... или ядро не стартует(что маловероятно) или оно данные выводит не на DBGU а куда в иное место или еще чтото - не знаю и проверить не знаю как... ...Вариации разные испробовал... проясните плиз, кто нибудь - что происходит или что не так? ?
--------------------
|
|
|
|
|
Feb 12 2007, 16:14
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(vanokuten @ Feb 12 2007, 12:36)  С каким bootargs запускаемся ? Поставь пару printk чтобы посмотреть где останавливается Судя по тому что ты таки исправил ошибку machine ID кернел у тебя таки грузится я вот тоже неделю или больше об этом подозреваю что грузится но выводит не туда.... но проверить это так и не удалось вот bootargs виден с скрина Area 3: C0028000 to C083FFFF *** Warning - bad CRC, using default environment
In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 AT91RM9200_board$ printenv bootargs=root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M bootcmd=cp.b C002A000 20A00000 200000; bootm 20A00000 bootdelay=4 baudrate=115200 ethaddr=11:11:11:11:11:11 ipaddr=192.168.1.123 serverip=192.168.1.1 netmask=255.255.255.0 bootfile="uImage" stdin=serial stdout=serial stderr=serial
Environment size: 331/8188 bytes AT91RM9200_board$
вот он bootargs=root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32Mв параметрах "Boot options" кернела сказано cat .config |grep CMDLINE CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw"CONFIG_MTD_CMDLINE_PARTS=y пробовал ttyS4 - (как DBGU) - ни чего не менялось... был кернель 2.6.16 намекнули что может версия нета(но ведь у других же работает 2.6.16), после вопроса об этом на lists.arm.linux.org.uk... решил на 2.6.19 попробовать... пропатчил патчем от maxim, собрал... щяс уже воюю с 2.6.19 - все та же ерунда.... TFTP from server 192.168.1.1; our IP address is 192.168.1.123 Filename 'uImage'. Load address: 0x20800000 Loading: T ################################################################# ################################################################# ####################################################### done Bytes transferred = 942294 (e60d6 hex) AT91RM9200_board$ bootm ## Booting image at 20800000 ... Image Name: Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 942230 Bytes = 920.1 kB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK Starting kernel ...
такое впечатление что кернель наботает но выводит инфо кудато в другое место... как проверить даже не знаю... разъем на плате лиш один и тот на DBGU, для перевода его в ttyS0 нада передергивать джампера, пробовал передергивать на ttyS0 во время загрузки кернеля, ни каких месаджей на нем небыло... а результат все тот же...
--------------------
|
|
|
|
|
Feb 12 2007, 18:59
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
tftpboot 20007fc0 uImage;bootm 20007fc0
|
|
|
|
|
Feb 13 2007, 10:17
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(Lelick @ Feb 12 2007, 17:59)  tftpboot 20007fc0 uImage;bootm 20007fc0 а 20007fc0 - это что за адрес? AT91RM9200_board$ tftpboot 20007fc0 AT91C_BASE_SPI->SPI_SR = 100F2 AT91C_BASE_PMC->PMC_MCKR = 302 change on AT91C_BASE_PMC->PMC_MCKR = TFTP from server 192.168.1.1; our IP address is 192.168.1.123 Filename 'uImage'. Load address: 0x20007fc0 Loading: ################################################################# ################################################################# ######################################################## done Bytes transferred = 950008 (e7ef8 hex) AT91RM9200_board$ bootm 20007fc0 Booting image at 20007fc0 ... Image Name: Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 949944 Bytes = 927.7 kBSize: 942182 Bytes = 920.1 kB Load Address: 20008000 Entry Point: 20008000 Load A Verifying Checksum ... OK Entry Point: Uncompressing Kernel Image ... Error: inflate() returned -3 Verifying Checksum ... OK########0]b GUNZIP ERROR - must RESET board to recoverÿ
и перезагружается... я так понял из опыта что такое крайне редко и когда чтото вообще не верно узывается... вероятно 20007fc0 не нравится
--------------------
|
|
|
|
|
Feb 13 2007, 10:58
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
эти адреса зависят от утилиты mkinitrd, которой нужно обработать собранный кернел; утилита находится в u-boot/tools, для файловой системой с рам диском его тоже нужно обработать этой утилитой;
"mem=16M console=ttyS0,115200 root=/dev/ram0 init=/linuxrc rw panic=10";
для старта системы c рамдиска использую "tftpboot 20007fc0 uuImage;tftpboot 20300000 ramdisk;bootm 20007fc0 20300000"; пользуюсь не зипованными ramdisk и кернел
|
|
|
|
|
Feb 13 2007, 21:57
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Цитата(nvn @ Jan 16 2007, 11:09)  З.Ы.: да еще на AT45DB321 запись у romboot'а глючит А поподробнее можно? а то у меня как раз 321-ая и есть проблемы, про которые я здесь хотел вычитать.
|
|
|
|
|
Feb 14 2007, 10:23
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(vanokuten @ Feb 14 2007, 00:47)  >bootargs=root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M >bootcmd=cp.b C002A000 20A00000 200000; bootm 20A00000 я вот щяс только заподозгил негаразд с вот этим - bootargs=root=/dev/ram, что то мне кажется что тут должно быть - bootargs "root=/dev/ram" щяс буду пробовать еще так... Цитата(vanokuten @ Feb 14 2007, 00:47)  А kernel который в dataflash он грузится? или вообще не грузится ни самосборный kernel ни тот что шел с платой? я делаю все как по статье - http://heavy-online.ru/arm-linux/с платой ни чего не шло, это наша самодельная плата... ядро пробовал разное грузить, и то что собрано под EVM9200 с сайта http://heavy-online.ru/arm-linux/ (версия 2.6.16 с патчами) и то что я сам кучу раз собрал(версия 2.6.16 с патчами и версия 2.6.19 с патчами, на последнем я остановился)... может у кого-то есть возможность дать мне конфиг от кернела, свой что бы я мог сравнить его с моим конфигом (хотя я и у уверен что у меня поряк) ? я гружу его по tftp в манять по адресу 20800000 и из памяти командой bootm его запускаю... вобщемто все же видно по скринам которыя я выкладывал.... Цитата(vanokuten @ Feb 14 2007, 00:47)  Пропробуй грузить kernel адресу 0x20A00000 как у тебя в bootcmd указано Также попробуй грузить командой не bootm а просто go я его(упакованный uImage) гружу по tftp по адрессу 0x20800000 ( или 0x20A00000) щяс еще попробую не упакованный... попробовал, вот что выдает на команду iminfo## Checking Image at 20800000 ... Bad Magic Number...в статье сказано что именно упакованный надо грузить...
--------------------
|
|
|
|
|
Feb 14 2007, 10:54
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Цитата(PrSt @ Feb 14 2007, 10:39)  Цитата(AlexMad @ Feb 13 2007, 20:57)  Цитата(nvn @ Jan 16 2007, 11:09)  З.Ы.: да еще на AT45DB321 запись у romboot'а глючит
А поподробнее можно? а то у меня как раз 321-ая и есть проблемы, про которые я здесь хотел вычитать. а что за проблеммы у Вас с romboot? Сначала по Х-модему грузится, потом, как написано на http://heavy-online.ru/arm-linux/ гружу его же по адресу 0хС0000000, выдается Modification of Arm Vector 6 :421a015 Write 10240 bytes in DataFlash [0xc0000000] Verify Dataflash: Failed Hit a Key!и можно все начинать сначала. Причем я уже и память и флешку тестировал, грешил на них, все тесты вроде проходят.
|
|
|
|
|
Feb 14 2007, 11:08
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(AlexMad @ Feb 14 2007, 09:54)  Сначала по Х-модему грузится, потом, как написано на http://heavy-online.ru/arm-linux/ гружу его же по адресу 0хС0000000, выдается Modification of Arm Vector 6 :421a015 Write 10240 bytes in DataFlash [0xc0000000] Verify Dataflash: Failed Hit a Key!и можно все начинать сначала. Причем я уже и память и флешку тестировал, грешил на них, все тесты вроде проходят. могу сказать что мне пришлось изрядно перелокопатьти исходник от romboot что бы найти подобную проблему и устранить причину... обратите внимание на ваш код возврата :421a015 и сравните его с датащитом на AT91RM9200 стр. 87,112 - там расписано что Вы должны получить для вашей AT45DB321 ... кстати, в моем случае устранение проблеммы свелось к понижению скорости работы SPI в 32 раза в конфигурационном регистре(смотри в сторону - DIV32). Рекомендую перечитать этот пост внимательно с начала... может это ваш случай?
--------------------
|
|
|
|
|
Feb 14 2007, 11:34
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(vanokuten @ Feb 12 2007, 12:36)  С каким bootargs запускаемся ? Поставь пару printk чтобы посмотреть где останавливается Судя по тому что ты таки исправил ошибку machine ID кернел у тебя таки грузится честно говоря я уже и не уверен что грузится.... вот что нашел в исходнике от u-boot-1.1.6 u-boot-1.1.6-worked-070209/cpu/arm920t/at91rm9200/armlinux.c :258... /* we assume that the kernel is in place */ printf ("\nStarting kernel ...\n\n");
#ifdef CONFIG_USB_DEVICE { extern void udc_disconnect (void); udc_disconnect (); } #endif
cleanup_before_linux ();
theKernel (0, bd->bi_arch_number, bd->bi_boot_params); }...так что если верить переводу /* we assume that the kernel is in place */
перевести можно как - /* мы допускаем что зерно `размещено (или на месте, или поступает) ` */
так что мессадж " Starting kernel ..." не гарантирует что оно загрузилось вообще... но если верить всему сообщению AT91RM9200_board$ bootm ## Booting image at 20800000 ... Image Name: Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 949944 Bytes = 927.7 kB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
Starting kernel ...... то можно увидить что оно распоковалось, но не факт что загрузилось....плюс ко всему еще одно смутное место u-boot-1.1.6-worked-070209/board/at91rm9200dk/at91rm9200dk.cint board_init (void) { /* Enable Ctrlc */ console_init_f ();
/* Correct IRDA resistor problem */ /* Set PA23_TXD in Output */ ((AT91PS_PIO) AT91C_BASE_PIOA)->PIO_OER = AT91C_PA23_TXD2;
/* memory and cpu-speed are setup before relocation */ /* so we do _nothing_ here */
/* arch number of AT91RM9200DK-Board */ gd->bd->bi_arch_number = MACH_TYPE_AT91RM9200; /* adress of boot parameters */ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
return 0; }
здесь вооще странное место gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;почему именно + 0x100 ???
вот из хидера at91rm9200dk.h#define PHYS_SDRAM 0x20000000
--------------------
|
|
|
|
|
Feb 14 2007, 14:24
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
должна быть выполнена следующая последовательность действий, для загрузки с рамдиска: 1) собираем ядро, с поддержкой initrd 2) собираем файловую систему пакетом buildroot или берем готовую 3) обрабатываем их утилитой mkinitrd из uboot/tools, в качестве параметров к этой утилите задаются адреса загрузки и старта 4)загружаем ядро, загружаем файловую систему 5)запускаемся результат: u-boot> tftpboot 20007fc0 extuuImage eth: setting MAC address to 00:12:34:56:78:9d PHY: RTL8201(  L detected Link: 100baseTX Full Duplex end eth_init TFTP from server 192.168.4.28; our IP address is 192.168.4.172 Filename 'extuuImage'. Load address: 0x20007fc0 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ###### done Bytes transferred = 2688528 (290610 hex) u-boot> tftpboot 20300000 extramdisk2 eth: setting MAC address to 00:12:34:56:78:9d PHY: RTL8201(  L detected Link: 100baseTX Full Duplex end eth_init TFTP from server 192.168.4.28; our IP address is 192.168.4.172 Filename 'extramdisk2'. Load address: 0x20300000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ####### done Bytes transferred = 5357632 (51c040 hex) u-boot> bootm 20007fc0 20300000 ## Booting image at 20007fc0 ... Image Name: Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2688464 Bytes = 2.6 MB Load Address: 20007fc0 Entry Point: 20008000 Verifying Checksum ... OK XIP Kernel Image ... OK ## Loading Ramdisk Image at 20300000 ... Image Name: Image Type: ARM Linux RAMDisk Image (uncompressed) Data Size: 5357568 Bytes = 5.1 MB Load Address: 20300000 Entry Point: 20300000 Verifying Checksum ... OK ## Transferring control to Linux (at address 20008000) ... Starting kernel ... begin cleanup_before_linux end cleanup_before_linux ## Transferring control to Linux (at address 20008000) ... Linux version 2.6.13 (root@debian) (gcc version 3.4.3) #412 Mon Jan 8 04:32:35 MSK 2007 CPU: ARM920Tid(wb) [41129200] revision 0 (ARMv4T) Machine: Atmel AT91RM9200-DK Memory policy: ECC disabled, Data cache writeback CPU0: D VIVT write-back cache CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets Built 1 zonelists Kernel command line: mem=16M console=ttyS0,115200 root=/dev/ram0 init=/linuxrc rw panic=10 AT91: 128 gpio irqs in 4 banks PID hash table entries: 128 (order: 7, 2048 bytes) Console: colour dummy device 80x30 Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) Memory: 16MB = 16MB total Memory: 8200KB available (2233K code, 411K data, 88K init) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd Freeing initrd memory: 5232K NET: Registered protocol family 16 SCSI subsystem initialized NetWinder Floating Point Emulator V0.97 (double precision) NTFS driver 2.1.23 [Flags: R/O]. JFFS2 version 2.2. (NAND) © 2001-2003 Red Hat, Inc. Initializing Cryptographic API AT91 Real Time Clock driver. AT91 SPI driver loaded ttyS0 at MMIO 0xfefff200 (irq = 1) is a AT91_SERIAL ttyS1 at MMIO 0xfefc0000 (irq = 6) is a AT91_SERIAL ttyS2 at MMIO 0xfefc4000 (irq = 7) is a AT91_SERIAL ttyS3 at MMIO 0xfefc8000 (irq = 8) is a AT91_SERIAL ttyS4 at MMIO 0xfefcc000 (irq = 9) is a AT91_SERIAL io scheduler noop registered io scheduler anticipatory registered RAMDISK driver initialized: 1 RAM disks of 6000K size 1024 blocksize loop: loaded (max 8 devices) eth0: Link now 100-FullDuplex eth0: AT91 ethernet at 0xfefbc000 int=24 100-FullDuplex (00:12:34:56:78:9d) eth0: Realtek RTL8201(  L PHY at91_dataflash: AT45DB642 detected [spi0] (8650752 bytes) Creating 3 MTD partitions on "AT45DB642.spi0": 0x00000000-0x00042000 : "bootloader" 0x00042000-0x0035a000 : "kernel" 0x0035a000-0x00840000 : "filesystem3" at91_init Adapter name AT91RM9200 Registered as minor 0 Found AT91 i2c NET: Registered protocol family 2 IP route cache hash table entries: 256 (order: -2, 1024 bytes) TCP established hash table entries: 1024 (order: 1, 8192 bytes) TCP bind hash table entries: 1024 (order: 0, 4096 bytes) TCP: Hash tables configured (established 1024 bind 1024) TCP reno registered IPv4 over IPv4 tunneling driver NET: Registered protocol family 1 NET: Registered protocol family 17 NET: Registered protocol family 8 NET: Registered protocol family 20 RAMDISK: ext2 filesystem found at block 0 RAMDISK: Loading 5232KiB [1 disk] into ram disk... done. VFS: Mounted root (ext2 filesystem). Freeing init memory: 88K eth0: Link now 100-FullDuplex Initializing random number generator... urandom start: failed. done. Starting network... /bin/sh: run-parts: not found /bin/sh: run-parts: not found Welcome to the Erik's uClibc development environment. uclibc login:
|
|
|
|
|
Feb 14 2007, 14:50
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(Lelick @ Feb 14 2007, 13:24)  должна быть выполнена следующая последовательность действий, для загрузки с рамдиска: 1) собираем ядро, с поддержкой initrd 2) собираем файловую систему пакетом buildroot или берем готовую 3) обрабатываем их утилитой mkinitrd из uboot/tools, в качестве параметров к этой утилите задаются адреса загрузки и старта 4)загружаем ядро, загружаем файловую систему 5)запускаемся 1) в ядре сказано что с поддержкой initrd< > Normal floppy disk support (NEW) < > Loopback device support < > Network block device support <*> RAM disk support (16) Default number of RAM disks (8192) Default RAM disk size (kbytes) (1024) Default RAM disk block size (bytes) [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support < > Packet writing on CD/DVD media < > ATA over Ethernet support
2),3) - пока не делал - нужно сначало что бы стартонуло ядро, позже разумеется буду делать файловую систему 4) я хочу сначала запустить только ядро, без файловой системы 5) вот это и есть - гвоздь программы %) eth: setting MAC address to 00:12:34:56:78:9d PHY: RTL8201( L detected Link: 100baseTX Full Duplex end eth_init просто инетерсно, а откуда эти строки? это ваши debug - printf() или какаято версия U-Boot специфическая у Вас? bootm 20007fc0 20300000второй адрес что означает, это адрес initrd? если верить сайту автора убута http://www.denx.de/wiki/view/DULG/UBootCmdGroupExec#Section_5.9.4.2. To boot a Linux kernel image without a initrd ramdisk image, the following command can be used: => bootm ${kernel_addr} If a ramdisk image shall be used, you can type: => bootm ${kernel_addr} ${ramdisk_addr}
в моем случае, я второй не указываю... begin cleanup_before_linux end cleanup_before_linuxа эти строчки откуда взялись? ## Transferring control to Linux (at address 20008000) ... Linux version 2.6.13 (root@debian) (gcc version 3.4.3) #412 Mon Jan 8 04:32:35 MSK 2007 ....вот это я уже просто мечтаю получить.... вот что говорит bdinfo у меня, если это может помочь хоть както... AT91RM9200_board$ bdinfo arch_number = 0x000000FB env_t = 0x00000000 boot_params = 0x20000100 DRAM bank = 0x00000000 -> start = 0x20000000 -> size = 0x02000000 ethaddr = 11:11:11:11:11:11 ip_addr = 192.168.1.123 baudrate = 115200 bps
--------------------
|
|
|
|
|
Feb 14 2007, 14:58
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
пункт 3, а именно обработку утилитой mkinitrd, нужно выполнить и для ядра
|
|
|
|
|
Feb 14 2007, 15:10
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
выполни c опциями -A arm -O linux -T kernel -C gzip -a=0x20007fc0 -e=20008000 -d .... , а потом tftpboot 20007fc0 uImage; bootm 20007fc0
|
|
|
|
|
Feb 14 2007, 15:56
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
Цитата(PrSt @ Feb 14 2007, 15:44)  Цитата(Lelick @ Feb 14 2007, 14:10)  выполни c опциями -A arm -O linux -T kernel -C gzip -a=0x20007fc0 -e=20008000 -d .... , а потом tftpboot 20007fc0 uImage; bootm 20007fc0 вот результат... AT91RM9200_board$ tftpboot 20007fc0 MAC: error during MII initialization TFTP from server 192.168.1.1; our IP address is 192.168.1.123 Filename 'uImage'. Load address: 0x20007fc0 Loading: T ################################################################# ################################################################# ######################################################## done Bytes transferred = 950008 (e7ef8 hex) AT91RM9200_board$ AT91RM9200_board$ bootm 20007fc0 ## Booting image at 20007fc0 ... Image Name: Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: 949944 Bytes = 927.7 kB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK Uncompressing Kernel Image ... Error: inflate() returned -3 GUNZIP ERROR - must RESET board to recover AT91F_LowLevelInit(): Debug channel initialized press any key to enter bootloader Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000] тоесть перегружается после строки GUNZIP ERROR... load address и entry point должны соответствовать тем что введены в mkinitrd: -a load address -e entry point у тебя они совпадают, не тот файл подгружаешь выполнять надо c опциями -A arm -O linux -T kernel -C gzip -a 0x20007fc0 -e 20008000 -d .... (сорри за знаки равно, случайно воткнул)
|
|
|
|
|
Feb 14 2007, 16:40
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
попробуй не зипованый кернел, возможно в u-boot косяк какой-нибудь, вместо -с gzip поставь -c none
файл ядра для mkinitrd надо брать из: ../linux/arch/arm/boot/Image (незипованный)
|
|
|
|
|
Feb 14 2007, 16:55
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
ты меня неправильно понял, ты взял тот же самый файл зипованного кернела и объявил его незипованным, а надо взять файл незипованного кернела и обработать его с "-c none"
|
|
|
|
|
Feb 14 2007, 17:09
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(Lelick @ Feb 14 2007, 15:55)  ты меня неправильно понял, ты взял тот же самый файл зипованного кернела и объявил его незипованным, а надо взять файл незипованного кернела и обработать его с "-c none" вероятно действительно неверно понял щяс вот как я получаю uImage, Image - не зипованный... ./mkimage -A arm -O linux -C none -a 0x20007fc0 -e 0x20008000 -d Image uImageвот что получаю Load address: 0x20007fc0 Loading: T ################################################################# ... ########################################################### done Bytes transferred = 1965424 (1dfd70 hex) AT91RM9200_board$ bootm 20007fc0 ## Booting image at 20007fc0 ... Image Name: Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1965360 Bytes = 1.9 MB Load Address: 20007fc0 Entry Point: 20008000 Verifying Checksum ... OK XIP Kernel Image ... OK No initrd ## Transferring control to Linux (at address 20008000) ...
Starting kernel ...
и все также стоит на месте(как и раньше)....
--------------------
|
|
|
|
|
Feb 14 2007, 17:17
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007

|
авторизуй меня в Icq
|
|
|
|
|
Feb 17 2007, 18:10
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
Цитата(PrSt @ Feb 14 2007, 11:08)  Цитата(AlexMad @ Feb 14 2007, 09:54)  Сначала по Х-модему грузится, потом, как написано на http://heavy-online.ru/arm-linux/ гружу его же по адресу 0хС0000000, выдается Modification of Arm Vector 6 :421a015 Write 10240 bytes in DataFlash [0xc0000000] Verify Dataflash: Failed Hit a Key!и можно все начинать сначала. Причем я уже и память и флешку тестировал, грешил на них, все тесты вроде проходят. могу сказать что мне пришлось изрядно перелокопатьти исходник от romboot что бы найти подобную проблему и устранить причину... обратите внимание на ваш код возврата :421a015 и сравните его с датащитом на AT91RM9200 стр. 87,112 - там расписано что Вы должны получить для вашей AT45DB321 ... кстати, в моем случае устранение проблеммы свелось к понижению скорости работы SPI в 32 раза в конфигурационном регистре(смотри в сторону - DIV32). Рекомендую перечитать этот пост внимательно с начала... может это ваш случай? Сравнил с даташитом... именно это и должно получаться, по крайней мере 0x421A0xx получилось из расчетов по 87-ой странице дш. И при этом не хочет во флеш писаться загрузчик
|
|
|
|
|
Feb 20 2007, 15:29
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(Lelick @ Feb 14 2007, 16:17)  авторизуй меня в 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, реально помог...
.
--------------------
|
|
|
|
|
Feb 21 2007, 18:30
|

Группа: Новичок
Сообщений: 14
Регистрация: 10-01-07
Из: Ukraine,Odessa
Пользователь №: 24 286

|
а можно поделиться loader(от lelick) у меня аналогичная проблема с romboot --- те же грабли, те же симптомы
|
|
|
|
|
Feb 21 2007, 18:50
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
B)--> (This is j.b @ Feb 21 2007, 17:30)  а можно поделиться loader(от lelick) у меня аналогичная проблема с romboot --- те же грабли, те же симптомы  [/quote] сказал бы - что радует что не у одного меня такая беда - но радоваться не чему ))
я уже думал что это только у меня такая ерунда творится с 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;
тоесть проблема не в памяти по идее а все таки гдето в клоках.... только вот где - не пойму... аж бошка лопается уже... и помочь ни кто не может...
--------------------
|
|
|
|
|
Feb 22 2007, 08:35
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 8-02-05
Пользователь №: 2 486

|
у меня с romboot тоже были проблемы AT45DB321 не шилась, u-boot не стартовал.... после общения с Дмитрием Черкашиным, за что ему отдельно спасибо, он написал тестовый загрузчик с которым у меня все сразу заработало... см. http://www.ucrouter.ru/download.html тут и исходники есть
|
|
|
|
|
Feb 22 2007, 09:45
|
Местный
  
Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743

|
[quote name='PrSt' date='Feb 21 2007, 18:50' post='214287']  --><div class='quotetop'>(This is j.b @ Feb 21 2007, 17:30)  </div><div class='quotemain'><!--quotec--> а можно поделиться loader(от lelick) у меня аналогичная проблема с romboot --- те же грабли, те же симптомы  [/quote] сказал бы - что радует что не у одного меня такая беда - но радоваться не чему ))
я уже думал что это только у меня такая ерунда творится с 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;
тоесть проблема не в памяти по идее а все таки гдето в клоках.... только вот где - не пойму... аж бошка лопается уже... и помочь ни кто не может...
[/quote] Думаю, проблема именно в памяти, верней в ее инициализации, я у себя Romboot запустил только после того, как помянял настройки СДРАМ под конкретные микрухи, что у меня впаяны. COMA выложил свой загрузчик, так вот - он у меня даже не пытается чего-то делать, а я не верю, что уважаемый COMA выложил заведомо нерабочие вещи, просто проблема в том, что у всех у нас запаяны разные СДРАМ и ДатаФлешь, вот и получается, что советы одного не подходят другому. У меня ОЗУ-хи k4s641632h-tc75, флешь - at45db321c rombootP.S. флешку я также протестил случайными числами.
|
|
|
|
|
Feb 22 2007, 10:20
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(AlexMad @ Feb 22 2007, 08:45)  Думаю, проблема именно в памяти, верней в ее инициализации, я у себя Romboot запустил только после того, как помянял настройки СДРАМ под конкретные микрухи, что у меня впаяны. COMA выложил свой загрузчик, так вот - он у меня даже не пытается чего-то делать, а я не верю, что уважаемый COMA выложил заведомо нерабочие вещи, просто проблема в том, что у всех у нас запаяны разные СДРАМ и ДатаФлешь, вот и получается, что советы одного не подходят другому. У меня ОЗУ-хи k4s641632h-tc75, флешь - at45db321c rombootP.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
может это и есть то что я ищю?
--------------------
|
|
|
|
|
Feb 22 2007, 12:22
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(PrSt @ Feb 22 2007, 09:20)  щяс у меня стоят такие значения регистр памяти (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 который не может загрузить мой кернел...
--------------------
|
|
|
|
|
Feb 22 2007, 16:24
|

Группа: Новичок
Сообщений: 14
Регистрация: 10-01-07
Из: Ukraine,Odessa
Пользователь №: 24 286

|
полистал исходники romboot нашел такие вот строки (dataflash.h) Код #define AT45DB161 0x2c #define AT45DB321 0x34 #define AT45DB642 0x3c #define AT45DB128 0x10 у нас на плате стоит AT45DB011B согласно даташиту на AT91RM9200 (стр 87) проц поддерживает эту датафлешку, но она просто не описана в рамбут, из -за этого получается проблема при программировании я правильно мыслю?
|
|
|
|
|
Feb 22 2007, 17:47
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
B)--> (This is j.b @ Feb 22 2007, 15:24)  полистал исходники romboot нашел такие вот строки (dataflash.h) Код #define AT45DB161 0x2c #define AT45DB321 0x34 #define AT45DB642 0x3c #define AT45DB128 0x10 у нас на плате стоит AT45DB011B согласно даташиту на AT91RM9200 (стр 87) проц поддерживает эту датафлешку, но она просто не описана в рамбут, из -за этого получается проблема при программировании я правильно мыслю? [/quote] в принципе верно, если пропишеш ее код - опознает ее... только те надо ее код найти..
--------------------
|
|
|
|
|
Feb 23 2007, 01:29
|

Группа: Новичок
Сообщений: 14
Регистрация: 10-01-07
Из: Ukraine,Odessa
Пользователь №: 24 286

|
код взял из даташита. (это маскированые биты стаус-регистра) завтра откомпиляю.. проверим
|
|
|
|
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|
|