Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cirrus + Flash + download + redboot
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
AlChi
Решили замутить тут систему на 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 порту всегда тишина. Что за симптомы?
aaarrr
Цитата(AlChi @ Apr 12 2008, 11:39) *
Не пройденные грабли (это вопросы к участникам форума):
1) После прошивки redboot в флэш и старта - двойное мигание LED с интервалом около 2 сек. Игры с разными компиляциями redboot могут давать еще один случай, когда LED горит на постоянку, но при этом reset блокируется (т.е. спасает только передергивание питания). По com порту всегда тишина. Что за симптомы?

Симптомы указывают на то, что RedBoot не видит SDRAM.

Вам придется изменить инициализацию SDRAM в RedBoot и добавить свою флеш в список.

P.S. Что это всех так на самсунговские флеши потянуло, интересно?
AlChi
Цитата(aaarrr @ Apr 12 2008, 12:53) *
Вам придется изменить инициализацию SDRAM в RedBoot и добавить свою флеш в список.


Где именно править, исходники или конфигурационные файлы? (просто только приступил к этому вопросу)

Цитата(aaarrr @ Apr 12 2008, 12:53) *
P.S. Что это всех так на самсунговские флеши потянуло, интересно?


да они вроде не плохие уж совсем ... по описаниям cool.gif
aaarrr
Цитата(AlChi @ Apr 12 2008, 14:36) *
Где именно править, исходники или конфигурационные файлы? (просто только приступил к этому вопросу)

Начать советую с конфигурации, хотя это дело на любителя. Если самсунговская флеш является полным аналогом какой-нибудь AMD'шной, то можно просто скопировать её данные и исправить IDs.

Еще, как я понимаю, у Вас подключение SDRAM отличается от китового.
AlChi
продолжаю:

Вопрос со SDRAM решился - оказалось достаточно было в файле edb93xx.patch, где задаются установки по умолчанию, прописать вместо SDCSn3 SDCSn0. И появилось долгожданное приглашение redboot. Кстати, вариант предлагаемый лимонниками - создать файл SDRAM.ecm, не знаю почему, но не прокатил. Спасибо aaarrr за совет- такое характерное мигание действительно указывает на проблемы с SDRAM

Новые грабли:
Опять проблема с FLASH (мать ее) - redboot пишет : FLASH : Driver init error. Нутром чую, что опять дело в ID.

попутно вопросик: имеет ли значение (для redboot) тип флэши: top или botom ?
aaarrr
Цитата(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 ?

Имеет, конечно. У них же разная конфигурация секторов.
AlChi
Цитата(aaarrr @ Apr 14 2008, 22:55) *
Может быть, "FLASH: driver init failed"?

да

ok, попробую, отпишусь.

Цитата(aaarrr @ Apr 14 2008, 22:55) *
Имеет, конечно. У них же разная конфигурация секторов.


Если у нас top не стоит, можем ли мы полноценно работать только с bottom?
aaarrr
Цитата(AlChi @ Apr 14 2008, 22:59) *
Если у нас top не стоит, можем ли мы полноценно работать только с bottom?

Можете.
AlChi
продолжим. Есть такой файл: flash_am29xxxxx.inl В нем прописаны установки для flashей amd в виде последовательности структур. В нашем случае оказалось достаточно взять близкую по параметрам флэш amd и переписать некоторые ее параметры. А именно DeviceID и boot blockи и т.п. Все! Redboot поднят!

(надеюсь последние :-) ) грабли:
Не пашет Ethernet. Симптомы такие: после установки ip адресов MAC и т.п.(fconfig) и пересброса значок "+" замирает примерно на минуту, затем появляется оставшаяся часть redboota с приглашением. Никаких erroroв нет. Однако пингование не проходит. Сначала думал, что и здесь нужно прописывать что то типа ID, но порывшись в pdf на ethernet микросхему, ничего такого не нашел. 05.gif
Что думаете: физика или прога?
aaarrr
RedBoot какой версии? Какой PHY, как сконфигурирован, видит ли кабель?
AlChi
Цитата(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), изучение исходников загрузчика линух и ядра 07.gif и вобщем можно было бы много писать впечатлений, но основные умозаключения такие:
1) судя по тому, что при комманде "exec" сообщение "Uncompressing Linux...." не появляется, а при "exec 0xc0080000" появляется, то загрузчик Linux стартует и даже запускает функцию gunzip()? а вот почему дальше не идет - не понимаю wacko.gif Такое ощущение, что происходят какие то игры с виртуальными и физическими адресами в момент перехода от первичного загрузчика ядра (в котором unzip) к основному (там должно быть сообщение "boot kernel")

Что это может быть? Спасибо
aaarrr
Цитата(AlChi @ Apr 17 2008, 22:13) *
1) судя по тому, что при комманде "exec" сообщение "Uncompressing Linux...." не появляется, а при "exec 0xc0080000" появляется, то загрузчик Linux стартует и даже запускает функцию gunzip()? а вот почему дальше не идет - не понимаю wacko.gif

Это уже очень хороший результат smile.gif А консоль-то прописали (console=ttyAM0)?
AlChi
Цитата(aaarrr @ Apr 17 2008, 22:33) *
Это уже очень хороший результат smile.gif А консоль-то прописали (console=ttyAM0)?

Да, я пробовал различные варианты, в том числе и с "console=ttyAM0,57600"

есть какая то сырая инфа (из форумов) о том, что redboot подготавливает табличку параметров для linux и поэтому версии linux от 2.6.17 не нужно специально компилить с указанием SDCS, CS и т.п. Толковых доков на это дело разумеетс нет 05.gif
aaarrr
Как я понимаю, у Вас SDRAM висит на nSDCS3? Тогда должно запускаться ядро под EDB9302A.

Вот список файлов для правки под конкретную конфигурацию памяти:
Код
include/asm-arm/arch-ep93xx/memory.h
include/asm-arm/arch-ep93xx/hardware.h
arch/arm/mach-ep93xx/edb93??.c
arch/arm/mach-ep93xx/Makefile.boot
AlChi
Огромное спасибо! Завтра займусь.

p.s. небольшая поправка. для edb9302a -> sdcsn0, у нас на ней sdram
AlChi
Ну все, тему можно считать закрытой - linux пашет, все довольны и счастливы.
Дело оказалось в том, что при редактировании патча от лимонников, текстовый редактор сохранял бэкап файлик (название отличалось только тильдой), а при сборке 07.gif этот бэкапчик подцеплялся и что происходило дальше, думаю, всем понятно.

Спасибо aaarrr за участие,
всем удачи.
aaarrr
Цитата(AlChi @ Apr 19 2008, 20:40) *
...при сборке 07.gif этот бэкапчик подцеплялся и что происходило дальше, думаю, всем понятно.

Странно как-то. Может *.o файлы не удаляли?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.