지난번 하드웨어 개발 과정 첫 번째 시간에 이어 다음 과정들을 알아보고자 합니다.
1. 보드 제작
1) PCB 제작
ARTWORK 작업이 끝나고 Gerber 파일을 생성한다면 다음으로 해야 할 일은 PCB 제작이 됩니다. PCB는 샘플로 제작할 수 있는데 개인적으로는 한샘에서 샘플 작업하는 경우가 많았습니다. PCB는 전체 제품의 성능과 안정성에 매우 중요한 역할을 하기 때문에 매우 중요합니다.
2) SMT
SMT는 '표면 장착 기술'을 이야기 한다. PCB 위에 부품을 직접적으로 부착하는 방법입니다. SMT는 부품을 PCB 표면에 납땜하는 방식으로 작동하며, 표면 장착 부품(소자)은 작고 평면적인 디자인으로 제작되어야 합니다. SMT 업체에 맡기면 SMT 작업이 가능합니다. 만약 SMT 과정을 생략한다면 직접 부품을 납땜하면 됩니다.
3) 보드 디버깅
보드 디버깅은 전자 제품의 PCB에서 발생하는 문제를 식별하고 해결하는 과정을 말합니다. 이는 제품이 예상대로 동작하지 않거나 오작동하는 경우를 대비해 펌웨어 및 소프트웨어 팀으로 넘기기 전에 확인해야 하는 과정입니다. 보드 디버깅은 여러 단계로 이루어집니다. 일단 PCB에 전원을 넣고 하나하나 제 기능을 하고 있는지 확인하면 됩니다. 만약 원하는 대로 동작하지 않으면 먼저는 회로 및 ARTWORK 파일을 보고 파악할 필요가 있습니다. 회로가 잘못되어 있을 경우가 많습니다. 확인할 때는 오실로스코프와 멀티미터를 사용하면 좀 더 빠르게 원인을 찾을 수 있습니다. 혹여라도 회로, ARTWORK에서 문제를 찾지 못했다면 납땜 결함, 부품 결함 일 수도 있습니다. 디버깅은 시간이 꽤 걸리고 경험이 쌓이면 쌓일수록 더 빠르게 디버깅 작업이 진행될 수 있습니다.
2. 펌웨어
1) 펌웨어 설계
펌웨어는 하드웨어 내에 있는 마이크로프로세서 소프트웨어로, 마이크로컨트롤러 또는 마이크로프로세서 기반의 장치에 프로그래밍되어 작동합니다. 펌웨어 개발은 프로그래밍 및 디버깅 테스트를 통해서 개발됩니다. 펌웨어의 구성, 알고리즘을 미리 한번 쭉 작성해 보고 어떻게 펌웨어를 만들어 갈지 큰 구성을 머리 속에 넣어 놓습니다.
2) 코딩
구성대로 펌웨어 코딩을 하면 됩니다. C언어가 기반이 되고 MCU 종류에 따라 사용하는 프로그램과 장비가 다릅니다. 나는 주로 ST사의 MCU를 사용해 프로그램도 IDE, EWARM을 사용 합니다. 기능 별로 C파일, 헤더 파일을 만들어서 작업하면 수정이 용이합니다.
3) 디버깅
펌웨어를 작업하다 보면 생각치 못한 경우의 수들이 테스트하면서 많이 나오게 됩니다. 그렇기 때문에 최적화 및 안정화시키는 작업이 중요합니다. 펌웨어를 개발할 때는 하드웨어와의 상호작용을 고려해야 하며, 해당 하드웨어의 명세와 특징을 이해합니다. 오실로스코프가 무엇보다도 개발을 용이하게 하는 장비로 하드웨어 개발뿐만 아니라 펌웨어 개발 시에도 필요합니다.
3. 안정화 과정
1) 신뢰성 테스트
신뢰성 테스트는 제품이 일정 기간 동안 안정적으로 작동할 수 있는지 확인하는 과정을 말합니다. 제품의 수명, 안정성, 오류 발생 가능성 등을 평가하여 신뢰성을 보장해 나가는 과정입니다. 제품을 여러 번 테스트하여 장시간 사용 시 발생할 수 있는 잠재적인 문제를 찾습니다. 여러번 사용하다 보면 생각지도 못한 버그들이 나옵니다. 양산을 그냥 해버리면 나중에 더 큰 일들이 일어나기 때문에 필수적으로 가져야 할 시간입니다.
2) 인증
KC/CE 등 양산을 위해선 인증이 필요한 경우들이 많습니다. 제품의 안전성과 품질을 입증하기 위한 과정이기 때문에 거쳐야 합니다. 인증 과정을 도와주는 업체들도 있기 때문에 인증 업체들을 끼고 인증 과정을 하는 경우들이 많습니다. 제품의 신뢰성을 높이고 고객 만족도를 높이는 데에 중요한 역할을 합니다.
4. 제품 매뉴얼 작성
양산을 위해서는 유저에게 전달해야 하는 문서입니다. 제품 매뉴얼은 제품을 올바르게 사용하고 유지하는 데 필요한 정보들이 담겨져 있습니다. 매뉴얼 작성은 제품의 기능, 사용법, 유지보수 방법 등을 명확하게 설명하는 것이 중요합니다. 유저가 누구인지에 따라 기술 수준, 용어 이해도, 사용 목적 등을 고려하여 작성하고 간결하게 작성해야 합니다. 사용 방법 및 연결 방법들은 다이어그램을 넣으면 이해가 쉽기 때문에 사용하면 좋습니다.
사실 이러한 과정으로 몇번이나 확인을 하고 양산을 해도 하드웨어 업그레이드가 필요한 경우들이 생깁니다. 그때 그때 바로 생긴 버그들을 재연해 버그를 잡는 과정들이 무엇보다 중요합니다. 간혹 간헐적으로 생기는 버그의 경우에는 정말 골머리를 썩는 경우가 많습니다. 그럴 때는 버그의 원인이 이걸 것이라는 예측으로 수정하기도 하지만 정말 긴 안정화의 시간이 필요합니다.
하나의 제품을 만드는데에는 엄청난 시간과 노력이 필요로 합니다. 이 내용 서술이 도움이 되길 바랍니다.
'하드웨어' 카테고리의 다른 글
MCU(마이크로 컨트롤러 유닛) 개념 잡기 (0) | 2024.06.19 |
---|---|
FPGA에 대해서 (0) | 2024.06.18 |
펌웨어란 무엇인가? (0) | 2024.06.17 |
하드웨어 개발 과정(1) (0) | 2023.12.22 |
하드웨어 개발 팀에서 하는 일에 대해 (0) | 2023.12.20 |