|
Cirrus + Flash + download + redboot, грабли |
|
|
|
Apr 12 2008, 07:39
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 23-03-08
Пользователь №: 36 156

|
Решили замутить тут систему на Cirrus (Arm9, 9301) и Flash(Samsung). Делюсь опытом. Пройденные грабли: 1) Утилита download (версия 2007года) грузит по com порту 2048 байт стартового загрузчика в ethernet буфер arma и передает ему управление. Этот стартовый загрузчик грузит оставшуюся часть в ОЗУ. Следовательно, если дошли до этого этапа - с ОЗУ все тип-топ. После загрузки передает управление загруженной части в ОЗУ. Она проверяет наличие флэш. Появляется сообщение Program the nor FLASH. В нашем случае на этом жизнь останавливалась. Анализ исходников download выявяил следующее: какой-то циррусовский ламерюга в этом месте передергивает com порт на скорость 115200. Поэтому лезем в main.c и в main() и в самом начале функции коментим функцию SetBaud() и заодно enable_debugtimer(). 2) Но жизнь все не налаживалась... Анализ исходников показал, что download заточена только под intel и AMD флэшки, никакого самсунга там не преполагалось. Так как голос разума подсказывает, что наша флэшка совместима с amd, делаем следующее: в файле amd.с меняем 3 на 4 в #define MAX_AMD_compatible, и в структуре под этим определением добавляем строчку {0x00EC,"samsung"}, где число носит смысл ManufactureID. После этого появился долгожданный процентный бегунок записи во флэш redboot.bin 3) Заметили неустойчивость в работе download - либо шьет как положено, либо вешается на Program the nor FLASH. повторный анализ исходников показал, что все тот же цируссовский ламерюга в download.c употребил такую конструкцию while((cChar=getChar(10))!=0){}. Смысл "10" тут наверно всем ясен (время ожидания), поэтому изменение его на "100" решает проблему.
Не пройденные грабли (это вопросы к участникам форума): 1) После прошивки redboot в флэш и старта - двойное мигание LED с интервалом около 2 сек. Игры с разными компиляциями redboot могут давать еще один случай, когда LED горит на постоянку, но при этом reset блокируется (т.е. спасает только передергивание питания). По com порту всегда тишина. Что за симптомы?
|
|
|
|
|
Apr 12 2008, 10:36
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 23-03-08
Пользователь №: 36 156

|
Цитата(aaarrr @ Apr 12 2008, 12:53)  Вам придется изменить инициализацию SDRAM в RedBoot и добавить свою флеш в список. Где именно править, исходники или конфигурационные файлы? (просто только приступил к этому вопросу) Цитата(aaarrr @ Apr 12 2008, 12:53)  P.S. Что это всех так на самсунговские флеши потянуло, интересно? да они вроде не плохие уж совсем ... по описаниям
|
|
|
|
|
Apr 14 2008, 18:47
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 23-03-08
Пользователь №: 36 156

|
продолжаю:
Вопрос со SDRAM решился - оказалось достаточно было в файле edb93xx.patch, где задаются установки по умолчанию, прописать вместо SDCSn3 SDCSn0. И появилось долгожданное приглашение redboot. Кстати, вариант предлагаемый лимонниками - создать файл SDRAM.ecm, не знаю почему, но не прокатил. Спасибо aaarrr за совет- такое характерное мигание действительно указывает на проблемы с SDRAM
Новые грабли: Опять проблема с FLASH (мать ее) - redboot пишет : FLASH : Driver init error. Нутром чую, что опять дело в ID.
попутно вопросик: имеет ли значение (для redboot) тип флэши: top или botom ?
Сообщение отредактировал AlChi - Apr 14 2008, 18:51
|
|
|
|
|
Apr 14 2008, 18:55
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(AlChi @ Apr 14 2008, 22:47)  Новые грабли: Опять проблема с FLASH (мать ее) - redboot пишет : FLASH : Driver init error. Нутром чую, что опять дело в ID. Может быть, "FLASH: driver init failed"? Цитата(AlChi @ Apr 14 2008, 22:47)  попутно вопросик: имеет ли значение (для redboot) тип флэши: top или botom ? Имеет, конечно. У них же разная конфигурация секторов.
|
|
|
|
|
Apr 14 2008, 18:59
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 23-03-08
Пользователь №: 36 156

