기본 콘텐츠로 건너뛰기

추천 가젯

[프로그래밍 이야기 6] 포터블 라이터기의 재발견: 웹소켓과 스크립트가 만든 현장 대응 파이프라인

 임베디드 장비나 FPGA 칩이 탑재된 하드웨어를 현장에서 다룰 때, 가장 고민스러운 부분은 펌웨어 라이팅 환경을 구축하는 일입니다. 공장 PC나 현장 컴퓨터에 무겁고 거대한 벤더 전용 프로그램(IDE)을 일일이 설치하고 환경을 설정하는 것은 지극히 비효율적입니다. 이때 가장 똑똑하고 유연한 접근법은 공장 PC에 무언가를 설치하려 애쓰는 대신, 엔지니어의 노트북 한 대를 즉시 '포터블(Portable) 라이터기'로 탈바꿈시켜 현장에 투입하는 것입니다. 노트북을 포터블 라이터기로 만드는 전략과 웹소켓 노트북을 이동식 포터블 라이터기로 활용하기 위해 거창한 프로그램을 깔 필요는 전혀 없습니다. 핵심은 펌웨어를 입히는 CLI(명령줄 인터페이스) 툴과, 이를 원격에서 실행해 줄 지극히 단순하고 가벼운 웹소켓(WebSocket) 서버 하나만 준비하는 것입니다. 중요한 점은 여기서 사용하는 웹소켓 프로그램이라는 것이 결코 복잡하거나 무거운 시스템이 아니라는 사실입니다. 단 몇 킬로바이트 수준의 경량 훅(Hook) 역할만 수행하는 웹소켓 서버를 노트북에 띄워두면, 공장 PC 환경을 오염시키지 않고도 노트북 한 대가 완벽한 이동식 라이팅 단말기로 변신합니다. 가장 가벼운 웹소켓 훅과 Shell 스크립트의 결합 이 시스템의 실체는 놀라울 정도로 가볍고 명확합니다. 노트북 내부에서는 하드웨어(.sof)를 구운 뒤 MCU 펌웨어(.elf)를 연달아 다운로드하는 아래의 Shell 스크립트가 실행의 중심을 잡습니다. // flasher.sh - FPGA 및 Nios II 펌웨어 연속 라이팅 스크립트 #!/bin/bash 1. FPGA Hardware (.sof) 구우기 #!/bin/bash echo "Hello World" echo "=== Programming FPGA Hardware ===" quartus_pgm -c "USB-Blaster [1-4]" -m JTAG -o "p;mcu.sof...

V30 번들 데이타 케이블을 쓰면서 느끼는 새로운 기분.



V30번들 케이블은 알다시피, usb type-c to usb type-a usb 2.0 케이블이다.


플래그쉽 스마트폰에 들어가있는 기능만 못한 케이블을 주다니, 아쉽지만
QC3.0 충전이 제대로 되는 것에 일단 감사하자.

뽑기 운이겠찌만 삼성폰을 쓰는 사촌동생(남자)는 번들케이블이 충전단자가 서로 안맞아서 충전이 어려워 다른 사람 것 쓰던 일도 있었으니 이정도면 만족해야지...


오늘 테스트해보다가 깜짝 놀란 사실이 있다.

usb 2.0 케이블로 알고 컴퓨터에 연결(linux desktop)하여 동영상 파일을 핸드폰에 넣는데, 오랜만에 내부저장장치에 공간이 있어서 거기에다가 집어 넣었다.


대량 평균속도가 38MiB/s정도가 나온다.  ... ... ..

놀라서 확인해보니 컴퓨터에 usb 2.0모드로 연결된 것이 맞다. (480MBit/s)
<<<
인터넷에 여기저기를 보면, usb 3.0 sd 카드리더기에 uhs-i 속도가 지원되는 카드를 연결해서 테스트 할 때, usb 2.0포트에 연결할 시, 30MB/s언저리에서 노는 모습들을 많이 볼 수 있다.

거기다가 여기저기서 MTP가 오버헤드가 많아서 불편하다느니 여러가지 이야기들을 볼 수가 있다.
>>>
흔하지 않는 모습이다라는 거다.


일단 저 속도는 USB 2.0이 128(payload)개씩 묶으면서 패킷을 보내고, 전적으로 한 디바이스만 다룰 때 나오는 속도이다.
https://superuser.com/questions/317217/whats-the-maximum-typical-speed-possible-with-a-usb2-0-drive
를 참조해보자.

일단 최신 안드로이드의 mtp드라이버가 매우 훌륭하다는 것은 확실하다.
일단 예전보다. 구린 케이블을 썼을 때, 지혼자 끊어지는 일이 많이 줄었다.
예전에는 구린케이블을 쓰면 지원하지 않는 파일이라는 메세지가 윈도우에서 뜬적이 있다. ... 좋은 케이블 쓰면 아무 문제가 없는데 말이다.


거기다 양쪽다 usb 3.0을 지원하고, 케이블만 2.0이다 보니, 양쪽의 칩 모두 열심히 일할 여력이 충분하다. 그렇기 때문에 이러한 결과가 나온 것으로 보인다.  일단 스냅드래곤도 칭찬한다.


그러면 왜 usb 2.0 포트에 연결한 usb 3.0 메모리 카드가 30MB/s 밖에 안나올까? 그건 간단하다. 그 제품의 칩은 usb 3.0 모드일 때, 더 많은 전력을 쓰도록 설계되었고, usb 2.0포트에 연결될 때는, 그에 따라 전력을 덜 쓰는 새로운 모드를 사용하도록 설계가 되어 있는 것으로 추측된다.


하지만 스마트폰은 자체 배터리로 전력을 충당하므로 그럴 필요가 없다. 그런데 왜 옛날 폰은 내부 메모리로 전송함에도, 사용할 때는 SD보다 빠르지만 전송 속도는 그놈이 그놈이었을까??     
  이건 퀄컴이란 제조사놈이 칩 설계를 그렇게 해놓은 거다.



아이고, usb 3.0 지원 케이블을 사야하는데, 비싼 건 돈이 아깝고, 싼건 거짓말처럼 usb 2.0으로 인식될 것 같아서 뭘 할 수가 없다. 

V30 내부 sd 카드 슬롯은 uhs-i ii 인지 모르겠네, 빠른거 쓰고 싶은데,

데이타 시트 좀 제대로 공개 부탁요 LG님 퀄컴님.






댓글