안녕하세요, TOPST D3-G를 활용해 개인 프로젝트를 진행 중인 사용자입니다.
보드를 사용하면서 한 가지 기능을 구현해보고 싶어 커뮤니티에 도움을 요청드립니다.
구현하고 싶은 것
하드커널의 ODROID-M1의 petitboot처럼, 부팅 시 저장 장치를 선택할 수 있는 메뉴 를 TOPST D3-G에서도 사용하고 싶습니다.
선택 대상으로 생각하고 있는 것:
eMMC (기본 Ubuntu)
SD카드 (Ubuntu 복제본, 레트로 게임 OS 등 다양하게 활용)
NVMe SSD
현재 검토 중인 접근 방식
TCC 부트로더가 eMMC 고정 부팅 구조(Single Boot)이고 SD 부팅을 공식 지원하지 않아, petitboot와 동일한 원리인 kexec 를 활용하는 방향을 검토하고 있습니다.
[TCC 부트로더] → [eMMC Ubuntu] → [부팅 메뉴 스크립트] → kexec → [선택한 OS]
eMMC로 항상 먼저 부팅 (현재 구조상 불가피)
부팅 초반 systemd 서비스에서 메뉴 표시
선택한 장치의 커널+rootfs를 kexec로 로드해 전환
커널은 CONFIG_KEXEC=y로 재빌드가 필요한데, topst-development/kernel-5.10 소스가 공개되어 있어 이 부분은 직접 진행할 수 있을 것 같습니다.
문의 드리는 내용
부트로더 관련해서 GitHub를 살펴보니 아래 두 레포지토리가 있었습니다:
현재 두 레포 모두 README만 있고 소스 코드는 올라와 있지 않은 상태인데, 혹시 아래 사항들을 여쭤봐도 될까요?
부트로더 소스 공개 계획이 있으신지요?
U-Boot는 GPL v2 라이선스로, 바이너리 배포 시 소스 제공 의무가 있어 여쭤봅니다. TOPST D3-G 부트로더가 U-Boot 기반이라면 소스를 공개해 주실 수 있는지 궁금합니다.
소스 공개가 어렵다면, 부트로더 관련 문서라도 제공해 주실 수 있는지요?
아래 내용만 문서화되어 있어도 커뮤니티 활용도가 크게 높아질 것 같습니다:
부팅 순서 및 파티션 구조
커널 커맨드라인 파라미터 수정 방법
SD카드, NVMe 등 대체 부팅 소스 활성화 가능 여부
환경 정보
보드: TOPST D3-G (TCC8050, Cortex-A72 × 4, 6.9 GB RAM)
현재 OS: Ubuntu 22.04.5 LTS (eMMC)
커널: 5.10.205-tcc (CONFIG_KEXEC 현재 비활성화 확인)
부팅 파티션 (mmcblk0p2): Android boot image 포맷
구현에 성공하면 과정과 결과를 커뮤니티에 공유할 예정입니다.
바쁘신 중에 읽어주셔서 감사합니다. 어떤 형태로든 답변 주시면 큰 도움이 될 것 같습니다.
직접 구현해봤습니다. 결과 공유합니다.
구현 방식: kexec 기반 부팅 메뉴
U-Boot 소스가 없으므로 eMMC Ubuntu를 항상 먼저 부팅 → kexec로 SD카드 커널로 점프 하는 방식을 사용했습니다.
1단계: 커널 재빌드 (CONFIG_KEXEC 활성화)
기본 배포 커널은 CONFIG_KEXEC=y가 꺼져 있어 직접 빌드해야 합니다.
d3_g_topst_defconfig로 빌드하면 PCIe/NVMe, Ethernet 드라이버가 빠지므로, 현재 동작 중인 커널 config를 추출해서 KEXEC만 추가 해야 합니다.
# TOPST에서 config 추출
zcat /proc/config.gz > running_config
# x86 PC에서 크로스컴파일
cp running_config ~/topst-kernel/.config
echo "CONFIG_KEXEC=y" >> .config
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- olddefconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- \
LOCALVERSION="" KCFLAGS="-Wno-error=enum-int-mismatch" -j$(nproc) Image
2단계: SD카드 rootfs 구성
eMMC rootfs를 rsync로 복사했습니다.
sudo mkfs.ext4 -L sdroot /dev/mmcblk1p1
sudo rsync -aAX \
--exclude={/proc,/sys,/dev,/run,/mnt,/tmp,/media,/swap.img} \
/ /media/topst/sdroot/
3단계: 부팅 메뉴 (systemd 서비스)
/usr/local/bin/boot-menu.sh — SD카드에 /boot/Image 있을 때만 메뉴 표시, 30초 타임아웃.
# kexec 핵심 명령
cp /sys/firmware/fdt /tmp/live.dtb # live DTB 필수 (8GB 메모리 인식)
kexec -l /path/to/SD/boot/Image \
--dtb=/tmp/live.dtb \
--command-line="root=UUID=<SD_UUID> rw console=tty1 console=ttyAMA0,115200"
kexec -e
/etc/systemd/system/boot-menu.service — Before=basic.target, TTYPath=/dev/tty1으로 DP 모니터에 메뉴 출력.
주의사항
--dtb=/sys/firmware/fdt (live DTB) 필수. recovery DTB 사용 시 메모리 1.2GB로 인식됨
irqpoll 절대 사용 금지 → USB IRQ 폭주로 soft lockup 발생
--kexec-file-syscall 사용 금지
후기
속도 : SD카드 특성상 eMMC 대비 부팅이 많이 느립니다.
구조적 한계 : 결국 eMMC가 먼저 완전히 부팅된 후 메뉴가 뜨는 구조라, 진정한 멀티부트라기보다는 “eMMC에서 SD로 OS를 교체하는” 느낌입니다. U-Boot 소스가 공개되어 U-Boot 단계에서 부팅 장치를 선택할 수 있다면 훨씬 깔끔할 것 같습니다. TOPST 측의 U-Boot 소스 공개 또는 부트 시퀀스 문서 공개를 기대합니다.
1 Like
안녕하세요, 생글이님.
답변이 늦은 점 죄송합니다 ㅜㅜ
공유해주신 내용 확인하였습니다. 추후 내용 참고하여 진행 해보도록 하겠습니다. 감사합니다!
u-boot source code를 요청하셨는데요, TOPST는 오픈소스 정책을 실시하고 있으므로 u-boot 소스코드 또한 github에 공개되어 있습니다.
위 링크는 현재 배포된 이미지의 u-boot 소스코드입니다.
추가로 필요하신 부분이 있으시면 언제든지 말씀 부탁드립니다.
감사합니다.
@su.nam
브랜치가 있는줄 몰랐네요.
알려주신 코드로 며칠동안 Claude Code와 함께 틈틈히 작업했습니다. 이번엔 kexec 대신에 U-Boot 부트로더 단계에서 바로 저장장치를 고르는 부팅 메뉴 를 구현했습니다. 진행 상황 공유드립니다.
이번에는 eMMC를 거치지 않고 U-Boot 단계에서 모니터에 메뉴를 띄우고, USB 키보드로 eMMC / SD카드를 선택해 부팅합니다. 처음에 원했던 "진정한 멀티부트"에 한층 가까워졌습니다.
메뉴 자체는 U-Boot 표준 기능(CONFIG_CMD_BOOTMENU)으로 띄웠고, 정작 손이 많이 간 부분은 부팅 단계에서 무선 키보드를 동작시키는 것 이었습니다. USB 호스트 드라이버(EHCI / OHCI / xHCI)를 여러 군데 수정했습니다.
수정 사항 전부 정리한 fork + Pull Request: TOPST D3-G: USB 키보드 + DP 부팅 메뉴 (무선 동글 지원) by Pyohwan · Pull Request #1 · Pyohwan/u-boot · GitHub
테스트에 사용한 장치
무선 키보드 동글 (둘 다 저속, Full-Speed):
한성 콤보 — Areson, USB ID 25a7:fa67
그루브스톤 — Telink, USB ID 320f:5088
USB 허브:
nexi NX-U3130-4PH — Genesys GL3523 (05e3:0610), 단일 변환기(single-TT)
nexi NX-UH304P — Realtek RTS5411 (0bda:5411), 다중 변환기(multi-TT)
되는 것
기능
상태
모니터에 부팅 메뉴 표시 (eMMC / SD카드 / U-Boot 콘솔)
유선 키보드 (USB 3.0 포트)
무선 동글을 USB 3.0 포트에 직접 연결
무선 동글을 USB 2.0 포트에 직접 연결 (OHCI 활성화)
무선 동글 + 허브를 USB 2.0 포트에 연결 (EHCI)
USB 2.0 무선 키보드와 USB 3.0 허브를 동시에 연결
안 되는 것 (하나 남았습니다)
기능
상태
무선 동글 + 허브를 USB 3.0 포트에 연결 (xHCI)
TOPST에 봐주셨으면 하는 부분
USB 2.0 고속(High-Speed) 허브를 USB 3.0 포트에 꽂고, 그 허브 뒤에 저속(Full-Speed, 12Mbps) 무선 키보드 동글을 연결하면, U-Boot의 xHCI 드라이버에서 키 입력 완료 이벤트가 오지 않습니다. (동글을 포트에 직접 꽂거나, 허브를 USB 2.0 포트에 꽂으면 모두 정상입니다. 위 두 허브 모두 USB 3.0에서는 실패합니다.) 같은 보드에서 Linux 5.10.205-tcc는 잘 됩니다.
허브를 거치는 저속 장치는 허브 내부의 변환기(Transaction Translator)를 통해 통신하는데, 그중 주기적인 인터럽트 전송만 완료되지 않습니다. slot / endpoint context, 변환기 설정, USB 2.0 PHY 튜닝 값, 컨트롤러 capability 레지스터, 이벤트 링 동작까지 전부 Linux와 동일하게 맞췄는데도 해당 전송만 시작된 흔적조차 없습니다.
질문 두 가지입니다:
TCC8050 dwc3 호스트에서 허브를 거치는 저속 장치의 주기적 인터럽트 전송 에 알려진 문제(errata)나, 소프트웨어가 추가로 해줘야 하는 설정이 있을까요?
Linux의 xHCI 드라이버에는 있고 U-Boot 쪽에는 빠진 관련 처리가 있을까요?
재현 환경과 진단 로그를 가지고 있어, 필요하시면 더 공유드리겠습니다.
su.nam
June 10, 2026, 1:34am
5
안녕하세요, @saenggeuri 님.
증상 재현을 위해 작성해주신 내용을 보고 생글이 님의 git repository 주소로 u-boot-topst.bb파일의 src_uri를 변경하여 테스트해보려고 합니다.
CONFIG_CMD_BOOTMENU를 활성화하여 부팅을 하였으나 UART 콘솔창에만 아래와 같은 화면이 뜨고 DP를 연결한 모니터에는 BootLogo가 떠있습니다.
혹시 추가해야할 config가 있을까요?
세팅하신 환경설정 내용 공유 부탁 드립니다.
감사합니다.
@su.nam 님.
말씀하신 증상은 제 쪽 defconfig 문제였습니다. 부팅 메뉴 · 디스플레이 · USB 키보드에 필요한 config들을 그동안 빌드할 때 .config에 직접 넣고 빌드만 해서, 정작 d3_g_topst_defconfig에는 커밋이 안 돼 있었습니다. 그래서 clean하게 받아 빌드하면 그 옵션들이 빠졌던 겁니다.
방금 savedefconfig로 누락 config들을 defconfig에 반영해 push했습니다:
base/d3/1.0.0 ← feature/dp-bootmenu-usb-kbd
The DP video, bootmenu, USB keyboard, SD/MMC and console-mux options
needed for … the boot menu were only applied to .config at build time and
never committed to the defconfig. Add them via savedefconfig so the boot
menu (DP output + USB keyboard) reproduces from a clean checkout.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
다시 받으셔서 아래로 빌드하시면 별도 config 추가 없이 DP에 메뉴가 뜹니다:
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- d3_g_topst_defconfig
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- \
KCFLAGS="-Wno-error=enum-int-mismatch -Wno-error=unused-function" -j$(nproc)
DP 출력 관련 핵심은 이 부분입니다:
CONFIG_CONSOLE_MUX + CONFIG_SYS_CONSOLE_IS_IN_ENV — stdout=vidconsole,serial 환경변수가 적용되려면 필수입니다. 이게 빠지면 메뉴가 serial(UART)로만 나갑니다.
CONFIG_DM_VIDEO / CONFIG_DISPLAY / CONFIG_DISPLAY_PORT_V14 — DP vidconsole 출력.
BootLogo는 떠 있다고 하셨으니 DP 패널 자체는 이미 켜진 상태이고, 메뉴 텍스트만 안 나온 것은 위 CONSOLE_MUX 계열 누락 때문으로 보입니다.
감사합니다.
su.nam
June 11, 2026, 6:21am
7
@saenggeuri 님, 안녕하세요. 친절히 답변주셔서 감사합니다.
다만, push해주신 내용에 CONFIG_CONSOLE_MUX + CONFIG_SYS_CONSOLE_IS_IN_ENV 내용이 없어 새로이 빌드하여도 적용이 되지 않았었습니다.
제가 해당 config 활성화 후 DP 모니터에서 정상 동작함을 확인했습니다. 다시 한 번 확인 부탁드립니다!
추가로 USB 3.0 포트에 직결하여도 동작이 되지 않는데, 이 부분도 확인 한 번 부탁드립니다.
감사합니다!!
@su.nam
죄송합니다. 이것 저것 옵션 바꿔가면서 했던거라 빠트린게 많네요.
이번엔 제가 빌드하고 flash 까지 하고 테스트해본거라 잘 될것이라 기대합니다. 저는 make defconfig && make 한거라 su.nam님 yocto 빌드와 방법은 다릅니다. usb 3.0 키보드 동글 직결도 잘 되는걸 확인했습니다. yocto에서도 잘 되는지 확인해주시면 감사하겠습니다.
base/d3/1.0.0 ← feature/dp-bootmenu-usb-kbd
열림 01:28PM - 30 May 26 UTC
## 요약
TOPST D3-G (TCC8050)에서 DP 디스플레이에 U-Boot 부팅 메뉴를 띄우고 USB 키보드로 조작할 수 있게 한다… . 특히 무선 2.4GHz 키보드 동글을 그 메뉴에서 쓸 수 있게 만든다. 메뉴 엔진은 U-Boot 표준 `CONFIG_CMD_BOOTMENU`를 쓰고, 메뉴 항목은 `telechips/common.h`의 `bootmenu_*` 환경변수로 정의한다.
## 테스트 환경
- **보드**: TOPST D3-G (TCC8050, Cortex-A72 x4 + A53 x4)
- **출력**: DP 모니터 (U-Boot 콘솔은 FB0->DP0 단일 출력)
- **무선 동글**: 한성 콤보(Areson 25a7:fa67, FS), 그루브스톤(Telink 320f:5088, FS)
- **USB 허브 2종**:
- **nexi NX-U3130-4PH** = Genesys **GL3523** (05e3:0610, **single-TT**)
- **nexi NX-UH304P** = Realtek **RTS5411** (0bda:5411 HS / 0bda:0411 SS, **multi-TT**)
## 동작 정리
| 연결 방식 | 부팅 메뉴 입력 |
|---|---|
| 동글 **USB 3.0 직결** (XHCI) | 동작, 빠르고 안정적 (추천) |
| 동글 **USB 2.0 직결** (OHCI) | 동작 (OHCI companion 활성화) |
| 동글 **USB 2.0 직결** + **USB 3.0에 허브 동시 연결** | 동작 (USB 2.0 PHY 송신 튜닝 보정) |
| **GL3523 허브 USB 2.0** + 동글 | 동작 (single-TT, EHCI) |
| **RTS5411 허브 USB 2.0** + 동글 | 동작 (single-TT 강제) |
| 모든 허브 USB 3.0 + 동글 | 안됨 — 아래 한계 참고 |
| 유선 키보드 USB 3.0 (허브 경유 포함) | 동작 (HS, split 불필요) |
장치는 **전원 켜기 전에** 연결돼 있어야 한다 (U-Boot가 USB를 한 번만 스캔).
## 근본 원인
이 TCC8050 dwc3 컨트롤러에서 U-Boot XHCI는 허브 TT 뒤에 있는 풀스피드 장치의 주기적(인터럽트) **split transaction**을 완료시키지 못한다. 슬롯/EP 컨텍스트, TT 설정, protocol, 인터페이스별 EP 설정을 전부 Linux와 동일하게 맞춰도 transfer-completion 이벤트가 오지 않는다. 동글을 USB 3.0 포트에 **직결**하면 (tt=0, split 없음) 즉시 동작한다.
## 변경 내용
- **xhci: event-ring 폴링 기반 nonblock 인터럽트 전송** — TRB를 한 번만 제출하고 `abort_td()` 없이 event ring을 폴링한다. idle 폴링이 콘솔을 멈추지 않게 되어 USB 3.0 직결 키보드가 동작한다.
- **usb: multi-TT 허브를 single-TT로 강제** — `USB_HUB_PR_HS_MULTI_TT` 허브에서 alt 1로의 SET_INTERFACE를 건너뛴다. 이 환경에서 multi-TT split 스케줄링이 불안정하기 때문이다. RTS5411 허브 뒤의 FS/LS 장치가 USB 2.0에서 동작한다. GL3523(native single-TT)은 영향 없다.
- **usb: ehci: 인터럽트 큐를 폴링 간 캐싱** — `SYS_USB_EVENT_POLL` 모드의 `usb_kbd`가 매 폴링마다 `submit_int_msg()`를 호출하며 큐를 새로 만들었다. 이게 호출마다 지연을 더하고, 동작 중인 큐를 누수시켜 몇 번 입력 후 키보드가 죽었다. 이제 큐를 `struct ehci_ctrl`에 캐싱해 idle일 때 재사용하고, 리포트를 소비할 때만 해제한다. 허브 뒤 USB 2.0 키보드가 빠르고 누수 없이 동작한다.
- **usb: ohci: TCC8050 USB 2.0 직결 OHCI(EHCI companion) 활성화** — TCC BSP U-Boot은 OHCI를 꺼둬서 FS 장치를 USB 2.0에 직결하면 인식하지 못했다. OHCI를 켜고 `flush_dcache_buffer`/`invalidate_dcache_buffer` 매크로에 NULL 가드를 추가했다: 데이터 단계 없는 control transfer(SET_ADDRESS 등)는 buffer=NULL/len=0인데 매크로가 `flush_dcache_range(0, 64)`로 주소 0에 `dc zva`를 실행해 Synchronous Abort로 죽던 것이다. OHCI는 EHCI와 PHY를 공유하므로 OHCI probe 전에 companion EHCI를 먼저 probe시켜 PHY를 보장한다. 무선 동글을 USB 2.0에 **허브 없이 직결**해도 동작한다.
- **usb: ohci: 인터럽트 큐를 폴링 간 캐싱** — EHCI와 동일한 방식으로, `usb_kbd` 폴링마다 OHCI int 큐를 새로 만들던 것을 `struct ohci`에 캐싱해 재사용한다. USB 2.0 직결 키보드 키 반응이 ~1초에서 즉각으로 빨라진다.
- **usb: phy: tcc-ehci: TCC8050 USB 2.0 PHY 송신 튜닝 보정** — 805x init 경로가 PCFG1의 TXVRT를 0x3, PCFG3를 0x0으로 두고 있었다. Linux 커널 드라이버와 U-Boot의 TCC807X 경로는 TXVRT=0xA, PCFG3=0x11(VDATREFTUNE0|RETENABLEN)을 쓰는데 805x 포팅에서 누락된 값이다. 호스트 송신 전압이 약해서, USB 2.0에 무선 키보드를 직결한 상태에서 USB 3.0에 허브를 동시 연결하면 허브의 지속적 버스 활동 노이즈에 OHCI 키보드가 IN 토큰을 놓쳐 입력이 드문드문 누락됐다. 단일 장치(USB 2.0/3.0 메모리) 직결로는 재현되지 않고 허브에서만 발생, frame 카운터/HCFS는 정상이라 컨트롤러가 아닌 PHY 신호 마진 문제로 가려냈다. PCFG1/PCFG3을 커널 값과 일치시켜 해결(허브+동글 조합 50회 중 0회 실패).
- **ehci: nonblock 인터럽트 timeout 메시지 억제** — nonblock 폴러에게 idle timeout은 정상이므로 콘솔을 도배하지 않는다.
- **topst-d3g: DP 콘솔 출력 수정 (display dtsi)** — U-Boot 자체 DTB에서 디스플레이 경로를 FB0->DP0 하나만 enable한다. `tcc_dpv14_enable()`이 `num_of_dps`만큼 enable 호출을 기다리는데 U-Boot는 콘솔용 비디오 디바이스를 1개만 probe하므로, 4개를 다 켜두면 DP가 영영 안 켜져 화면이 까맣게 나온다. (U-Boot 전용 DTB 변경이며 Linux로 전달되는 DTB는 별도라 영향 없음.)
- **configs: d3_g_topst_defconfig에 디스플레이/부트메뉴/USB 키보드 config 반영** — 위 기능에 필요한 `DM_VIDEO`/`DISPLAY`/`DISPLAY_PORT_V14`/`CONSOLE_MUX`/`SYS_CONSOLE_IS_IN_ENV`/`USB_KEYBOARD`/`CMD_BOOTMENU`/`SD_BOOT`/`CMD_MMC`/`MMC_TCC_SC` 등이 그동안 빌드 시 `.config`에만 들어가고 defconfig엔 커밋되지 않아, clean checkout으로 빌드하면 DP 메뉴/키보드가 동작하지 않았다. 또한 `savedefconfig`는 `default y if DM_VIDEO`(`CONSOLE_MUX` 등)나 select로 켜지는 심볼을 defconfig에서 생략하는데, `make defconfig`는 그 default를 적용하지만 **Yocto(bitbake) 빌드는 적용하지 않아** DP 콘솔/USB 키보드가 누락된다. 빌드 시스템 무관하게 동작하도록 `CONSOLE_MUX`/`SYS_CONSOLE_IS_IN_ENV`/`SYS_USB_EVENT_POLL`/`DISPLAY_PORT_V14`/`TELECHIPS_FB_DM`/`TELECHIPS_DPV14_DM`/`TELECHIPS_LVDS_DM`/`TELECHIPS_LVDS_CTRL`/`VIDEO_ANSI`/`USB_HOST`를 defconfig에 **명시**했다(`SYS_USB_EVENT_POLL` 누락은 USB 키보드 폴링 자체를 막아 USB 3.0 직결도 실패하던 원인).
## 빌드
```bash
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- d3_g_topst_defconfig
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- \
KCFLAGS="-Wno-error=enum-int-mismatch -Wno-error=unused-function" -j$(nproc)
# 결과물: ca72_bl3.rom (tcmktool 자동 생성). dd로 mmcblk0p1에 플래시.
```
디스플레이/부트메뉴/USB 키보드 옵션이 defconfig에 포함되어, 별도 config 추가 없이 위 동작 정리대로 재현된다. (gcc 14에서 기존 TCC 코드의 -Werror 회피용 KCFLAGS 2개 필요.)
## 알려진 한계 (벤더 영역)
허브를 **USB 3.0**에 꽂고 그 허브 뒤에 FS 무선 동글을 쓰면 여전히 실패한다. 위에서 말한 XHCI FS-periodic-split 한계로, 컨트롤러 레벨 문제다. 우회책: 동글 USB 3.0 직결, 또는 허브를 USB 2.0에 연결. 근본 수정은 TCC8050 dwc3/XHCI 지식이 필요하다 (TOPST에 에스컬레이션).
## 테스트
실제 하드웨어(UART + DP)에서 검증: USB 3.0 직결 동글, USB 2.0의 GL3523/RTS5411 허브 — 빠른 키 반응, 반복 입력 시 누수 없음, 깨끗한 콘솔(진단 로그 제거). USB 2.0 직결 동글 + USB 3.0 허브 동시 연결 조합도 PHY 튜닝 보정 후 50회 입력 무실패 확인.
## 관련 논의
TOPST 커뮤니티에 부팅 메뉴 구현 공유 및 외장 허브 XHCI FS-periodic-split 한계 문의:
https://community.topst.ai/t/sd-nvme-emmc/919/4
부팅·저장장치: CONFIG_SD_BOOT, CONFIG_CMD_MMC, CONFIG_MMC_TCC_SC, CONFIG_CMD_BOOTMENU
디스플레이(DP 출력): CONFIG_DM_VIDEO, CONFIG_DISPLAY, CONFIG_DISPLAY_PORT_V14, CONFIG_TELECHIPS_FB_DM, CONFIG_TELECHIPS_DPV14_DM, CONFIG_TELECHIPS_LVDS_DM, CONFIG_TELECHIPS_LVDS_CTRL, CONFIG_VIDEO_ANSI, CONFIG_VIDEO_BMP_GZIP, CONFIG_CMD_BMP
콘솔(메뉴를 DP로 출력): CONFIG_CONSOLE_MUX, CONFIG_SYS_CONSOLE_IS_IN_ENV
USB 키보드: CONFIG_USB_KEYBOARD, CONFIG_SYS_USB_EVENT_POLL, CONFIG_USB_HOST
USB 2.0 직결(OHCI): CONFIG_USB_OHCI_HCD, CONFIG_USB_OHCI_GENERIC