홈으로 돌아가기

개발자들의 명언: 코드, MCU, 회로 설계

임베디드 개발 실무의 명언 모음: 코딩, 회로 설계, MCU 펌웨어 및 관리. 격언은 테스트, CLI 디버깅, 연속성의 중요성을 강조. 중급/시니어 전문가에게 유용.

임베디드 개발자들의 현명한 코드와 하드웨어 명언
Advertisement 728x90

## 개발자들의 격언: 스탠드업과 코드 리뷰의 지혜

임베디드 개발을 수년간 하다 보면 격언으로 승격하는 구절들이 쌓이게 됩니다. 이들은 마이크로컨트롤러 코딩, 회로 설계, 프로젝트 관리의 현실을 포착합니다. 12년 실무 경험에서 골라낸 것들입니다: 코드 원칙부터 MCU 주변 장치까지.

코드와 아키텍처에 대한 격언

프로그래머는 두 부류로 나뉩니다: 처음부터 코드를 짜는 사람과 오픈소스 라이브러리를 포팅하는 사람. 컴퓨터의 범용성은 교과서 정의지만, 모든 물리·공학 졸업생이 인정하는 건 아닙니다.

주요 원칙:

Google AdInline article slot
  • 모든 것에는 config가 있다: 최고의 코드는 단순한 설정일 뿐.
  • 코드는 따로, config는 따로.
  • 좋은 코드는 수년에 걸쳐 결정화된다.
  • 쓰기 원칙: 최소 놀라움의 원리.
  • 최고의 알고리즘은 테이블이다 (유한 상태 기계는 그래프와 테이블로 귀결).

"프로그래밍은 단거리 경주가 아니라 마라톤이다." (Robert Martin)

코드의 일관성이 미모를 이긴다: "코드를 일관되게 작성하라—못생겨도 상관없다." 배열이 모든 것의 기반이다. 모든 setter에는 getter가 필요: xxx_write()라면 xxx_read()가 필수. 함수 이름이 주석이다. 텍스트 주석이 적을수록 git diff가 깔끔하다.

C에서: 한 화면에 안 들어가는 함수는 제대로 작동하지 않을 가능성이 크다. 어떤 작업도 한 줄로 해결—함수 호출로. 최고의 주석은 파일 이름이다.

Google AdInline article slot

테스트와 CI/CD

CI 없는 레포는 휴지 조각일 뿐. 빌드 시스템은 에디터 상관없이 통일되어야 한다. 단위 테스트 없는 코드? 똑같은 이야기.

"테스트하지 않은 프로그램은 작동하지 않는 프로그램이다." (Bjarne Stroustrup) "TDD는 전문가의 선택이다." (Robert Martin)

지식은 문서로 전수되어야 인수인수가 부드럽다. 이식 가능한 코드베이스가 미래 프로젝트의 기반이다. 모든 프로토콜은 장치 간 memcpy로 귀결된다.

Google AdInline article slot

회로 설계와 하드웨어

하드웨어 담당자들은 말합니다: CPU처럼 과전압을 거부하라. 전기 공학은 누락된 연결의 과학이다. 개발은 디버그 도구부터 시작한다.

모든 센서는 온도를 측정할 뿐, 각자 방식으로. 100MHz 이상에서는 신호가 아날로그가 된다. 전자 세계의 모든 것은 ADC나 DAC: 코덱, 트랜시버, 심지어 GPIO조차 1비트 DAC.

인터페이스 선택: SPI가 I2C를 이긴다. 러시아인들은 유럽 코드에 맞춰 보드를 레이아웃하고, 유럽인들은 중국 보드에 맞춰 코딩한다. 최고의 부품은 부품이 없는 것.

마이크로컨트롤러와 펌웨어

하드웨어가 먼저, 소프트웨어가 나중. 개략도가 단순할수록 펌웨어가 까다롭고—반대도 마찬가지. 하드웨어 없는 펌웨어는 사진으로 조각하는 격.

주변 장치는 코어 클럭에 동기화. 펌웨어는 부트로더부터 시작. 한 번 리셋으로 일곱 고침. 킬러 기능? 펌웨어 업데이트.

유니버설 프로토콜은 불어나기만: 12개에서 13개로. 어셈블러는 핀셋으로 메밀을 먹는 꼴. NVRAM이 모든 걸 업그레이드한다. UART-CLI는 필수: 없으면 꽂고 빌어봐라.

UART 로그가 펌웨어의 블랙박스. MCU는 숫자를 갈아내는 절구통; x86은 블렌더. CLI가 창의성을 자아내고, GUI는 가둔다. 유한 상태 기계가 MCU의 황금 망치.

제대로 된 MCU에는 다음이 필요: 업타임 타이머, 하트비트 LED, UART-CLI, NVRAM, 단위 테스트. 아니면 무의미한 족쇄. 펌웨어는 저절로 안 써진다.

모듈성은 여러 플랫폼을 동시에 빌드하는 걸 의미한다.

관리와 프로젝트

우리는 단순해서 만드는 게 아니라, 단순하다고 생각해서 만든다. 가르치는 것의 절반은 헛소리—어느 게 헛소리인지 알아채는 게 비결 (Larrabee's Law).

스펙대로 개발: 금도금 금지. 협상이 일이다. "아무것도 하지 마" 요청? 작업 완료.

"부정적 결과도 결과다." (Niels Bohr)

좋은 보고서와 나쁜 해결책은 결국 잘린다; 나쁜 보고서와 좋은 해결책은 즉사 (Akin's Law). 관리는 방해하지 않는 것.

품질 트레이드오프는 긍정적으로 균형. 개에 가스통 장치지 마라. 지금 버그를 찾는 게 선반에 꽂힌 후보다 낫다. 브레인스토밍? 아이디어 구이.

요청한 게 아니라 필요한 걸 만들어라. 완벽이 선의의 적. 나쁜 일은 저절로 일어난다. 빠르고 엉성한 건 엉성으로 기억; 느리고 튼튼한 건 튼튼으로 남는다 (Korolev).

중요한 것

  • 코드: 이식 가능하고 테스트 가능—TDD, 단위 테스트, 통합 CI.
  • 임베디드: UART-CLI, 로그, 유한 상태 기계—디버그 필수품.
  • 하드웨어 우선: 단순 보드가 소프트웨어를 쉽게 한다.
  • 프로젝트: 스펙대로, 문서는 서면으로.
  • 인수인수 계획: 지식 포착, 레포 깨끗이.

— Editorial Team

Advertisement 728x90

다음 읽기