Вы должны реализовать это на оборудовании. Целью «восстановления настроек по умолчанию с NVRAM» является восстановление так называемого «кирпичного» устройства.
Например, что, если настройка NVRAM изменена (космический луч?) Так, что устройство не может загрузиться? В этом случае предложенный вами демон опроса кнопок никогда не будет выполнен.
Для перезагрузки, удерживаемой в течение одной секунды, используйте цепь RC (резистор + конденсатор), чтобы «отменить» нажатие кнопки. Выберите постоянную времени RC, которая соответствует задержке в одну секунду. Используйте компаратор, следящий за напряжением ПДУ, чтобы подать сигнал на вывод RESET
на процессоре MIPS.
Для функции печати в течение трех секунд (восстановить настройки NVRAM по умолчанию) вам нужно сделать что-то более сложное, вероятно.
Одна возможность состоит в том, чтобы вставить крошечный микроконтроллер PIC в схему сброса, но использовать только микроконтроллер с ПЗУ с плавким предохранителем (не стираемое), а не NVRAM.
Более простая возможность - иметь ПЗУ с настройками по умолчанию на той же схеме и шине, что и NVRAM. Триггер J / K может стать частью вашей схемы сброса. Вам также понадобится настроенная на три секунды RC-схема и компаратор. На нажатиях менее трех секунд триггер должен защелкнуть выход 0
, а на трехсекундных нажатиях вторая RC-цепь должна запустить компаратор через 3 секунды и подать 1
на J / K защелка, которая переключит свой выход.
Триггерный выход Q
будет хранить один бит, сообщающий вашей схеме, был ли этот цикл сброса последующим после трехсекундного нажатия. Если это так, то этот вывод Q
управляет выбором микросхемы в NVRAM, а Q*
управляет выбором микросхемы в ПЗУ. (Я предполагаю, что выбор микросхемы является негативной логикой как для чипов NVRAM, так и для ROM.)
Затем, когда ваш процессор загружается, он выбирает настройки либо с NVRAM, либо из ПЗУ, в зависимости от строки выбора микросхемы.
Ваш загрузочный код может обнаружить, что он загружен с выбором микросхемы ПЗУ, и позже может сбросить триггер J / K с помощью линии GPIO. Тогда процессор сможет записывать хорошие значения обратно в NVRAM. Надеюсь, это разблокирует устройство.
Вы хотите использовать ПЗУ, которое нельзя стирать или использовать повторно. Этот тип ПЗУ наиболее устойчив к статическому электричеству, проблемам с питанием и радиации. Излучение намного больше, чем мы обычно предполагаем, и количество потока космических лучей умножается, например, при помощи устройства на борту авиалайнера.