Showing Posts From
목요일
- 13 Dec, 2025
목요일 밤 11시, 명일 릴리스를 위해 코드 리뷰 중
목요일 밤 11시, 명일 릴리스를 위해 코드 리뷰 중 11시 3분. 팀원 코드 열었다. 내일 오전 10시 릴리스. 지금 발견하면 안 되는데.처음엔 괜찮아 보였다 커밋 메시지: "타이머 인터럽트 우선순위 조정 완료" 좋아. 이 부분 문제였는데. 코드 열어봤다. 한 200줄 정도 수정됐다. 처음 50줄은 깔끔했다. 우선순위 설정 부분, 문제없다. 다음 100줄도 괜찮았다. 그런데. void TIMER_IRQHandler(void) { GPIO_ToggleBit(LED_PORT, LED_PIN); // 다른 처리들... delay_us(100); // <- 이거 }인터럽트 핸들러 안에서 delay를 쓴다. 11시 15분. 슬랙 열었다. "민수씨, 혹시 아직 안 주무셨나요?" 읽음 표시 떴다. 3초 후 답장. "네 형 아직이요" 다행이다. 전화했다.Low 레벨에서 보면 "민수씨, 67번 줄 delay_us 있는데요" "아 그거요? LED 깜빡임 보려고 넣었어요" "네... 근데 여기 인터럽트 핸들러잖아요" 침묵. "인터럽트 타이밍이 문제가 될 수 있을 것 같은데요" "아..." 설명했다. 100us 딜레이 중에 다른 인터럽트 못 받는다. UART 인터럽트 우선순위가 같으면 데이터 놓친다. 시리얼 통신 깨진다. "죄송합니다 형. 제가 생각을 못 했네요" "괜찮아요. 지금 발견해서 다행이에요" 다행이긴 뭐가 다행이야. 내일 아침인데. 11시 28분. 수정 방법 논의했다.딜레이 빼기 → 가장 간단 플래그로 메인에서 처리 → 더 안전 타이머 우선순위 더 낮추기 → 근본 해결 아님2번으로 결론. 민수가 지금 수정한대. "30분이면 될 것 같아요" 좋아. 12시까지 커밋해달라고 했다.테스트는 내가 해야 한다 민수 코드 수정하는 동안. 나는 테스트 시나리오 짰다. 확인해야 할 것:LED 정상 동작 UART 통신 안정성 인터럽트 중첩 상황 엣지 케이스보드 3개 꺼냈다. 오실로스코프 채널 4개 다 쓸 거다. 11시 50분. 커밋 알림 왔다. "수정 완료했습니다" 코드 확인했다. 깔끔하다. volatile uint8_t led_toggle_flag = 0;void TIMER_IRQHandler(void) { led_toggle_flag = 1; // 다른 처리들... }// 메인 루프에서 if (led_toggle_flag) { GPIO_ToggleBit(LED_PORT, LED_PIN); led_toggle_flag = 0; }좋아. 이제 올려보자. 12시 5분. 빌드 시작. 경고 2개. 무시 가능한 거다. 플래시 굽기 시작. "Programming... OK" 전원 켰다. LED 깜빡인다. 정상. 시리얼 터미널 열었다. 데이터 들어온다. 정상. 이제 스트레스 테스트. 새벽까지 테스트 12시 30분. 본격 시작. 테스트 1: UART 연속 수신 → 10만 바이트 전송했다. → 에러 0개. 통과. 테스트 2: 타이머 + UART 동시 → 양쪽 다 인터럽트 발생시켰다. → 파형 깨끗하다. 통과. 테스트 3: 최악의 상황 → 모든 인터럽트 동시 발생. → SPI, I2C, UART, 타이머 전부. → 오실로스코프가 크리스마스트리 같다. → 근데 데이터는 정상. 통과. 1시 15분. 엣지 케이스 몇 개 더 돌렸다. 전부 통과. 슬랙에 썼다. "테스트 완료했습니다. 문제없어요" 민수: "감사합니다 형ㅠㅠ" "고생하셨어요. 내일 봐요" 1시 30분. 문서 작업 시작했다. 수정 사항 정리.변경된 파일 목록 테스트 결과 알려진 이슈 (없음)릴리스 노트 업데이트. 버전 넘버 확인. v2.4.3 2시. 팀장님한테 보고 메일 보냈다. "내일 오전 릴리스 준비 완료" 답장 바로 왔다. "고생 많으셨습니다" 팀장님도 안 주무신 거다. 다들 긴장한다. 양산 첫 펌웨어라. 릴리스 전날은 다 이렇다 2시 20분. 정리했다. 보드 3개 전원 끄고. 프로브 정리하고. 테스트 로그 폴더에 저장하고. 가방 쌌다. 내일은... 아니 오늘은 9시 출근. 7시간 후다. 불 끄기 전에. 코드 한 번 더 봤다. 괜찮다. 이번엔 문제없을 거다. 사무실 나왔다. 새벽 공기가 차갑다. 걸어가면서 생각했다. 만약 내일... 아니 오늘 아침에 발견했으면? 릴리스 못 했다. 일정 미뤄졌다. 민수 혼났을 거다. 코드 리뷰를 밤에 한 게. 귀찮았지만. 잘한 거다. 잠들기 전 2시 40분. 집 도착. 씻지도 않고 침대에 누웠다. 내일... 오늘 할 일.9시 출근 10시 릴리스 오후 모니터링 이슈 없으면 퇴근이슈 없기를. 눈 감았다. 근데 잠이 안 온다. 혹시 놓친 게 있나? 타이머 설정 다시 확인했나? 인터럽트 우선순위 표 맞나? 일어나서 노트북 켰다. 코드 다시 봤다. 괜찮다. 진짜 괜찮다. 3시 10분. 다시 누웠다.내일 릴리스 잘 되면, 민수한테 점심 사줘야지.