Allwinner D1s 하드웨어 제어를 위한 Tina-SDK 개발 가이드

Tina-SDK 소스코드 준비 및 환경 구축

D1s 프로세서 기반의 개발을 위해 먼저 전용 SDK 소스코드를 확보하고 우분투(Ubuntu) 환경에 구축해야 합니다. 아래의 절차에 따라 소스 압축 파일을 해제하고 무결성을 확인합니다.

# 작업 디렉토리 생성 및 이동
mkdir -p ~/allwinner_d1s_work
cd ~/allwinner_d1s_work

# 파일 무결성 검사 (MD5 체크섬 확인)
# 다운로드한 모든 분할 압축 파일의 해시값이 일치하는지 확인합니다.
md5sum tina-d1-h.tar.bz2.*

# 압축 해제 및 소스 병합
cat tina-d1-h.tar.bz2.* | tar -jxvf -

압축 해제가 완료되면 하위 디렉토리에 있는 소스를 상위 폴더로 정리하고, 특정 보드(D1s-CVBS)를 위한 확장 패치를 적용합니다. 패치 적용 시 서브모듈 업데이트를 잊지 마세요.

# 확장 패치 클론 및 적용
git clone https://github.com/DongshanPI/D1s-CVBS_TinaSDK.git d1s_patch
cd d1s_patch
git submodule update --init --recursive
cp -rfvd ./* ~/allwinner_d1s_work/tina-d1-h/

빌드 과정에서 발생할 수 있는 의존성 문제를 방지하기 위해 필수 도구 및 라이브러리를 설치합니다.

sudo apt-get update
sudo apt-get install -y build-essential subversion git libncurses5-dev zlib1g-dev \
gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs \
unzip lib32z1 lib32z1-dev lib32stdc++6 libc6:i386 libstdc++6:i386 lib32ncurses5

펌웨어 빌드 및 패키징

환경 설정 스크립트를 로드한 후 개발하려는 타겟 보드에 맞는 프로파일을 선택합니다.

cd ~/allwinner_d1s_work/tina-d1-h
source build/envsetup.sh
lunch

메뉴가 표시되면 d1s_cvbs-tina 항목(보통 3번)을 선택합니다. 이후 컴파일과 이미지 패키징 명령을 차례로 실행합니다.

# 컴파일 시작 (코어 수에 맞게 -j 옵션 활용 가능)
make -j$(nproc)

# 이미지 패키징
pack

성공적으로 완료되면 out/d1s-cvbs/tina_d1s-cvbs_uart3.img 경로에 펌웨어 파일이 생성됩니다.

펌웨어 업로드 (Flashing)

생성된 이미지를 Allwinner 전용 도구인 PhoenixSuit를 사용하여 개발 보드에 기록합니다.

  1. PhoenixSuit를 실행하고 'Firmware' 탭에서 .img 파일을 선택합니다.
  2. 보드의 FEL 버튼을 누른 상태에서 RESET 버튼을 짧게 눌러 기록 모드로 진입합니다.
  3. '전체 닦기(Whole Flash)' 모드를 선택하여 업로드를 시작합니다.

XR829 Wi-Fi 모듈 커스텀 및 이식

Wi-Fi 기능을 활성화하기 위해 커널 설정을 변경하고 장치 트리(DTS)를 수정해야 합니다.

커널 드라이버 활성화

make kernel_menuconfig

# 아래 경로로 이동하여 드라이버를 모듈(<M>)로 활성화
# Device Drivers -> Network device support -> Wireless LAN -> XR829 WLAN support

장치 트리 수정 (board.dts)

회로도에 명시된 핀 번호에 맞춰 GPIO 설정을 업데이트합니다. 예를 들어 wlan_regonwlan_hostwake 핀을 각각 PG12, PG10으로 지정합니다.

기능 테스트 및 네트워크 연결

이미지를 굽고 부팅한 후 아래 명령어로 Wi-Fi 동작을 확인합니다.

# 드라이버 로드 및 서비스 시작
cd /lib/modules/$(uname -r)
insmod xr829.ko
/etc/init.d/wpa_supplicant start

# 주변 네트워크 스캔
wifi_scan_results_test

# 액세스 포인트(AP) 연결
wifi_connect_ap_test "SSID_NAME" "PASSWORD"

# 연결 확인
ifconfig wlan0
ping -c 4 www.google.com

CVBS 카메라(VIN0) 연동 설정

아날로그 비디오 입력을 처리하기 위해 V4L2 미디어 프레임워크 설정을 구성합니다.

미디어 지원 설정

커널 설정(make kernel_menuconfig)에서 Multimedia support 하위의 V4L platform devicesSUNXI platform devices를 모두 체크합니다.

미디어 라이브러리 및 데모 구성

recorder.cfg 파일에서 카메라 인덱스를 확인해야 합니다. 하드웨어 연결 상태에 따라 camera_id 값을 0 또는 1로 조정하여 시스템 노드(/dev/video0 등)와 매칭시킵니다.

# trecorderdemo 설치를 위해 SDK 메뉴 설정 변경
make menuconfig

# Allwinner -> tina_multimedia_demo 선택

설정 변경 후 다시 빌드하여 타겟 보드에서 데모 프로그램을 실행합니다.

# 비디오 노드 링크 생성 (필요 시)
ln -s /dev/video4 /dev/video0

# 테스트 실행
trecorderdemo 0

태그: Tina-SDK Allwinner-D1s embedded-linux RISC-V Kernel-Drivers

7월 22일 18:40에 게시됨