Я пишу скрипт Kermit , чтобы запустить эльфа на плате IMX с пользовательским ядром , и пытаюсь захватить строку, написанную эльфом, с помощью следующий скрипт:
set input echo on
lineout tests_domains/usb/hid/build/test # send elf name to the board's shell
minput 40 "<--- PNC TEST STATUS: PASS" "<--- PNC TEST STATUS: INCONCLUSIVE" "<--- PNC TEST STATUS: FAIL" "<--- PNC TEST STATUS: NOTRUN" "<--- PNC TEST STATUS: TIMEOUT"
switch \v(minput) {
:1, echo "TEST PASS", exit 0
:2, echo "TEST INCONCLUSIVE", exit 1
:3, echo "TEST FAIL", exit 2
:4, echo "TEST NOTRUN", exit 3
:5, echo "TEST TIMEOUT", exit 4
:default, echo "entering default case", echo \v(minput), exit 255
}
Однако minput
возвращается до получения одной из строк <--- PNC TESTS STATUS
и до 40 секунд. Возвращается через 5 ~ 6 секунд после запуска эльфа.
Полный вывод платы на ее UART выглядит следующим образом: https://pastebin.com/vsps5ZQ1 Она заканчивается правильно с <--- PNC TEST STATUS: PASS
Принимая во внимание, что при захвате выходных данных с помощью приведенного выше сценария он завершается следующим образом: https://pastebin.com/wFSDdn5s Выходные данные показывают, что случай переключения по умолчанию выполняется после захвата строки «0». Он всегда возвращается после строки вида [ 6.099262][usbd:imx ] prime_endpoint: IN endpoint 1 (3)
(последняя строка, записанная доской во второй вставке). Я не понимаю, почему происходит последнее.
Если у Kermit есть альтернативы для выполнения того, что я делаю, предложите их мне. Электронная документация для kermit редкая.
Последнее замечание: скрипт запуска ny kermit (~/.kermrc
) выглядит следующим образом:
set line /dev/ttyUSB0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5