Подскажите пожалуйста, можно ли нижеприведенной командой выставить необходимую мне скорость порта, например 1382400 ? ( или может каким другими способами? )
stty -F /dev/ttyS3 1500000
Команда позволяет выставить 460800, 921600, 1000000, 1500000, а вот на значения между 1000000 - 1500000: выдает ошибку
stty: invalid argument ‘1382400’
У меня подозрение, что моя связка по UART SK-T507-SODIMM + Микроконтроллер почему-то нестабильно работает на максимальной скорости 1500000, хотелось бы немного снизить.
При этом связка по UART ПК на Windows + Микроконтроллер на скорости 1500000 - работает без сбоев.
mount -t debugfs none /sys/kernel/debug
cat /sys/kernel/debug/clk/clk_summary
apb2 переключился на другой источник pll-periph0 но частоту выставил не 80 а 75 МГц
pll-periph0 5 5 0 600000000 0 0 50000 Y deviceless no_connection_id
spi1 0 0 0 25000000 0 0 50000 N 5011000.spi mod
deviceless no_connection_id
apb2 1 1 0 75000000 0 0 50000 Y deviceless no_connection_id
так что вычислять особого смысла нет - надо просто подогнать, возможно и так будет нормально, потому что у самого уарта есть еще свои внутренние делители и он в драйвере подстраивается под частоту от которой тактируется сам, чем выше частота источника тем ему проще подстроиться.
Все сработало. Надеюсь теперь смогу подобрать работающую частоту.
Для отладки и подбора нужных значений я использовал способ менять файл DTB прямо на целевой ОС, без необходимости компилировать изменения в файле DTS на другом ПК.
Для этого на целевой ОС:
- установить device-tree-compiler
apt-get install device-tree-compiler
- извлечь файл DTS (дерева устройств) из файла .DTB (blob-файл дерева устройств)
вы не первый кто хочет использовать UART на высокой скорости, и как у всех скорей всего возникнут проблемы с потерей данных, поэтому на всякий случай добавил описание как пропатчить ядро для работы в реалтайме для t507