ARM Cortex-M 펌웨어 개발
C/C++로 Cortex-M0+ 베어메탈 펌웨어와 PSoC4 주변장치 제어를 구현했습니다. 스마트워치, 캠핑카 터치 패널, IR 리모컨, TPMS 테스트 도구를 개발하며 제한된 메모리와 HW–FW–App 연동 문제를 디버깅했습니다.
C/C++ · 베어메탈 · BLE · 독자 프로토콜펌웨어 · 시스템 소프트웨어 · 실시간 애플리케이션
ARM Cortex-M 펌웨어, C++ 비동기 HTTP 서버, macOS·iOS 제품과 GPS 기반 실시간 서비스를 개발하며 디바이스에서 통신·저장·사용자 인터페이스까지 이어지는 데이터 흐름을 다뤄 왔습니다. 문제를 수치로 설명하고, 실패 조건을 끝까지 추적하며, 동료가 운영할 수 있는 구조로 개선합니다.
제약이 큰 임베디드 환경, C/C++ 시스템 프로그래밍, Web↔Native 통합, 앱 설계·배포까지 서로 다른 계층에서 동작하는 소프트웨어를 구현했습니다.
C/C++로 Cortex-M0+ 베어메탈 펌웨어와 PSoC4 주변장치 제어를 구현했습니다. 스마트워치, 캠핑카 터치 패널, IR 리모컨, TPMS 테스트 도구를 개발하며 제한된 메모리와 HW–FW–App 연동 문제를 디버깅했습니다.
C/C++ · 베어메탈 · BLE · 독자 프로토콜교육기관 내 여러 웹 서비스를 하나의 macOS 제품으로 통합했습니다. WebKit으로 FE·BE와 네이티브 기능을 연결하고, GitHub Actions 기반 릴리즈·버전 관리 자동화를 구축했습니다. 기획과 macOS 개발을 맡아 정보통신기획평가원장상을 수상했습니다.
WebKit · 배포 자동화 · 정보통신기획평가원장상macOS 제품을 iOS 사용 흐름에 맞게 확장하고 App Store에 배포했습니다. WKWebView 탐색, 폴더 기반 링크 관리, NSCache, Share Extension을 구현하고 Tuist 모듈 구성과 Fastlane·GitHub Actions 기반 TestFlight 배포 파이프라인을 구축했습니다.
App Store · Share Extension · CI/CDKQueue 이벤트 루프와 POSIX 소켓으로 다중 클라이언트 요청을 비동기 처리했습니다. HTTP 파싱, 주요 Method, CGI, 설정 파서를 인터페이스 중심으로 분리하고 Siege로 동시 요청을 검증했습니다.
KQueue · POSIX · CGI · 부하 테스트단백질 구조 데이터를 파싱해 리간드 위치를 계산하고 SceneKit으로 3D 시각화했습니다. Tuist 기반 모듈 구조와 프로토콜 인터페이스를 설계해 데이터 해석, 도메인 로직, 표현 계층의 책임을 분리했습니다.
SceneKit · 데이터 파싱 · 모듈화 아키텍처Philosophers에서 스레드 동기화와 교착 상태를, minishell과 pipex에서 fork·pipe·signal·file descriptor를 다뤘습니다. libft, printf, get_next_line을 직접 구현하며 표준 라이브러리 아래의 동작을 학습했습니다.
pthread · mutex · fork · pipe · signal기능 구현에서 멈추지 않고 데이터의 입력부터 저장·표시·복구까지 추적했습니다. 실제 운영 환경에서 원인을 확인하고 개선한 결과입니다.
최대 96명과 327개 지표가 2Hz로 갱신되는 화면에서 SwiftUI View Graph와 스크롤 offset 동기화를 병목으로 확인했습니다. 하나의 UICollectionView와 Custom Layout으로 행·열을 함께 가상화하고, 고정 행·열은 contentOffset 기반으로 배치했습니다.
31,392개 View → 화면 내 약 170개 Cell실시간 값은 현재 보이는 셀만 직접 갱신하고, 평균은 해당 section만 다시 불러오도록 범위를 줄였습니다. 벤칭·Goal 상태의 갱신 누락을 발견한 뒤에는 행, section, 전체 데이터 중 실제 영향 범위에 맞는 방식을 선택하도록 경계를 다시 설계했습니다.
셀 직접 갱신 · 부분 reload · 전체 reload 분리Instruments로 매 데이터 처리마다 반복되는 선형 자료구조 연산을 병목으로 특정했습니다. Deque 기반 O(1) 구조와 DB 접근 개선을 적용해 낮은 사양에서도 안정적으로 동작하도록 만들었습니다.
CPU -40% · O(n) → O(1) · A16 → A14실시간 누적 데이터의 DB 쓰기 속도가 입력을 따라가지 못해 대기열과 메모리가 함께 증가하는 문제를 분석했습니다. 큐 상한, batch transaction, prepared statement 재사용으로 흐름을 안정화했습니다.
메모리 사용량 -90%장비 연결 불안정과 데이터 유실을 소켓 로그와 DB 기록으로 교차 분석했습니다. 셀·허브·AP 구간의 상태를 분리해 현장 방문 없이 장애 범위를 좁히고 수정 근거를 제공했습니다.
운영 장애 원격 진단약 0.5초 늦게 도착하는 GPS 패킷과 타이머 드리프트를 분리해 분석했습니다. 10Hz 속도 이력 적분과 구간 보간을 적용해 결과 오차를 줄였습니다.
시간 오차 약 1초 → 5–50ms무응답 작업을 watchdog으로 감지하고, 세대 카운터로 과거 타이머가 현재 흐름을 중단하지 못하게 했습니다. backoff와 jitter로 동시 재시도 버스트도 분산했습니다.
재시도 상한 · 과거 타이머 격리앱 메모리와 시스템 가용 메모리를 직접 조회하고, AP 상태와 GPS 품질을 현장에서 확인할 수 있게 만들었습니다. 장애가 발생한 뒤 추측하지 않고 당시 상태를 근거로 판단할 수 있도록 계측 범위를 넓혔습니다.
메모리 · AP · GPS 현장 진단구호보다 실제 문제를 해결할 때 반복해서 선택해 온 행동과 판단 기준을 정리했습니다.
Instruments와 로그로 병목 가설을 검증합니다. UI 구조를 바꾼 뒤 주요 비용이 View Graph 갱신에서 실제 평균값 계산으로 이동한 것까지 확인했고, CPU -40%, 메모리 -90%, 시간 오차 약 1초→5–50ms처럼 전후 조건과 결과를 남깁니다.
HW·FW·App의 문제를 레이어별로 설명하고, 42Box에서는 FE·BE·디자인과 기획부터 배포까지 조율했습니다. 동료가 같은 모델로 이야기하고 안전하게 확장할 수 있는 구조를 선호합니다.
부분 갱신을 줄이는 과정에서 벤칭·Goal 상태가 일부 셀에 반영되지 않는 문제를 확인하고 갱신 범위를 다시 분류했습니다. OOM, 무응답, 오래된 타이머처럼 정상 경로 밖의 조건도 끝까지 추적합니다.
펌웨어에서 C/C++ 시스템, Web↔Native, macOS·iOS 제품, 실시간 데이터로 영역을 확장했습니다. 기술 선택의 근거와 생성 결과를 직접 이해하고 측정으로 검증합니다.
전략, 팀 목표, 운영 제약과 완료 조건을 먼저 정의하고 필요한 맥락만 AI에 제공합니다.
반복 작업은 맡기되 불필요한 에이전트·도구·컨텍스트를 줄여 시간과 비용을 통제합니다.
동시성, 메모리 모델, 운영 위험처럼 책임이 필요한 판단은 직접 이해하고 검토합니다.
임베디드, 시스템 프로그래밍, Apple 플랫폼 제품, 실시간 서비스의 개발·배포·운영에 사용한 기술입니다.