본문 바로가기

전체 글

(35)
Allwinner D1s/F133 BSP(SDK) build guide BSP 압축을 풀고 빌드를 시작한다. tar -xvJf allw.tar.xz cd allw/ source build/envsetup.sh lunch d1_nezha-tina make -j50 gettext, gdbm, ncurses 라이브러리는 빌드하면서 에러가 발생하면 아래와 같이 "mm -B" 명령으로 개별적으로 컴파일 해두고 전체 빌드를 다시 시도해 본다. cd package/libs/gettext mm -B cd - cd package/libs/gdbm/ mm -B cd - cd package/libs/ncurses/ mm -B cd - make -j50 그 이후에 다른 컴파일 에러가 발생했는데, ./out/d1-nezha/compile_dir/target/host/glib-2.50.1/gio/ ..
CC2652P 칩셋 기반의 모듈을 이용한 Zigbee 3.0 코디네이터 제작 HomeAssistant를 이용한 집 자동화 및 IoT를 재미로 시작한지 3개월 정도 되었습니다. 그런데 어느날 갑자기 뭔 바람이 불었는지 느닷없이 Zigbee 3.0 코디네이터를 직접 만들어 보고싶은 마음이 생겼습니다. 재택 근무로 무지 심심했던 5월 초였습니다. 구글로 여러 자료를 찾아 공부하면서 EasyEDA를 이용하여 회로 설계와 PCB 아트웍을 했습니다. 아트웍 결과를 3D로 확인해 보았습니다. 모듈 덕분에 부품 갯수가 몇개 안되는 아주 단순한 구성이 되었습니다. TI사의 CC2652P 칩셋이 탑재된 EByte사의 E72-2G4M20S1E라는 모듈을 사용하였습니다. AliExpress에서 $6~$7 정도에 구입 가능합니다. https://www.aliexpress.com/item/10050013..
CH552T 기능 테스트 주문한 CH552T 테스트 보드가 생각보다 빨리 도착했다. 크기가 매우 작지만 필요한것은 모두 다 있는것 같다. PROG 점퍼를 연결한 상태로 전원을 켜면 프로그래밍 모드로 진입한다. SOT-23크기의 5pin IC가 3.3Volt LDO로 추정되며 CH552T의 전원은 3.3Volt로 구동되도록 기본 설정(납점퍼)되어 있다. 우분투 20.04가 설치된 PC에서 간단히 테스트를 해보았다. 8051/Z80/HC08/PIC16 같은 8bit MCU를 지원하는 SDCC - Small Device C Compiler 라는 크로스 컴파일러는 아래 명령으로 쉽게 설치하였다. sudo apt-install build-essential sdcc 다양한 CH55x용 예제 코드는 github에서 다운로드 받아 컴파일 해보..
매우 저렴한 USB MCU CH55x USB 통신 기능이 탑재된 MCU를 알아보다가 300~400원에 구입 가능한 물건을 찾았다. 비교적 고가의 FTDI사의 USB-UART 인터페이스칩을 대체하는 CH340으로 유명한 중국 WCH사의 CH55x 시리즈 제품이다. www.wch-ic.com/products/category/5.html CH551, CH552, CH554 이렇게 3종이 저렴한데, CH554에만 들어있는 USB host기능은내게 필요 없고 내부 플래시 메모리 용량이 조금 크고 ADC 입력 기능이 있는 CH552의 가성비가 가장 높다고 생각된다. 10핀, 16핀, 20핀 패키지가 있는데 가격차이가 큰 것 같지 않아 조금이라도 IO 포트가 많은 20 Pin TSSOP 패키지인 CH552T를 선택해 보았다. 내부 구성은 아래 그림에 자..
Qt를 이용한 제품 개발시 고려할 비용들 개발한 임베디드 리눅스 제품에 탑재될 핵심 프로그램을 완전한 오픈소스 형태로 공개할 계획이라면 Qt와 관련된 비용은 고려하지 않아도 좋다. 그러나 내가 소스를 공개한 프로그램을 기반으로 경쟁하는 회사에서 동일하거나 더 뛰어난 제품을 만드는 것에 대한 걱정이 크다면 핵심 기술의 오픈소스화를 감행하기 어려울 것이다. 이런 경우 어떤 비용이 발생할 수 있는지 알아보자. Qt for Application Development 라는 제품은 Windows, Android, Mac, Linux 같은 범용 OS 위에서 동작하는 상용 어플리케이션 프로그램을 만들어 판매하는 경우에 사용한다. 그러나 1년 사용료가 개발자 한명당 $5,500으로 상당히 부담이 큰 금액이다. 다행히 2020년 3월에 소규모 또는 스타트업 회사..
NEOGEO 메탈슬러그 gngeo 포팅 SNK에서 만든 오락실 고전 게임의 명작 Metal Slug를 해보자. NEOGEO라는 게임 플랫폼 기판을 emulation하는 gngeo라는 프로그램을 포팅해야 한다. 아래는 gngeo 소스코드를 다운로드 받고 buildroot에서 만들어진 SDL 라이브러리를 이용하도록 설정해서 빌드하는 과정이다. 그리고 빌드 후에 만들어진 실행파일을 buildroot에서 사용하는 overlay-rootfs로 복사를 한다. # mkdir gngeo # cd gngeo/ # wget -O gngeo-pi-0.85.tar.gz https://github.com/ymartel06/GnGeo-Pi/blob/master/releases/sources/gngeo-pi-0.85.tar.gz?raw=true # tar xvfz gn..
SDL 게임을 돌려보자! 머리도 식힐겸 레트로 게임을 한번 해보자. Tyrian이라는 세로 스크롤 슈팅 게임은 1995년 DOS용으로 발매되었다. 그 당시 게이머들의 평가 점수가 상당히 높았으며, 한국에도 많은 사용자가 있었음을 오래된 블러그 글들을 통해 알 수 있다. 2007년에 Open content license 형태로 게임 그래픽 Asset이 풀리면서 누구나 게임을 즐길 수 있게 되었다. 코드는 SDL 기반으로 포팅되어 어지간한 플랫폼에서 모두 잘 돌아가는 편이다. 심지어 ESP32 MCU 기반의 ODROID-GO에서도 동작한다. Buildroot 패키지 관리자에서 Games항목 아래에 있는 OpenTyrian을 선택하고 빌드하면 SD 이미지에 게임 프로그램과 데이터가 함께 설치된다. Graphics library 항목의..
PWM 기능과 LCD Backlight 드라이버 Allwinner i3/S3에는 16bit 분해능의 PWM 출력핀 2개가 있으며 일반적인 Cycle 모드와 좀 생소한 Pulse 모드를 지원한다. 그런데 커널 드라이버에는 일반적인 Cycle 모드만 구현되어 있는것으로 보인다. PWM 포트 2개중 1개는 LCD 백라이트의 밝기 조정하는데 사용하였다. 먼저 PWM sysfs 노드를 이용하여 LCD 백라이트 밝기를 조정해보자. 참고로 현재 device tree에는 PWM 0번 채널만 활성화되어 있으니, PWM 1번 채널도 사용하려면 DTS를 수정하여야 한다. 아래 명령어로 활성화된 PWM 포트를 확인하고 node를 통해 접근할 수 있도록 export 시켜 보았다. ls -l /sys/class/pwm/ echo 0 > /sys/class/pwm/pwmchip..