본문 바로가기

임베디드

임베디드 리눅스 컴퓨터의 하드웨어 개발 예

이번 글은 하드웨어 개발에 대한 이야기 입니다.

 

최종(?) 테스트를 위한 PCB 샘플 10장을 오늘 발주하였다.

JLCPCB라는 중국 업체에서 2번을 주문해 보았는데 품질도 쓸만하고 가격 경쟁력도 매우 높다.

 

오늘 주문한 내역은 아래와 같다. 4층 PCB이며 크기는 180x126mm이며 임피던스 조건은 JLC7628에 맞추었다.

표면처리는 가장 좋은(가격이 높은?) ENIG-RoHS을 선택하였으며 10장을 주문하였다.

PCB 샘플 10장의 가격은 $87.09이며 배송비는 SF-Express라는 국제 특송으로 $11정도인데 $5 할인쿠폰 적용하고 총 $92.56을 지불했다. 대략 1장에 11,000원 정도로 보면 된다.

보통은 발주 후 7~8일 뒤에 샘플을 손에 쥘 수 있는것 같다. PCB 제작 4~5일, 배송 3~4일.

회로도와 PCB 설계는 오픈소스 무료툴인 KiCad(키캐드) 5.1.4를 10월부터 사용하다가 어제 5.1.5로 업데이트 하였다.

개발용 컴퓨터는 2.4Ghz 인텔 셀러론 쿼드코어와 16GB DDR4와 256GB SSD가 탑재된 20만원대 중반의 똥컴 수준을 사용하고 있다.

우분투 19.10을 OS로 사용하는데 별 불편함없이 회로도 작성, PCB 설계뿐 아니라 u-boot, Kernel, Qt5까지 빌드를 할 수 있다.

모니터는 3840x2016 고해상도 32인치 1대와 2560x1440 27인치 1대로 듀얼 헤드 구성이다.

좀 더 빠른 컴퓨터가 있다면 작업 능률은 오르겠지만 이 정도로 성능으로도 만족하고 있다.

솔직히 업그레이드 욕구가 전혀 없는것은 아니지만...

 

 

부품이 많지 않아 회로도를 무식하게 한장으로 그려보았다.

32인치 모니터로는 별편함 없이 볼 수는 있지만 A3 용지에 출력하면 노안이라 글씨를 읽기가 어렵다. ㅠㅠ

다음부터는 꼭 여러장으로 나누어 블럭별로 분리해서 그려야 겠다. 

자작 임베디드 리눅스 보드 회로도

CPU Allwinner사의 i3로 Sochip OEM인 S3와 100% 같은 제품을 사용하였다.

Cortex-A7 싱글코어 1.0Ghz.

--> 뻥데이터시트에는 1.2Ghz로 나와 있지만, 전압을 스펙대비 많이 (1.2 -> 1.35V ?) 올려야만 1.2Ghz가 가능하다고 한다. 

--> 발열 문제나 안정성 때문에 대부분의 양산 업체에서는 1.2V에 1.0Ghz로 사용한다고 한다.

128MB DDR3 내장 (System in Package : SiP)

10/100 Etherent MAC + PHY 내장

Audio Codec 내장

I2C: 2 channel

SPI: 1 channel

UART: 3 channel

USB 2.0 OTG: 1 channel

SDIO: 3 channel

Camera interface: parallel x 1, serial MIPI x 1

LCD interface: 18bit (RGB-666)

 

PCB에 탑재되는 주요 부품은 아래와 같다.

- LCD 7인치 1024x600 광시야각 + 5 손가락 정전식 멀티 터치 스크린

- OS 부팅용 Micro-SD 슬롯

- 10/100 Fast Ethernet port

- USB host 3 포트 (hub IC 이용)

- IO port (20pin x 2개, 18pin 1개) : UART, I2C, SPI, SDIO, GPIO, Camera 연결용

- 전원 공급 회로

- 시스템 콘솔용 USB-UART bridge chip 통신과 전원 입력용 USB Type-C 커넥터

- 각종 상태 표시용 LED 4개

- 유저용 버튼 4개, 리셋 버튼 1개

 

아래 PCB 도면은 KiCad 캡쳐 화면이다. PCB 뒷면에 7인치 LCD를 직접 부착하는 형태라 보드의 크기가 매우 광활하다.

FoxNux PCB 도면

몇몇 주요 부품들의 모델링 데이터를 못 만들어서 3D view는 매우 허접해 보인다.

FoxNux PCB 3D view

USB와 Ethernet의 고속 데이터 통신 라인은 임피던스 매칭이 필요하다.

USB 2.0 480mbps(240Mhz)의 경우 DIfferential pairs: Z = 90ohm

Ethernet 10/100의 경우 DIfferential pairs: Z = 100ohm

 

PCB 제조사에서 제공하는 4층 PCB의 Stackup 구조를 먼저 파악한다.

그리고 유전율을 확인한다. 위의 Stackup 구조는 JLC7628이므로 기본 유전율은 4.6임을 알수 있다.

보통은 적층 두께 정보와 유전율을 가지고 해당 패턴의 폭과 간격을 계산하여야 한다.

그런데 다행이도 JLCPCB는 편리한 웹계산기를 제공한다. https://jlcpcb.com/quote#/impedanceCalculation

 

90옴 차동 신호의 선폭과 간격을 계산한 결과이다. 간격을 선택하면 선폭을 자동으로 계산해 준다.

PCB 크기에 여유가 있어 간격을 크게 잡아보았다. 배선의 폭은 10.25mil, 선간격은 8mil이다.

90 Ohm impedance

동일하게 100옴 차동 신호도 계산해 보았다. 계산 결과 배선의 폭은 8.08mil, 선간격은 8mil으로 설계하면 된단다.

100 Ohm impedance

전원 패턴은 충분히 굵고 짧게 연결하고 고속신호는 임피던스 조건에 맞게 설계하면 PCB는 잘 동작할 것이다.

그 외에 PCB 설계에 대한 가이드 자료를 많이 찾아보았는데, 아래 링크의 Toradex 문서가 나 같은 PCB 설계 입문자들에게는 큰 도움이 될것이라고 생각한다. 나도 중요한 정보는 이 문서에서 얻은것 가장 많은 것 같다.

https://docs.toradex.com/102492-layout-design-guide.pdf

 

 

이제 주문한 부품들과 PCB 샘플이 도착하길 기다리면서 약 일주일 동안 소프트웨어 관련된 부분을 정리해 보아야 겠다.

 

<업데이트>

PCB는 생각보다 3일 정도 늦게 도착하였으나 외관상 품질은 좋아 보인다.

부품들 땜질해서 조립하였고 다행히 별 문제없이 리눅스 부팅이 잘 되고 이더넷과 USB 포트들도 안정적으로 동작한다.