Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Embedded Linux
Внешний watchdog
plr
Добавлено 11.10.2012 11:26
0
Сообщение: 1
plr
0

Пункты: 898
Регистрация: 06.10.2012
Мы пользуемся на PC аппаратным внешним watchdog, например, http://www.watchdogs.ru/

Переходя на платформу ARM думаем как можно упростить и удешевить сторожевой таймер, оставив его независимым.

Мы пользуемся только функциями аппаратной перезагрузкой системы, в случае глухого зависания.

И сброс питания модема в случае его залипания - я читал на форуме, что вроде как можно программно обесточить USB и заново подать питания, чтобы модем перезагрузился по питанию. Но как конкретно это делать - я не нашел, если можно, подскажите.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 11.10.2012 11:47 Редактировалось 11.10.2012 12:14 Сообщение: 2
sasamy
4.71

Пункты: 83570
Регистрация: 14.08.2009
Цитата

Переходя на платформу ARM думаем как можно упростить и удешевить сторожевой таймер, оставив его независимым.


На многих SoC есть встроенный сторожевой таймер - это обычный аппаратный счетчик (вернее не совсем обычный - он специально предназначен для этого, его можно сконфигурировать только один раз - после этого даже если произойдет ошибочная запись в регистры его нельзя остановить или наоборот запустить) который достигнув порогового значения генерирует сигнал reset, чтобы он не сработал кто-то должен постоянно периодически обнулять счетчик. В Linux есть стандартный интерфейс для WDT и программы юзерспейс для его обнуления.

Цитата

что вроде как можно программно обесточить USB и заново подать питания, чтобы модем перезагрузился по питанию. Но как конкретно это делать - я не нашел, если можно, подскажите.


на многих платах питанием USB (+5В) можно управлять програмно - через интерфейс GPIO
https://www.ridgerun.com/developer/wiki/index.php/How_to_use_GPIO_signals

и транзисторный ключ (см. схемы плат).
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 11.10.2012 11:59 Сообщение: 3
Pavel Ivanchenko
Admin
4.39

Пункты: 92805
Регистрация: 24.03.2009
Пол: Мужчина
Для AT91SAM9G45 написана простенькая утилита для управления питанием USB портов (при загрузке ее лог выводится).
Писал ее по не знанию, достаточно было в системе прописать управляющие пины как GPIO, а далее рулить всем уже через скрипты.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 11.10.2012 12:10 Редактировалось 11.10.2012 12:15 Сообщение: 4
sasamy
4.71

Пункты: 83570
Регистрация: 14.08.2009
Цитата

Писал ее по не знанию, достаточно было в системе прописать управляющие пины как GPIO, а далее рулить всем уже через скрипты.


В Linux есть еще стандартный интерфейс для управления питанием USB, не помню где нужно дергать через sysfs (можно нагуглить) но я не уверен - сработает ли это на этих платах (хотя пины для управления питанием прописаны в board-файлах - теоретически должно работать), на некоторых PC срабатывает.
Спуститься к концу Подняться к началу
Персональная информация
asy
Добавлено 05.01.2013 17:08 Сообщение: 5
asy
0

Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
Цитата
На многих SoC есть встроенный сторожевой таймер

А что в плане SK-MAT91SAM9G45 ?

Ядро (3.7.1), вроде как, собрал с поддержкой watchdog:

--- Watchdog Timer Support
[*] WatchDog Timer Driver Core
[*] Disable watchdog shutdown on close
*** Watchdog Device Drivers ***
[ ] Software watchdog
[*] AT91SAM9X / AT91CAP9 watchdog

Однако, при старте, пишется

at91sam9_wdt: sorry, watchdog is disabled
at91_wdt: probe of at91_wdt failed with error -5

Его нет на самом деле, или как-то включается ?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 05.01.2013 23:19 Редактировалось 05.01.2013 23:20 Сообщение: 6
sasamy
4.71

Пункты: 83570
Регистрация: 14.08.2009
Цитата

