afilis писал(а):Вроде как, в mainline-ветке ядра сопроцессор вообще не задействован и ничем не управляется
Пошёл сейчас проверил отключается ли питание сопроцессора после
shutdown в
linux. Проверял я это так: с помощью
h3_arisc_api дал задание сопроцессору мигать каждую секунду красным светодиодом длительное время; И выключил систему командой
shutdown:
Код: Выделить всё
sudo ./arisc "pulsgen_pin_setup(0, PA, 15, 0)"
sudo ./arisc "pulsgen_task_setup(0, 1000000000, 500000000, 500000000, 0)"
sudo shutdown now
Светодиод
спустя 10 мин продолжает мигать. Это значит, что питание сопроцессора и блока
GPIO всё ещё включено. И с большой вероятностью, питание
ARM процессора включено тоже. Отсюда и нагрев чипа после выключения
linux. Думаю, с этим мы разобрались.
afilis писал(а):MX_Master писал(а):Если после shutdown ARISC проц не отключается, то всё можно сделать очень просто.
Каким образом?
Первый вариант:
Добавить в мою прошивку новый модуль, который будет получать команды из
Linux и выполнять их. Первой такой командой должно стать "полное выключение питания чипа с заданной задержкой". Т.е. послали мы сопроцессору команду "выключить чип через 2 минуты", он ждёт 2 минуты и рубит питание всех блоков чипа. Чтобы сопроцессор получал такое сообщение, надо махнуть стандартную прогу
shutdown на скрипт. Скрипт будет посылать сообщение сопроцессору и выполнять переименованную прогу
shutdown.
Второй вариант:
Добавить в мою прошивку новый модуль, который будет выполнять роль ещё одного
watchdog для
Linux. Этот модуль, скажем, каждую минуту должен получать от
Linux весточку, что всё хорошо и система работает. Если сопроцессор не получает таких весточек, скажем, более 3-х минут, он должен выключить питание всего чипа. Скрипт отправки таких весточек из
Linux можно положить в автозагрузку системы.
Если есть ещё варианты, предлагайте. Лучший из них мы и сделаем.