at91sam9260-sk + watchdog
bitterman |
|
|
|
|
|
|
|
Пункты: 329 |
Регистрация: 05.02.2010 |
|
|
|
да у меня пока вообще по-глупому -- инитрд нужен только для того, чтобы сделать pivot_root на mtd1 :-) в общем, попробую его выкинуть. yaffs2 кстати у меня там.
а с бутстрапом на тему "без убута" поиграюсь, но чуть позже. пока инитрд нафиг :-) и получится вроде нормально -- один бутстрап для прошивки ядра (ну, пока не сделаю прошивку ядра в онлайне), один для продакшена :-) |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 77331 |
Регистрация: 14.08.2009 |
|
|
|
Если u-boot нужен для отладки и прочего - а он действительно здорово выручает при отладке - можно сделать временный костыль - непосредственно перед передачей управления ядру пнуть для надежности собаку чтобы она обнулилась - авось начнет дотягивать :) |
|
|
|
|
|
bitterman |
|
|
|
|
|
|
|
Пункты: 329 |
Регистрация: 05.02.2010 |
|
|
|
я сам в этом направлении думал, поэтому тут первый пост такой и есть.
в честь этой мысли посмотрел, что в новых убутах есть драйвер вотчдога для этого процессора, но срабатывает он исключительно в самом начале убута.
придётся комплектному убуту 1.1.5 добавить одну строчку в нужное место. ну, или сначала всё же выкинуть initrd :-) |
|
|
|
|
|
bitterman |
|
|
|
|
|
|
|
Пункты: 329 |
Регистрация: 05.02.2010 |
|
|
|
наконец-то добился
AT91SAM9 Watchdog enabled (heartbeat=15 sec, nowayout=0)
Убрал инитрд, сделал в common/cmd_bootm.c в u-boot где-нибудь после распаковывания ядра сброс вотчдога. по пути пришлось править хидер убута, потому что там стоял неправильный ключ записи в регистр вотчдога (было 0xFF << 24 вместо 0xA5 << 24).
Строчка есть, а вотчдог всё равно не алё. Проверяю я простым модулем hang.ko, который берёт один и тот же спинлок два раза при своей загрузке. Ядро упало (об этом длинное сообщение из серии
BUG: soft lockup - CPU#0 stuck for 61s! [insmod:437]
Modules linked in: hang(+)
и ещё много чего (включен режим отладки спинлоков).
Но система не перезагружается. Что плохо :(
А отсутствующий после перезагрузки по вотчдогу датафлеш связан с тем, что надо настраивать параметры ресет контроллера. Мол, нельзя долго держать датафлеш выключенным, иначе проц его так и не увидит при загрузке. С этим я ещё разберусь, надо это делать, наверно, ещё в бутстрапе. |
|
|
|
|
|
bitterman |
|
|
|
|
|
|
|
Пункты: 329 |
Регистрация: 05.02.2010 |
|
|
|
хотя нет. я думал, что ядро ещё и само по себе его должно корректно сбрасывать, но, похоже, не в этой ситуации.
заюзал watchdog из busybox, всё получилось :-) |
|
|
|
|
|
bitterman |
|
|
|
|
|
|
|
Пункты: 329 |
Регистрация: 05.02.2010 |
|
|
|
ну, имеется в виду, что у драйвера того вотчдога хитрое устройство. для сброса вотчдога пока не открыли /dev/watchdog оно использует таймер. который, судя по всему, ещё работает после того, как ядро уронили таким образом.
это такая вот версия.
сейчас сделаю нормальный ресет, чтобы датафлеш не пропадал. |
|
|
|
|
|
sasamy |
|
|
|
|
|
|
|
Пункты: 77331 |
Регистрация: 14.08.2009 |
|
|
|
А можно вкратце описать - что нужно сделать чтобы watchdog прикрутить - я думаю это будет полезная информация для многих и самому в будущем пригодится :) много раз искал на форуме свои же темы некоторой давности для быстрого старта :) |
|
|
|
|
|
bitterman |
|
|
|
|
|
|
|
Пункты: 329 |
Регистрация: 05.02.2010 |
|
|
|
добью правильный ресет датафлеша и распишу :-)
а пока у меня почему-то убут 1.1.5 перестал видеть езернет. на пинге виснет или ещё какие-нибудь гадости говорит. ну и tftp не работает :-) |
|
|
|
|
|
lexx666 |
|
|
|
|
|
|
|
Пункты: 11780 |
Регистрация: 28.07.2011 |
Пол: Мужчина |
Из: Барнаул |
|
Заводил Watchdog на AT91SAM9G45.
1) Закоментировал выключение собаки в bootstrap
2) В U-Boot 2010.09 добавил в конфиг платы inlude/configs/at91sam9m10gm45ek.h сдедующее:
#define CONFIG_AT91SAM9_WATCHDOG
#define CONFIG_HW_WATCHDOG
скомпилил, залил на плату. U-boot перезагружаться перестал.
Tftpboot работает, пинги-шминги тоже :)
Ядро при загрузке перезагружается, что логично ибо поддержки собаки в ядре нету.
3) В ядре 2.6.36 добавил поддержку собаки - по менюшкам не помню, но по конфигу следующее строчки
CONFIG_WATCHDOG=y
CONFIG_AT91SAM9X_WATCHDOG=y
Скопмилил. Linux работает, не перезагружается. Вопрос как уронить ОСь, чтоб проверить, что ватчдог отрабатывает ? ))) |
|
|
|
|
|
|