Первый запуск и загрузка
В: UART-консоль молчит, вывода загрузчика нет. В чём проблема?
О: Параметры последовательного порта: 1500000 бод, 8N1 (8 бит, без чётности, 1 стоп-бит). Убедитесь что сигнал RESET снят корректно после включения питания. Для диагностики: проверьте осциллографом сигнал SDMMC0_CLK — при попытке загрузки с SD-карты BOOTROM генерирует импульсы на этой линии. Отсутствие CLK означает отсутствие попытки загрузки.
В: Как ограничить количество активных ядер CPU через DTS или параметры ядра?
О: Вариант через DTS (status = "disabled" для cpu1..3) работает неполностью — htop может по-прежнему показывать все ядра. Надёжный способ — передать параметр ядра:
maxcpus=0— полностью отключает SMP-шедулер, остаётся только cpu0.maxcpus=1— аналогично, более явно.
Добавить параметр в barebox: дописать в переменную global.linux.bootargs.dyn.root в /env/boot/default. После внесения изменений выполнить saveenv.
В: Аппаратный watchdog не срабатывает при зависании системы — пакет watchdog из Ubuntu не помогает.
О: Пакет watchdog из дистрибутива может продолжать пинговать /dev/watchdog даже при зависании системы (watchdog-процесс остаётся запущен). Это не является неисправностью WDT.
Правильное использование — управлять watchdog из собственного приложения:
int fd = open("/dev/watchdog", O_RDWR); ioctl(fd, WDIOC_SETTIMEOUT, &timeout); // Периодически: ioctl(fd, WDIOC_KEEPALIVE, 0);
При реальном зависании приложения KEEPALIVE не придёт — WDT сработает и перезагрузит систему.
Для гарантии на удалённых устройствах рекомендуется дополнительный внешний аппаратный WDT, физически подтягивающий RESET процессора — он сработает даже при зависании ядра.