Настройването на watchdog_set_period на максимална стойност причинява рестартиране

Не знам много за това как работи таймерът за наблюдение във вградена среда и съм изправен пред проблем, свързан с таймера за наблюдение

Максималната стойност на изчакване, дефинирана в един от макросите, е 55 и когато се опитаме да настроим тази стойност от функцията watchdog_set_period, нашата платка се рестартира

#define Max_time_out 55

watchdog_set_period(int период) // Задаване на брояч за изчакване на watchdogs

където период = 55

Сега нещо очаквано ли е или как каква е причината за рестартиране

Записваме тази стойност на периода на някакъв драйвер, до който имаме достъп чрез файлов дескриптор.


person Amit Singh Tomar    schedule 23.08.2013    source източник
comment
Първото нещо е, че трябва да разберете какво представлява таймерът за наблюдение.   -  person Santhosh Pai    schedule 23.08.2013
comment
Трябва периодично да обновявате таймера за наблюдение. В противен случай платката се рестартира, когато таймерът за наблюдение изтече   -  person stev    schedule 23.08.2013
comment
@SanthoshPai Съгласих се с това и може би ще науча нещо тук   -  person Amit Singh Tomar    schedule 23.08.2013
comment
watchdog timer е специален таймер, който може да се използва за откриване на прекъсване на някаква задача. Не можете да използвате това като таймер с общо предназначение.   -  person Shihab    schedule 23.08.2013


Отговори (2)


връзката съдържа това описание на таймерите за наблюдение.

A watchdog timer is a piece of hardware that can be used to automatically detect software anomalies and reset the processor if any occur. Generally speaking, a watchdog timer is based on a counter that counts down from some initial value to zero. The embedded software selects the counter's initial value and periodically restarts it. If the counter ever reaches zero before the software restarts it, the software is presumed to be malfunctioning and the processor's reset signal is asserted. The processor (and the embedded software it's running) will be restarted as if a human operator had cycled the power.

Не сте публикували кода, така че не можем да преценим какъв точно е проблемът. Ако сте написали кода, проверете дали вашият код причинява някакви проблеми, които причиняват нулиране на таймера watch dog.

person Santhosh Pai    schedule 23.08.2013

Таймерът за наблюдение е специален вид таймер, който обикновено се намира във вградени системи, който се използва за откриване кога работещият софтуер/фърмуер е закачен за някаква задача. Таймерът за наблюдение е основно таймер за обратно броене, който брои от някаква първоначална стойност до нула. Когато се достигне нула, таймерът за наблюдение разбира, че системата е затворена и я нулира.

Следователно работещият софтуер трябва периодично да актуализира таймера за наблюдение (в безкраен цикъл while) с нова стойност, за да спре достигането му до нула и да причини нулиране. Когато работещият софтуер е заключен, изпълнявайки определена задача и не може да актуализира (опресняването е неуспешно) таймера за наблюдение, таймерът в крайна сметка ще достигне нула и ще се извърши нулиране/рестартиране.

Така че в обобщение, ако активирате таймера за наблюдение, тогава трябва периодично да обновявате таймера за наблюдение. В противен случай платката се рестартира, когато таймерът за наблюдение изтече.

person stev    schedule 23.08.2013
comment
Искам да кажа, че всеки път, когато се опитваме да настроим брояча за изчакване на watchdogs на стойност 55, която е max_time_out, платката ще се рестартира ли? - person Amit Singh Tomar; 23.08.2013
comment
@AmitSinghTomar: Таймерите за гледане на кучета винаги се нуждаят от някакво събитие, за да се случи, ако не получи никакво събитие от софтуера, броячът ще изтече, което ще доведе до нулиране на платката. - person Santhosh Pai; 23.08.2013
comment
Да, платката ще се рестартира след 55 времеви единици (предполагам, че това е в милисекунди). Нека приемем, че имате карта (която прави някои вградени системни неща) в PCI или PCIe слот на компютър. Ако watchdog рестартира картата, тогава можете дори да свържете нулирането на картата към PC reset, за да рестартирате компютъра. Така че, както казах по-рано, трябва периодично да опреснявате watchdog, след като е активиран. - person stev; 23.08.2013