본문 바로가기

전체 글

(35)
u-boot 로고 이미지 변경하기 부팅할때 LCD 왼쪽 구석에 보이는 쬐끄만 펭귄 로고를 나만의 로고 이미지로 변경하고 싶으면 아래 절차를 따르면 된다. 먼저 로고 이미지를 만들어 보자. FoxNux의 7인치 LCD 해상도는 1024x600 이므로 같은 크기의 JPG 포맷의 그림 파일을 만들어 저장한다. 이번 예제어서는 파일 이름은 1024x600_fox_board_logo.JPG으로 정했다. u-boot에서 지원하는 로고 이미지는 256종류의 색상을 지원하는 8-bit BMP만 지원한다. 시스템 메모리가 부족하던 시절에 메모리 사용량을 최대한 절약하기 위해서 생긴 제약이 아직도 유지되는 것 같다. 색상의 종류에 대한 제한이 크므로 사진같은 이미지 보다는 단순한 로고 형태의 이미지를 추천한다. "sudo apt install netpbm..
FoxNux용 u-boot 빌드와 설치 타겟 보드의 RAM 용량이 크고 CPU가 빠르고 Debian 계열의 OS가 설치되어 있다면 보드에서 직접 컴파일(Native build)을 하는 경우가 많아 졌다. 그런데 FoxNux 보드는 CPU가 느린편이고 RAM 공간이 128MB 뿐이라 어려울 것이다. 쓸데없는 고생하지 말고 PC에서 Cross-toolchain을 이용하여 컴파일을 하자. 내가 사용하는 개발 PC는 x86-64bit용 Ubuntu 19.10이 동작하고 있다. 작년 여름에 18.04를 설치하였고 6개월마다 업그레이드를 하였더니 19.10되었다. 업그레이드 할때마다 자잘한 문제가 있었으나 6~7년전에 부팅조차 망가지던 것에 비하면 애교로 보인다. 내년에 20.04 LTS로 올리고나면 Major 업그레이드 없이 자잘한 update만으로 ..
FoxNux SBC(Single Board Computer)의 부팅 과정 i3 CPU 내부에 32KB의 ROM이 내장되어 있다. 부팅을 책임지는 ROM이라 BROM(Boot-ROM)이라고도 부른다.시스템에 전원이 들어오거나 리셋이 되면 이 ROM에 내장된 프로그램이 실행된다.아래와 같은 순서로 SPL(Secondary Program Loader)를 여러 종류의 인터페이스에 연결된 부트 미디어(Flash memory 기반의 저장 장치)로 부터 읽어 내려고 시도를 한다.SD card 인터페이스 #0(4bit SD)를 시도하여 부트사인이 있으면 SPL을 내부 SRAM에 로딩한다.실패하면 SD card 인터페이스 #2(8bit eMMC)을 찾고 그래도 안되면 SPI 포트에 연결된 NOR Flash와 NAND Flash를 시도한다.마지막에는 USB OTG를 Device 모드로 전환하고..
Allwinner i3 CPU 소개 SoC(System on Chip) 라는 용어가 나온지는 거의 20년 정도 된듯하다. 사전적 의미는 아래와 같다. SoC는 한 개의 칩에 완전 구동이 가능한 제품과 시스템이 들어 있는 것을 말한다. 그러나 현실은 좀 다르다. DRAM과 Boot flash memory 정도는 외부에붙여야 시스템으로서 동작이 가능하다. 네트웍을 구현하려면 무선랜칩이나 Ethernet MAC / PHY 칩을 붙여야 한다. 오디오 출력이 필요하면 DAC과 앰프칩을 달아주어야 한다. 이렇게 메모리, 네트웍, 오디오 칩은 외부에 달아주는 것이 일반적인 상황이다. i3라는 칩은 좀 오래된 V3 CPU와 DDR3 128MB(1Gbit)을 하나의 패키지로 합쳐 만들어진 좀 더 SoC에 가까운 물건이다. 그런데 이 업계에서는 메모리까지 ..
중국업체에서 PCB 샘플 만들기 JLCPCB라는 중국 업체에서 샘플 PCB를 2회 만들어 보았다. 처음에는 양면(2-layer), 두번째는 4층(4-layer) 였다. 2번 모두 가격, 품질, 납기에 만족하였다. 국내 샘플 업체는 4층/임피던스/ENIG-RoHS 조건으로 동일한 샘플을 만드는 경우 가격이 3배가 넘는다. PCB 제작 기간은 비슷한것 같지만 국내업체는 배송에 1박2일, 중국의 경우 4박5일 정도 필요하므로 장단점이 있다. 내 경우 취미로 만드는 프로젝트라 3일 정도 더 기다려야 하는 것은 큰 문제가 이닌것 같다. 중국업체의 또다른 장점은 실시간으로 내 PCB가 어느공정에서 제작되고 있는지 진도 확인이 가능하다는 것이다. 3번째 PCB를 12월 11일 오후 3시쯤 발주하고 결재하였는데 오늘이나 내일 배송이 시작될것 같다. ..
아직도 크로스툴체인을 직접 만들어 쓰는 사람이 있나요? 10여년 전에는 ARM용 크로스 컴파일러를 직접 튜닝하고 빌드하는 것을 당연시 여기던 시절이 있었다. gcc의 버그 픽스가 빈번하며, ARM architecture가 매우 빠르게 발전하던 시절에는 툴체인의 버전별 특성 때문에 삽질하는 경우도 많았다. 그 시절의 영향때문인지 요즘 나오는 임베디드 리눅스 서적에도 툴체인 만들기라는 챕터가 있다. 다양한 문제가 있었던 gcc 버전 2.x~3.x 시대가 지나가고 ARM architecture도 Cortex-A에서 10년 가까이 멈추어 있어 gcc 4.8 이상의 버전이라면 u-boot, kernel 뿐 아니라 Qt같은 프레임웍이나 어플리케이션까지 빌드하고 실행하는데 별 문제는 없다. RISC-V같은 완전히 새로운 아키텍쳐가 아닌다음에야 전 세계에서 10억개 이상 ..
CPU 선정과 리눅스 커널 버전과의 상관 관계 임베디드 시스템 개발자들이 최신 커널을 선호하는 이유는 셀 수 없이 많지만, 내가 보는 관점에서는 수많은 패치로 안정성과 성능이 좋아지고 엄청나게 많은 새로운 주변 장치용 디바이스 드라이버가 추가되어 큰 노력없이 안정적인 대규모 임베디드 시스템을 구축할 수 있기 때문이라고 생각한다. 물론 CPU 제조사가 제공하는 BSP의 커널 버전이 4.4나 4.9 이상이고 LTS(Long Term Support)로 심각한 보안이나 버그패치가 꾸준히 제공된다면 대부분 큰 문제는 없다. 그러나 플랫폼을 구축하여 5년 이상 꾸준히 사용하려면 업스트림은 필수라고 생각한다. 많은 리소스를 필요로하는 포팅과정 없이 메인라인(현재 5.4~5.5 버전 기준) 리눅스 바닐라 커널이 GPU와 VPU까지 잘 동작하는 ARM 프로세서는 많..
임베디드 리눅스 컴퓨터의 하드웨어 개발 예 이번 글은 하드웨어 개발에 대한 이야기 입니다. 최종(?) 테스트를 위한 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일,..