.bin
펌웨어 업그레이드를 위해 모뎀으로 전송을 통해 파일을 보내야 합니다 XModem
.
모뎀이 로컬 컴퓨터에 연결된 경우 명령은 다음과 같습니다.
sz -X -k -b -vvv - file_to_transfer.BIN > /dev/ttyUSB0 < /dev/ttyUSB0
파일을 받기 위해 모듈 측에서 필요한 명령도 만들어 봤습니다.
문제는 내부적으로 이러한 모뎀이 있는 원격 호스트에서 이 작업을 수행해야 한다는 것입니다. 호스트 컴퓨터에 파일을 저장할 메모리가 부족하여 파일을 장치로 전송할 수 없습니다.
마지막 아이디어는 파일을 sz
명령에 파이프하는 것입니다. 다음 명령을 사용하여 로컬에서 시도했습니다.
cat file_to_transfer.BIN | sz -X -k -b -vvv - > /dev/ttyUSB0 < /dev/ttyUSB0
이 명령은 다음과 같은 오류 메시지를 표시합니다.
Sending s2382.lsz, 0 blocks: Give your local XMODEM receive command now.
Xmodem sectors/kbytes sent: 0/ 0kRetry 0: Timeout on sector ACK
Retry 0: Timeout on sector ACK
Retry 0: Timeout on sector ACK
Retry 0: Timeout on sector ACK
Retry 0: Timeout on sector ACK
Retry 0: Timeout on sector ACK
Retry 0: Timeout on sector ACK
Retry 0: Timeout on sector ACK
Retry 0: Timeout on sector ACK
Retry 0: Timeout on sector ACK
Retry 0: Timeout on sector ACK
Retry 0: Retry Count Exceeded
왜 이것이 작동하지 않는지 또는 이 문제를 해결하기 위한 더 좋은 아이디어가 있는지 설명해 주시겠습니까?
답변1
조금 늦은 것 같지만 비슷한 문제가 발생했습니다.
fifo(명명된 파이프)를 사용합니다. 바라보다https://linux.die.net/man/3/mkfifo
# Create a temporary fifo
mkfifo /tmp/sz_fifo
# Write the file to the fifo and place in the background
# (Replace "cat" with some other command to stream over the network)
cat file_to_transfer.BIN > /tmp/sz_fifo &
# sz will read the file from the fifo
sz -X -k -b -vvv - /tmp/sz_fifo > /dev/ttyUSB0 < /dev/ttyUSB0
# Clean up
rm /tmp/sz_fifo