kermit 等的时间不够长
kermit doesn't wait long enough
我正在写一个 kermit script to start an elf on an IMX board running a custom kernel 并且我正在尝试捕获一个由精灵编写的字符串,脚本如下:
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
returns 在收到 <--- PNC TESTS STATUS
字符串之一之前和 40 秒之前。启动精灵后 return 大约 5~6 秒。
开发板在其 uart 上的完整输出如下:https://pastebin.com/vsps5ZQ1 它以 <--- PNC TEST STATUS: PASS
正确结束
而当使用上面的脚本捕获输出时,它终止如下: https://pastebin.com/wFSDdn5s 输出显示在捕获字符串“0”后执行了开关的默认情况。它总是 return 在形式为 [ 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
\v(minput)
扩展为接收到的字符串的 index,索引从零开始。
这意味着你应该写
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
的 index。
我正在写一个 kermit script to start an elf on an IMX board running a custom kernel 并且我正在尝试捕获一个由精灵编写的字符串,脚本如下:
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
returns 在收到 <--- PNC TESTS STATUS
字符串之一之前和 40 秒之前。启动精灵后 return 大约 5~6 秒。
开发板在其 uart 上的完整输出如下:https://pastebin.com/vsps5ZQ1 它以 <--- PNC TEST STATUS: PASS
而当使用上面的脚本捕获输出时,它终止如下: https://pastebin.com/wFSDdn5s 输出显示在捕获字符串“0”后执行了开关的默认情况。它总是 return 在形式为 [ 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
\v(minput)
扩展为接收到的字符串的 index,索引从零开始。
这意味着你应该写
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
的 index。