Вот здесь обсуждалось как заставить U-boot правильно работать с Watchdog,чтобы в случае, если Bootstrap его не отключает, во время выполнения U-boot не происходило ненужных перезагрузок(например, при ожидании сетевого соединения). Обещали выложить в конце рецепт, но видимо забили. Кто-нибудь может объяснить что нужно сделать?
P.S. U-boot 1.3.4, собран, работает нормально во всем кроме watchdog.
Ну тогда может быть кто-то может подсказать другой путь решения проблемы, если нужно чтоб Watchdog работал корректно в случае установки на плату Linux? Только грузить без U-boot?
Тихо, сам с собою я веду беседу...
Решение найдено, выкладываю рецепт, который помог мне.
Очень помогла, как ни странно эта знаменитая ссылка
Моя плата SK-AT91SAM9XE512-S3E, но думаю подойдет всем.
Собирать "как мне надо" научился пока только, U-boot 1.3.4, но уже чувствую в себе силы разобраться и с последними версиями.
TEXT_BASE зависит от того как собран Bootstrap(см. первую ссылку), у меня так.
4)Накладываем патчи или частично правим руками
5)Правим include/configs/at91sam9260.h
Если хочется меняем задержку ожидания ввода.
Обязательно согласуем SPI Dataflash с Bootstrap-ом, у меня так
Я хочу грузить с dataflash cs0 поэтому правлю параметры в этой секции следующим образом адреса - от балды
6)Теперь выполняем самый загадочный для меня шаг. Для работы watchdog-драйвера нужно добавить в include/configs/at91sam9260.h следующий define, я сразу после стража включения вставил.
Судя по описаниям драйвера watchdog-а этого должно быть достаточно, но make дает ошибку, по этому собираем в вот таком виде
как написано в Readme.at91 в /doc.
выполняем последовательно(с учетом вашего eabi-компилятора и того куда вы хотите размещать загрузчик)
и
теперь комменируем(или удаляем) в include/configs/at91sam9260.h
И вот теперь все собирается.
Пока не разобрался в чем тут дело, но в таком виде робит.
Вообще на мой взгляд эти пляски с бубном из-за кривой системы конфигов через дефайны, которая в ходу у U-Boot.
Как результат, U-boot не перегружается watchdog-ом, он правда тормозит, в том числе из-за сети, но это уже совсем другая история...
P.S. Буду признателен, если расскажут как ускорить U-boot
P.P.S Буду признателен за указание на косяки в этом мини-HOWTO
Далеко не факт :) Кому-то когда это все равно пригодится.
Лучше разбираться с последними версиями - 1.3.4 мне показалась куцая, например обнаружил что в последних версиях работает mmc и usb, существенно улучшен код работы с nand и macb. Сейчас посмотрел - сброс собаки выполняется ф-ей WATCHDOG_RESET(); так вот у атмелов она вызывается только в драйвере последовательного порта на котором отладочная консоль висит при приеме байта - по идее должно сбрасывать все.
Ага, я с этим разобрался. Навставлял в драйвере записи на флэш в "наиболее цикличных" местах. Вроде пока тесты проходят - копируется без ребута.
Я сам так думал, так в Readme.at91 написано, но у меня в таком случае ребутается U-boot. А если сначала собираю с двумя дефайнами, а потом не очищая собираю закомментив первый - то работает, сам не понимаю как так. С одним дефайном собираю "с нуля" - ошибка сборки(как раз watchdog_reset не объявлен вроде).
Чтоб не требовалось по файлам поиск выполнять подскажу расположение файлов для правки:
common/cmd_mem.c - команды U-boot для работы с памятью и связанные с ними функции
drivers/mtd/dataflash.c -общие функции dataflash
drivers/mtd/at45.c -специфические функции для dataflash Atmel
Наверное. Там тот же watchdog уже без патчей есть, наверняка также уже везде "навставлян ресет").
Ток он у меня кракозябры выдает - то есть грузит - но вывод нечитаемый и в меню не зайдешь, там видимо дополнительные настройки UART появились или в том духе. Зато уже неплохо изучил U-boot, пока решал эту проблему
Ура, товарищи!!!
Заработало. Собрал 2010.06 без кракозябр. Они раньше были с 2009.06 версии и старше(кстати заметил в этой версии бинарник у-бута у меня перевалил за 170 000 байт). Изменил как с ядром инициализацию частоты в конфиге с 18.432 на 12.000 МГц, все заработало.
в include/configs/at91sam9260ek.h
Код
Мне особенно интересно, почему до этого оно работало.
Единственный минус - по-прежнему на записи в Dataflash watchdog ребутает - то есть все же нужно править драйвер этого дела самостоятельно.
Может у них багтрекер есть, надо б написать, ватчдог вроде уже год(с 2009.06) включен официально, а не робит как надо все равно.
P.S. Теперь с двумя дефайнами сразу робит)
Ну вообще планируется разработка большого количества драйверов для будущей системы, за зависание кода Линукс я особо не беспокоюсь, но вот мой будущий код может оказаться с багами, а разрабатываемый девайс лучше бы было ребутнуть в этом случае, да и мало ли от чего может быть зависание - уязвимость в ядре, хакерская атака и т.д. Вообще watchdog полезная штука.
Поначалу это не было прям совсем критично, но раз уж начал разбираться, стало интересно до конца все разрулить. По ходу с загрузчиками стал подружней)
P.S. Про watchdog в гугле можно найти, если по самой фиче интересно)