|
Цитата(aaarrr @ Apr 14 2008, 22:55)  Может быть, "FLASH: driver init failed"? да ok, попробую, отпишусь. Цитата(aaarrr @ Apr 14 2008, 22:55)  Имеет, конечно. У них же разная конфигурация секторов. Если у нас top не стоит, можем ли мы полноценно работать только с bottom?
|
|
|
|
|
Apr 15 2008, 18:05
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 23-03-08
Пользователь №: 36 156

|
продолжим. Есть такой файл: flash_am29xxxxx.inl В нем прописаны установки для flashей amd в виде последовательности структур. В нашем случае оказалось достаточно взять близкую по параметрам флэш amd и переписать некоторые ее параметры. А именно DeviceID и boot blockи и т.п. Все! Redboot поднят! (надеюсь последние :-) ) грабли: Не пашет Ethernet. Симптомы такие: после установки ip адресов MAC и т.п.(fconfig) и пересброса значок "+" замирает примерно на минуту, затем появляется оставшаяся часть redboota с приглашением. Никаких erroroв нет. Однако пингование не проходит. Сначала думал, что и здесь нужно прописывать что то типа ID, но порывшись в pdf на ethernet микросхему, ничего такого не нашел.  Что думаете: физика или прога?
Сообщение отредактировал AlChi - Apr 15 2008, 18:07
|
|
|
|
|
Apr 17 2008, 18:13
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 23-03-08
Пользователь №: 36 156

|
Цитата(aaarrr @ Apr 15 2008, 23:20)  RedBoot какой версии? Какой PHY, как сконфигурирован, видит ли кабель? Redboot идет в составе дистрибутива для сборки linux от цитруссовых. если отдельно то качается отсюда http://arm.cirrus.com/files/index.php?path=linux%2Fpackages/версия 2.0. от 29 января 2007 года. По поводу ethernet дело оказалось в железе, поэтому сейчас с ним все ok. Но вот теперь просто не нашутку пипец. Итак по порядку: redboot работает без проблем: грузит, пишет, читает, запускает и нигде не спотыкается (ттт) А проблема в том, что при запуске ядра после Uncompressing Linux.............................. тишина. Лезем на форумы - полный бардак! Цитруссовый аналогичные вопросы игнорируют, поддержка отечественного аналога ТИОН-ПРО либо косит под дурачков, либо тоже откровенно игнорирует. А судя по количеству таких вопросов, тема то очень и очень актуальна! Ну делать нечего - начинаем игры с различными сборками под различные процессоры (01, 02, 07, 12, 15), изучение исходников загрузчика линух и ядра  и вобщем можно было бы много писать впечатлений, но основные умозаключения такие: 1) судя по тому, что при комманде "exec" сообщение "Uncompressing Linux...." не появляется, а при "exec 0xc0080000" появляется, то загрузчик Linux стартует и даже запускает функцию gunzip()? а вот почему дальше не идет - не понимаю  Такое ощущение, что происходят какие то игры с виртуальными и физическими адресами в момент перехода от первичного загрузчика ядра (в котором unzip) к основному (там должно быть сообщение "boot kernel") Что это может быть? Спасибо
Сообщение отредактировал AlChi - Apr 17 2008, 18:28
|
|
|
|
|
Apr 17 2008, 18:39
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 23-03-08
Пользователь №: 36 156

|
Цитата(aaarrr @ Apr 17 2008, 22:33)  Это уже очень хороший результат  А консоль-то прописали (console=ttyAM0)? Да, я пробовал различные варианты, в том числе и с "console=ttyAM0,57600" есть какая то сырая инфа (из форумов) о том, что redboot подготавливает табличку параметров для linux и поэтому версии linux от 2.6.17 не нужно специально компилить с указанием SDCS, CS и т.п. Толковых доков на это дело разумеетс нет
|
|
|
|
|
Apr 17 2008, 19:22
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 23-03-08
Пользователь №: 36 156

|
Огромное спасибо! Завтра займусь.
p.s. небольшая поправка. для edb9302a -> sdcsn0, у нас на ней sdram
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|