.BIN 파일을 XModem 전송으로 파이프

.BIN 파일을 XModem 전송으로 파이프

.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

관련 정보