Кермит не ждет достаточно долго
Я пишу сценарий 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
1 ответ
\v(minput)
расширяется до индекса полученной строки, а индексация начинается с нуля. Это означает, что вы должны были написать
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) {
:0, echo "TEST PASS", exit 0
:1, echo "TEST INCONCLUSIVE", exit 1
:2, echo "TEST FAIL", exit 2
:3, echo "TEST NOTRUN", exit 3
:4, echo "TEST TIMEOUT", exit 4
:default, echo "entering default case", echo \v(minput), exit 255
}
Что происходит с вашим кодом, так это то, что при получении <--- PNC TEST STATUS: PASS
, minput
выход с \v(minput)
установлен в 0
и switch
соответствует только по умолчанию. 0
в вашем выводе не полученная строка, это ее индекс, данный minput
,