Louie NRT Story

[javascript] YMODEM 다운로더 본문

전기차충전기

[javascript] YMODEM 다운로더

hyeok0724.kim@gmail.com 2021. 4. 7. 17:54
반응형

작성일: 21년 4월 7일

 

Index

1. YMODEM 다운로더 코드

2. 코드 실행

3. 다운로드된 파일 확인

4. 개발자 주저리주저리 - 하루종일 이것만 했네ㅠㅠ

 

 

1. YMODEM 다운로더 코드

- javascript로 개발된 YMODEM 코드

github.com/ganioc/ymodem-sender-js

 

ganioc/ymodem-sender-js

Contribute to ganioc/ymodem-sender-js development by creating an account on GitHub.

github.com

- 테스트 하면서 수정한 내용으로는 Config 파일들과 Receive 쪽의 Timeout들을 길게 해주었음

- 펌웨어에서 데이터를 받고 Receive ACK를 늦게 보내서 Downloader는 Timeout으로 계속 초기화를 하였음.

 

 

2. 코드 실행

- 명령어로는 "node index.js" 이지만 argument로 1K와 CRC를 줄 수도 있음 "node index.js 1K CRC"

- 결론적으로는 같은 결과를 초래하지만 1K로 하였을 때 시간이 빨리 진행되었음

 

 

3. 다운로드 된 파일

- "zxcvbnm" 이 입력된 파일을 업로드하였음.

 

 

4. 개발자 주저리주저리

처음 이 작업을 시작 할때 GUI를 electron으로 사용했기 때문에 javascript 로 만들어진 YMODEM 코드를 찾았다.

쉽게 찾을 수 있었고 아래의 모듈을 이용해서 테스트를 진행하였다. 하지만 6년전에 commit된 코드이고 진행 할수록 오류가 계속 나왔고 이러한 오류들을 하나하나 처리 하였지만 최종적으로 Board와의 통신도 잘 되지 않았다.

github.com/nicodegunst/particle-ymodem

 

nicodegunst/particle-ymodem

Basic implementation of the Ymodem-protocol as implemented in Particle devices. Currently created and tested only to send firmware files to a Particle Photon. - nicodegunst/particle-ymodem

github.com

그렇게 계속 코드를 확인해보던 중 이러한 주석을 보고 신뢰도가 확 떨어졌다. 꼭 1K가 아니여도 상관은 없지만 기본적인 프로토콜 상의 데이터가 오고 갈때 Board가 반응이 없었다. 그래서 다른 코드를 찾아서 빠르게 해결 할 수 있었다.

시간낭비 했네 라고 생각할 수 있었지만 계속 발생되는 오류를 수정하면서 YMODEM의 구조를 알게 되었고 Nodejs의 모듈 serialport 모듈을 알게되어 새로운 코드를 보면서 오류들을 더욱 빠르게 잡을 수 있었고 문제를 해결 할 수 있었다.

반응형
Comments