본문 바로가기

전체 글

(35)
UART 포트 기능 테스트 비동기통신 (Universal Asynchronous Receiver/Transmitter)은 1960년대 초부터 사용된 징그럽게 오래된 통신 프로토콜이다. 60년이라는 세월이 흘렀지만 아직도 다양한 분야에서 사용된다. Allwinner i3/S3 CPU에는 UART 통신 포트가 3개 있으며, 산업 표준으로 여겨지는 16550 칩과 호환되는 IP로 구성되어 있다. UART0는 시스템 콘솔 포트로 사용되며 CH330N이라는 IC를 통해 USB 인터페이스로 변환되어 개발용 PC에 연결된다. 터미널 콘솔이 필요하지 않다면 u-boot과 boot.cmd를 수정하여 다른 용도로 사용할 수 있지만 시도해보지는 않았다. UART1과 UART2는 각각 RX,TX,CTS,RTS 4개의 신호선을 가지고 있으며, UART0..
Buildroot 테스트 최신 stable version인 buildroot-2019.11 다운로드 후 압축을 푼다. 아래 절차대로 FoxNux용 BSP(Board Support Package)를 만들어 보았다. board/foxnuxone/ 폴더 만들기 board/foxnuxone/boot.cmd 파일 만들기 (u-boot이 자동실행하는 스크립트) setenv bootargs console=ttyS0,115200 panic=5 console=tty0 rootwait root=/dev/mmcblk0p2 earlyprintk rw load mmc 0:1 0x41000000 zImage load mmc 0:1 0x41800000 sun8i-s3-foxnux-one.dtb bootz 0x41000000 - 0x41800000 boar..
ADC 키패드 입력 테스트 Allwinner I3(S3) CPU 내부에 LRADC 입력 장치가 포함되어 있다. Low Resolution Analog to Digital Converter 인지 아니면 Low Rate Analog to Digital Converter인지 명확하지 않다. 나는 Low Resolution으로 부르고 싶지만 Sunxi community에는 후자의 Low Rate 용어를 사용하는 것 같다. 6비트 분해능으로 디지털로 변환된 값의 범위는 0~63까지로 매우 허접하다. 최대 2.0Volt까지 입력이 가능하며 약 30mV의 분해능이다. 4msec의 ADC 변환 시간이 필요하므로 최대 250Hz의 샘플링 주기가 가능하다. 따라서 일반적인 계측용 ADC 입력 장치로 사용하는 것은 의미가 없어보이며, 버튼 몇개를 연..
카메라 입력 테스트 Allwinner S3/i3 CPU에는 parallel과 serial(MIPI-CSI) 2개의 카메라 이미지 입력 포트가 있다. 그런데 현재 메인라인 커널은 MIPI-CSI와 ISP를 지원하지 않으며 추후에 bootlin에서 지원할 가능성은 있다. OV7670이라는 VGA급 저질 카메라를 Parallel로 연결하여 간단한 정지영상 capture를 해보았다. 아래 명령은 640x480 해상도의 YUYV 포맷 이미지로 읽어내어 JPEG 형식의 파일로 저장 한다. fswebcam -S 10 -d /dev/video0 -p YUYV -r 640x480 test22.jpg 저장한 이미지는 fbi라는 프로그램으로 프레임버퍼에 저장한 파일을 디스플레이 하였다. fbi -d /dev/fb0 test22.jpg -a -..
동영상 재생 테스트 비교적 낮은 성능의 CPU(Cortex-A7 1Ghz Single-Core)에서 동영상 재생 능력이 얼마나 되는지 테스트해보았다. 테스트 영상은 아래 링크에서 다운로드 받았다. 유명한 오픈소스 에니메이션 Big Buck Bunny이다. https://archive.org/download/BigBuckBunny/big_buck_bunny_480p_surround-fix.avi 동영상은 MPEG4 포맷으로 854x480의 해상도, 24bpp 칼라, 24.000 fps로 2500kbps (305.2 kbyte/s) 정도의 비트레이트로 된 파일이다. 사운드는 AC3 포맷으로 48KHz, 2 채널 스테레오이다. 데비안 OS위에서 apt로 설치한 mplayer 명령으로 재생하였으며 내 눈으로 보기에는 부드럽고, 사..
Kernel 5.5 (rc4) 포팅과 부팅 Allwinner i3(S3) CPU에 최신 메인라인 커널을 포팅하는 과정을 기록하기 시작한다. 과정에 실수나 오류가 있을수 있으나 그 것 자체가 개발 과정에 대한 유용한 기록이 되리라 생각한다. 내 보드에 맞는 devicetree와 defconfig 파일은 5.4.1 버전에서 테스트가 된것을 거의 그대로 사용해 보자. 그리고 커널 config 설정할때 oldconfig 옵션에 대한 공부는 좀 더 필요해 보인다. 우선 Tovalds님의 최신 커널 repo를 Github 홈페이지에서 "fork" 하였고 개발용 PC에 git clone으로 전체 소스를 다운로드 받았다. 툴체인은 u-boot 빌드에 사용했던 gcc-linaro-6.3.1을 그대로 이용하였다. Fork한 커널 소스는 https://github...
CH330N/CH340 Windows 10 드라이버 설치 FoxNux에 사용한 초저가/초간단 USB-UART 칩인 CH330N은 커널 4.4 이상의 리눅스 PC에서는 별도의 드라이버 설치나 설정없이 바로 /dev/ttyUSB0로 인식되어 동작한다. Windows에서 CH330N을 사용하려면 드라이버 설치가 필요한것 같아 구글링 해보았는데 문제가 많다는 글이 여기저기 보여서 걱정하였다. 나는 주로 리눅스 컴퓨터만 사용해서 별 문제 없으나, 혹시 윈도우 PC에 가상머신으로 Linux를 올려서 사용할 개발자들도 있을것 같아 테스트를 해보기를 하였다. Windows 10을 모두 업데이트하고 실제 장치를 연결하였으나 역시나 자동으로 인식되지는 않았다. 그래서 마이크로소프트 홈페이지를 검색해 보니 WCH사의 CH340/C330N 드라이버가 2019년 1월 업데이트 목록에..
u-boot Ethernet 기능 활성화 u-boot에 Ethernet 기능이 꺼져 있어, TFTP를 이용한 원격 커널 부팅이 불가능했다. 뻔질나게 SD 카드를 옮기고 복사하면서 개발하는 것은 효율이 너무 낮아 네트웍 기능을 켜 보았다. sun8i-s3-foxnux.dts를 아래와 같이 변경하였다. USB 관련 변경은 무시하자. diff --git a/arch/arm/dts/sun8i-s3-foxnux.dts b/arch/arm/dts/sun8i-s3-foxnux.dts index 758c3ffeaf..1f51e305a6 100644 --- a/arch/arm/dts/sun8i-s3-foxnux.dts +++ b/arch/arm/dts/sun8i-s3-foxnux.dts @@ -49,6 +49,7 @@ compatible = "licheepi,..