at91sam9_wdt: sorry, watchdog is disabled
at91_wdt: probe of at91_wdt failed with error -5

Его нет на самом деле, или как-то включается ?


он отключается в bootstrap - как я уже говорил отключить или сконфигурировать его можно только один раз, поэтому в ядре после этого уже ничего нельзя сделать. Не забывайте что убут грузится тоже не мгновенно так что там тоже нужно включать поддержку - иначе загрузка может и не успеть завершиться до запуска демона в юзерспейс который будет обнулять счетчик с заданной периодичностью - сторожевой таймер перезагрузит систему и так по кругу :)
Спуститься к концу Подняться к началу
Персональная информация
asy
Добавлено 05.01.2013 23:40 Редактировалось 05.01.2013 23:59 Сообщение: 7
asy
0

Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
Цитата
он отключается в bootstrap

Примерно понятно. Про него не читал ещё...

Цитата
сторожевой таймер перезагрузит систему и так по кругу :)
Известная ситуация...
Бывает, что современные дисковые системы очень долго чекаются. ;-)
Спуститься к концу Подняться к началу
Персональная информация
asy
Добавлено 12.01.2013 01:48 Редактировалось 12.01.2013 01:55 Сообщение: 8
asy
0

Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
Цитата
поэтому в ядре после этого уже ничего нельзя сделать.
А, при этом, драйвер правду пишет при инициализации ?

at91sam9_wdt: enabled (heartbeat=15 sec, nowayout=1)

А то непонятно что-то. Сам не настраивал ничего пока, демон запускается так по-умолчанию: watchdog -t 60 /dev/watchdog

Вроде как, получается, что таймер на 15 секунд, а сброс - через 60. То есть, должно бы всё перегружаться регулярно, но нет. Однако, в принципе, оно работает: если убить процесс watchdog, следует перезагрузка. Только перегружается в пределах 4-х секунд, раз 5 уже пробовал - невозможно же так попадать под конец работы счётчика... Ядро, при этом, грузится секунд 11-12...
Спуститься к концу Подняться к началу
Персональная информация
asy
Добавлено 12.01.2013 11:39 Редактировалось 29.01.2013 23:42 Сообщение: 9
asy
0

Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
Цитата
он отключается в bootstrap
И ещё несколько вопросов:

1. bootstrap для nand собирается из того же at91bootstrap, только собирается с Flash Memory Technology > (x) NAND flash ?
Смущает расположение его в каталоге utils/SD_bootstrap (речь про виртуальный образ, который с платой раздаётся).

UPD: Выяснилось, что нет

2. При сборке новым комилятором возникает ошибка
undefined reference to `__gnu_thumb1_case_uqi'
Кое-что в сети про это пишут, но мало. Я, пока, собрал для SD без "Build in thumb mode". Это только на размер влияет, как пишут, или ещё засады есть, всё же ? Кстати, тут тоже надо править файл board/<что-то>, если пытаться bootstrap обновить до 3.4.4, скажем ?
Спуститься к концу Подняться к началу
Персональная информация
asy
Добавлено 29.01.2013 23:36 Сообщение: 10
asy
0

Пункты: 2790
Регистрация: 28.10.2012
Пол: Мужчина
Цитата
Не забывайте что убут грузится тоже не мгновенно так что там тоже нужно включать поддержку - иначе загрузка может и не успеть завершиться до запуска демона в юзерспейс который будет обнулять счетчик с заданной периодичностью - сторожевой таймер перезагрузит систему и так по кругу :)

Судя вот по этому патчу:
http://starterkit.ru/html/index.php?name=files&op=view&id=13
проблема замечена только в drivers/mtd/at45.c. В принципе, в u-boot-2010.09, как я смотрю, WATCHDOG_RESET() много где встречается. Так что, иметь ввиду надо, но не факт, что сразу наступишь. По крайней мере, у меня проблемы не видно пока с исходным u-boot.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux