Цикл командной строки ATF (arm trust firmware, BL1, BL2) поддерживает протокол ymodem.В Windows я использую TeraTerm и могу использовать его меню для ручной отправки файлов на устройство, используя протокол ymodem, после ввода команды ymodem <address>
и просмотра символа C
:
NOTICE: Booting Trusted Firmware
NOTICE: BL1: v1.4(release):58e7395
NOTICE: BL1: Built : 17:39:25, Jan 2 2018
# ymodem 0x45103000
NOTICE: ## Ready for binary (ymodem) download to 0x451030000 at 115200 bps...
C
Tera Termтакже поддержка макросов для автоматизации процесса, который работает нормально.Теперь я хочу использовать screen
+ expect
+ sz
под Linux, чтобы сделать то же самое ... Но пока я не добился успеха.
В настоящее время я тестирую со следующим кодом:
85 spawn screen /dev/ttyUSB0 115200
86 set screen $spawn_id
93 send "ymodem 0x45103000\r"
94 set timeout 3
95 expect {
96 timeout {
97 puts "timeout..."
98 exit 1
99 }
100 "115200 bps...\r\nC"
101 }
102 #stty -echo raw
103 spawn sz --ymodem $bl2_burn_path
104 interact -u $screen
105 expect "Bytes" # can expect see this?
106 stty echo -raw
107
108 send "\r\r\r"
109 send "exit\r"
Кажется sz
повторная отправка файла, но нет обратной связи с удаленной стороны:
expect: does "ymodem 0x45103000\r\n\u001b)0\u001b[?1049h\u001b[4l\u001b[?1h\u001b=\u001b[0m\u001b(B\u001b[1;24r\u001b[H\u001b[J\u001b[H\u001b[Jymodem 0x45103000\r\nNOTICE: ## Ready for binary (ymodem) download to 0x45103000 at 115200 bps...\r\nC" (spawn_id exp7) match glob pattern "115200 bps...\r\nC"? yes
expect: set expect_out(0,string) "115200 bps...\r\nC"
expect: set expect_out(spawn_id) "exp7"
expect: set expect_out(buffer) "ymodem 0x45103000\r\n\u001b)0\u001b[?1049h\u001b[4l\u001b[?1h\u001b=\u001b[0m\u001b(B\u001b[1;24r\u001b[H\u001b[J\u001b[H\u001b[Jymodem 0x45103000\r\nNOTICE: ## Ready for binary (ymodem) download to 0x45103000 at 115200 bps...\r\nC"
spawn sz --ymodem /home/bruin/work/f5/bsp/bl2-burn.bin
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {31117}
spawn id exp7 sent <C>
spawn id exp8 sent <\u0001\u0000\u00ffbl2-burn.bin\u000045352 13335245531 100700 0 1 45352\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001c\u0013\u00a4>
spawn id exp8 sent <\u0001\u0000\u00ffbl2-burn.bin\u000045352 13335245531 100700 0 1 45352\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001c\u0013\u00a4>
Чего не хватает в приведенном выше сценарии?
У меня есть еще один вопрос о том, как определить, что передача файла завершена.Обычно (в Windows, как я заметил), после завершения передачи файла, среди прочего, ATF напечатает размер передаваемых данных, например 45123 Bytes
.Как expect
смотреть это сообщение сейчас?Насколько я понимаю, эти два порожденных процесса (screen
и sz
) говорят напрямую, минуя expect
, нет?