На примере t113 c 32 битным ядром arm - для таких процессоров нужен патч для ядра. Начиная с ядра 6.12 для 64 битных arm патчить не нужно.
На момент написания в buildroot ядро версии 6.1-rc3. После патча ядро нужно собирать с нуля, поэтому если оно уже собрано нужно удалить его сборку, находясь в корне buildroot
rm -r ./output/build/linux-custom
скачать патч
wget -O -
https://cdn.kernel.org/pub/linux/kernel/projects/rt/6.1/older/patch-6.1-rc3-rt2.patch.gz | zcat > ./linux/patch-6.1-rc3-rt2.patch
сконфигурировать - сначала нужно будет включить отображение опций для экспертов и после этого в меню будет доступен выбор PREEMT_RT - Real-Time
make linux-menuconfig
General setup --->
[*] Configure standard kernel features (expert users) --->
Preemption Model (Fully Preemptible Kernel (Real-Time)) --->
выйти с сохранением настроек и собрать
make
После загрузки на плату нового образа ядра, проверить можно так
# uname -v
#1 SMP
PREEMPT_RT Sun Mar 9 00:53:21 MSK 2025
Означает что ядро собрано с поддержкой реального времени. Что это даёт? Например, есть приложение работающее на высокой скорости UART
http://starterkit.ru/html/index.php?name=forum&op=view&id=32147&last#32173
без проблем успевает принимать пакет до 4 кб без потерь на скорости 4 000 000, но это на не нагруженой системе - кроме него ничего не запущено. Патч PREEMT_RT позволяет повысить его приоритет чтобы никакие процессы не помешали ему.
В busybox по умолчанию включена утилита chrt которая позволяет запускать процесс с нужным приритетом. Например запустить utest с высшим приоритетом с алгоритмом планирования round robin
# chrt -r 99 ./utest
Посмотреть возможные приоритеты для разных планировщиков
# chrt -m
SCHED_OTHER min/max priority : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : 0/0
SCHED_IDLE min/max priority : 0/0