[프리랜서 후기] STM32F407 SPI Read 디버깅

Flynn·2020년 8월 12일
0

프리랜서.log

목록 보기
1/1
post-thumbnail

내용 및 배경

모 사이트에서 STM32F4 기반 보드의 SPI 통신 디버깅을 요구하는 글을 발견했는데, STM32F4 계열은 전공(?) 이기도 하고 SPI는 디버깅을 많이 해봤기 때문에 40만원에 디버깅을 해드리겠다고 제안서를 보냈다.

관련 프로젝트 경험도 있어서 그랬는지, 하루만에 연락이 왔고 사안이 긴급했는지 내가 있는 쪽으로 직접 오셔서 같이 디버깅을 하자고 하셨다.

사전 준비

40만원에 계약을 하기로 하고, 실제 제품을 보기 전에 회로도와 코드를 미리 받아 리뷰했는데 특별히 문제될 것 같지가 않았다. 관련하여 ST에서 제공하는 예제코드와 비교했으나 특별히 틀린 부분이 없어보였고, SPI 인터페이스를 제공하는 '칩셋에 들어가는 모든 전기적 파형'을 하나하나 다 눈으로 확인하기로 계획하고(혼자 마음속으로) 시간 약속을 잡았다.

진행

만나서 디버깅을 시작할 때, 알고보니 SPI를 정상적으로 동작시킬 수 있는 펌웨어 바이너리를 이미 보유하고 계셨으나 소스코드가 없고, 새로 직접 개발한 소스코드에서는 SPI가 동작이 안된다고 하셨다. 이렇게 되면 회로 문제를 배제하고 디버깅을 할 수 있기 때문에 금방 끝날 것을 예상했다.

오실로스코프로 SPI와 관련된 주요 신호들을 모두 찍어봤으나 정상동작하는 레퍼런스 펌웨어와 비교했을 때 MCU에서 나가는 출력들이 차이가 없어보였는데, 직접 개발하신 코드에서만 칩셋에서 데이터를 반환하지 않고 0x00 만 리턴하는 중이었다.

그래서 좀더 범위를 넓혀 하나씩 점검 하던 중, 2가지 문제를 발견하여 수정 후 디버깅이 완료되었다.

1) 동작해야 하는 칩셋에 Reset을 걸고 있었음
이 부분은 클라이언트 분이 디버깅을 위해 테스트코드를 작성하다가 잘 되던 것을 삭제한 것으로 인식하고 있다.

2) SPI 버스에 칩이 2개가 물려있는데, 동일 버스 / 다른 슬레이브에서 데이터가 나와 충돌이 나는 것 같은 흔적 발견
첫번째 칩셋에서 데이터나오는 것을 확인하려다보니 동일 버스 / 다른 칩셋의 칩셀렉트 신호를 High 로 꺼두는 것이 누락된 것이 밝혀졌다.

이렇게 두 가지를 수정하고 나니 정상 동작했고, 다행히 순조롭게 1시간 정도만에 일찍 끝났다. 돈도 잘 받았다. 해피엔딩

생각...

최근 덩치가 큰 프로젝트를 부업으로 받았을 때는 지지부진하거나 생각보다 들인 노력에 비해 시간당 수익이 크지 않다는 느낌이 들어 간단한 프로젝트만 맡고 있었다. 이번 건을 해결하면서, 단순히 개발자들이 고생하는 문제만 해결주고 작은 사례금을 받는 개발자들 사이의 플랫폼이 있다면 프리랜서도 활성화되고 기술 교류도 활발해질 것 같다는....생각을 해봤는데 기회되면 검토해 볼만 할 듯 하다.....

profile
Problem Solver

0개의 댓글