14.5. 마무리

여러분은 동작하는 작업대 스크립트에서 출하된 제품으로 나아가는 카메라의 생애 주기를 따라왔습니다:

  • 사용자 정의 펌웨어 빌드 – 개발 환경, 소스로부터 펌웨어 이미지를 빌드하기, 카메라에 플래시하기, 그리고 펌웨어 쪽에 문제가 있을 때 VS Code Cortex-Debug에서 명령줄 gdbrunner로 이어지는 디버깅 경로.

  • 애플리케이션 출하 – 프로즌 모듈을 통해 애플리케이션 코드를 펌웨어에 구워 넣기, 자산을 ROMFS 이미지에 구워 넣기, 그리고 부팅 시 런타임이 실제로 어떤 파일 복사본을 로드하는지를 결정하는 조회 순서. 거기서 도출되는 구분은 다음과 같습니다: REPL 이전 환경 설정을 위한 boot.py, 애플리케이션의 진입점인 main.py, 진입을 위한 프로즌 main.py와 그 외 모든 것을 위한 ROMFS.

  • 양산을 위한 강화 – 알려진 경로에 기록되는 logging 라이브러리, 메인 루프 반복마다 한 번씩 갱신되는 machine.WDT, 충돌을 재설정 대신 기록된 이벤트로 바꾸는 최상위 try / except, 애플리케이션이 현장에서 수개월에 걸쳐 레코드를 쌓아가는 동안에도 파일 작업을 빠르게 유지하는 파일 시스템 위생, 그리고 – 제품에 필요할 경우 – 플래시 읽기 방지.

  • 고급 자료 – 네트워크 서비스에 인증하고 트래픽을 암호화해야 하는 카메라를 위한 TLS 인증서.

출하된 카메라는 이 모든 것을 갖추고 있습니다: 애플리케이션 코드는 펌웨어 이미지에서 실행되고, 워치독은 메인 루프 반복마다 한 번씩 갱신되며, 로그는 SD 카드의 날짜별 디렉터리에 기록되고, 그리고 – 제품에 필요할 경우 – 플래시는 읽기 방지로 잠겨 있습니다.

14.5.1. 여기서부터 어디로 갈 것인가

양산은 튜토리얼의 마지막 장입니다. 여기서부터 문서는 참조 자료로 갈라집니다:

  • 라이브러리 참조는 카메라가 노출하는 모든 모듈을 알파벳 순으로 “이 호출의 정확한 이름이 무엇인가” 관점에서 보여줍니다 – machine, logging, os, csi, image, ml 등.

  • 보드별 빠른 참조 페이지는 OpenMV 제품군의 모든 카메라에 대한 세부 사항을 다룹니다 – 핀 배치, 마운트 가능한 버스, 보드 ID, 주변장치 가용성, 그리고 애플리케이션이 특정 부품에 안착해야 할 때 중요한 작은 차이들.

  • 센서 참조 페이지실드 참조 페이지는 카메라가 탑재할 수 있는 개별 이미지 센서와 애드온 실드를 다룹니다 – 빌드에 사용할 센서와 실드를 고를 때 애플리케이션에 필요한 부품별 사양, 핀 배치, 그리고 참고 사항.

  • MicroPython 언어 참조는 언어 자체를 다룹니다 – CPython과의 구문 차이, 스크립트가 둘 사이에 걸칠 때 중요한 구현 세부 사항, 그리고 Python이 너무 느린 드문 경우를 위한 인라인 어셈블러 참조.

튜토리얼은 “새 카메라를 손에 쥐었다”에서 “제품을 출하했다”로 가는 경로입니다. 여기서부터 카메라는 애플리케이션이 책임지는 더 큰 시스템의 한 부분이며, 그 작업은 애플리케이션 자신의 몫입니다.