Skip to content

Latest commit

 

History

History
449 lines (329 loc) · 19 KB

README-ja.md

File metadata and controls

449 lines (329 loc) · 19 KB

English | 简䜓䞭文 | 日本語

抂芁

Milk-V DuoはCV1800Bをベヌスにした超小型の組み蟌みプラットフォヌムです。LinuxずRTOSが実行可胜で、プロフェッショナル、産業甚ODM、AIoT、DIY、クリ゚むタヌに、高信頌で高費甚察効果なプラットフォヌムを提䟛したす。

ハヌドりェア

Milk-V Duo 64M

  • CPU: CVITEK CV1800B (C906@1GHz + C906@700MHz)
  • デュアルコアRV64 最倧1GHz
  • 64MB RAM
  • アドオンボヌド経由での10/100Mbpsむヌサネット

Milk-V Duo 256M

  • CPU: SOPHGO SG2002 (C906@1GHz + C906@700MHz + ARM Cortex-A53@1GHz)
  • 256MB RAM
  • GPIO経由でのオヌディオ出力
  • 1TOPSのNPU

Milk-V Duo S

  • CPU: SOPHGO SG2000 (C906@1GHz + C906@700MHz + ARM Cortex-A53@1GHz)
  • 256MB RAM
  • GPIO経由でのオヌディオ出力
  • 2系統のMIPI CSI

SDKのディレクトリ構造

├── build               // コンパむルスクリプトずボヌド蚭定
├── build.sh            // 自動コンパむルスクリプト
├── buildroot-2021.05   // Buildrootの゜ヌスコヌド
├── freertos            // FreeRTOSのシステム
├── fsbl                // 完成枈みfsblファヌムりェア
├── install             // 䞀時むメヌゞの仮眮き堎
├── isp_tuning          // カメラ効果パラメヌタ
├── linux_5.10          // Linuxカヌネル
├── middleware          // 自家補マルチメディアフレヌムワヌク
├── device              // Milk-Vのコンフィグレヌションファむル
├── opensbi             // opensbiラむブラリ
├── out                 // 完成したSDカヌド甚むメヌゞはここに出おきたす
├── ramdisk             // 完成枈みramsidk
└── u-boot-2021.10      // u-bootの゜ヌスコヌド

クむックスタヌト

[ヒント]

このSDKのコンパむル方法や䜿甚法に぀いおは、公匏ドキュメントも参照しおください。たた、私達の公匏ドキュメントのサむトはオヌプン゜ヌスです。もし内容の充実や倚蚀語ぞの翻蚳に興味があるなら、ぜひこのリポゞトリにPRを飛ばしおください。

コンパむル環境を準備する前に、ロヌカルのubuntuを䜿甚する際にサポヌトされおいるのは「Ubuntu Jammy 22.04.x amd64」のみです。

他のLinuxディストロを䜿甚しおいる堎合、問題を回避するためにDocker環境を䜿甚するこずを匷くお勧めしたす。

2぀の環境でのコンパむル方法に぀いお解説したす。

1. Ubuntu 22.04を䜿甚しおコンパむル

むンストヌルするパッケヌゞ

コンパむルに必芁なパッケヌゞをむンストヌルしたす。

sudo apt install -y pkg-config build-essential ninja-build automake autoconf libtool wget curl git gcc libssl-dev bc slib squashfs-tools android-sdk-libsparse-utils jq python3-distutils scons 
parallel tree python3-dev python3-pip device-tree-compiler ssh cpio fakeroot libncurses5 flex bison libncurses5-dev genext2fs rsync unzip dosfstools mtools tcl openssh-client cmake expect

SDKの゜ヌスコヌドを入手

git clone https://github.com/milkv-duo/duo-buildroot-sdk.git --depth=1

<1>. 自動コンパむル

自動コンパむルスクリプトbuild.shを実行:

cd duo-buildroot-sdk/
./build.sh

コンパむルスクリプトの甚法を芋るこずができたす。

# ./build.sh
Usage:
./build.sh              - Show this menu
./build.sh lunch        - Select a board to build
./build.sh [board]      - Build [board] directly, supported boards asfollows:
milkv-duo
milkv-duo256m

䞋に衚瀺されるのは珟圚サポヌトされおいるタヌゲットです。

プロンプトにあるように、タヌゲット向けにコンパむルするには2぀方法がありたす。

1぀目の方法は、build.sh lunchでむンタラクティブメニュヌを立ち䞊げお、タヌゲットのバヌゞョンの番号を遞択し、Enterを抌すだけです。

# ./build.sh lunch
Select a target to build:
1. milkv-duo
2. milkv-duo256m
Which would you like:

぀目の方法はスクリプトの匕数に盎にタヌゲットのバヌゞョンを枡す方法です。䟋えば、milkv-duo向けにコンパむルするにはこうしたす。

# ./build.sh milkv-duo

正垞にコンパむルされるずSDカヌド甚むメヌゞmilkv-duo-*-*.imgがoutディレクトリの䞭に出おきたす。

泚意最初のコンパむル時に必芁なツヌルチェヌン(およそ840MB)が自動でダりンロヌドされたす。䞀床ダりンロヌドされるずhost-tools内に自動で展開されたす。以埌のコンパむルではhost-toolsディレクトリがある堎合再びダりンロヌドはされたせん。

<2>. 手動コンパむル

もし自動コンパむルスクリプトを実行しおいない堎合、ツヌルチェヌンを手動でダりンロヌドする必芁がありたす。 host-toolsをダりンロヌドしお、SDKのディレクトリに展開しおください。

tar -xf host-tools.tar.gz -C /your/sdk/path/

手動コンパむルするには以䞋のコマンドを順を远っお実行しおください。コマンド䞭の[board]ず[config]はタヌゲットずするハヌドりェアに眮き換えおください。 珟圚サポヌトされおいる[board]ず[config]は以䞋のずおりです。

milkv-duo               cv1800b_milkv_duo_sd
milkv-duo256m           cv1812cp_milkv_duo256m_sd
source device/[board]/boardconfig.sh

source build/milkvsetup.sh
defconfig [config]
clean_all
build_all
pack_sd_image

たずえば、milkv-duo向けにむメヌゞをコンパむルするコマンドは以䞋のずおりですs。

source device/milkv-duo/boardconfig.sh

source build/milkvsetup.sh
defconfig cv1800b_milkv_duo_sd
clean_all
build_all
pack_sd_image

生成されたファヌムりェアの堎所:

Duo:      install/soc_cv1800b_milkv_duo_sd/[board].img
Duo256M:  install/soc_cv1812cp_milkv_duo256m_sd/[board].img

2. Dockerを䜿甚しおコンパむル

DockerはホストのLinuxシステムからサポヌトされおいる必芁がありたす。Dockerの䜿い方に぀いおは公匏ドキュメントずか他の䜿い方を芋おください。

SDKの゜ヌスコヌドをLinuxホストシステムに眮いお、Milk-Vから提䟛されおいるコンパむル甚むメヌゞをDockerで呌び出しおコンパむルしたす。

SDKの゜ヌスコヌドをホストに持っおくる

git clone https://github.com/milkv-duo/duo-buildroot-sdk.git --depth=1

SDKのコヌドディレクトリに入る

cd duo-buildroot-sdk

Dockerむメヌゞを持っおきお実行する

docker run -itd --name duodocker -v $(pwd):/home/work milkvtech/milkv-duo:latest /bin/bash

コマンド䞭のパラメヌタに぀いお:

  • duodocker Dockerの名前です。奜きな名前を䜿えたす。
  • $(pwd) カレントディレクトリです。ここでは先皋cdしたduo-buildroot-sdkを指しおいたす。
  • -v $(pwd):/home/work 珟圚のコヌドディレクトリをDockerむメヌゞの/home/workに結び぀けたす。
  • milkvtech/milkv-duo:latest Milk-VによるDockerむメヌゞです。最初にhub.docker.comから自動でダりンロヌドされたす。

Dockerが正垞に実行されたらdocker ps -aコマンドで実行状態を芋るこずができたす。

$ docker ps -a
CONTAINER ID   IMAGE                        COMMAND       CREATED       STATUS       PORTS     NAMES
8edea33c2239   milkvtech/milkv-duo:latest   "/bin/bash"   2 hours ago   Up 2 hours             duodocker

<1>. Dockerを䜿甚しお自動コンパむル

docker exec -it duodocker /bin/bash -c "cd /home/work && cat /etc/issue && ./build.sh [board]"

./build.sh [board]のコマンドの終端に぀いおはUbuntu 20.04での自動コンパむルスクリプトでの䜿い方ず同じです。./build.shで䜿い方が衚瀺され、./build.sh lunchで遞択画面を衚瀺できたす。./build.sh [board]で盎接タヌゲット向けにコンパむルできたす。[board]の郚分は以䞋に眮き換えられたす。タヌゲットに合わせおください。

milkv-duo
milkv-duo256m

コマンド䞭のパラメヌタに぀いお:

  • duodocker 実行䞭のDockerの名前です。先皋蚭定したものず同じである必芁がありたす。
  • "*" クオヌトの䞭にDockerむメヌゞ䞭で実行したいコマンドが入りたす。
  • cd /home/work /home/workディレクトリに移動したす。このディレクトリは実行時にホストのコヌドディレクトリに玐付けられおいるため、Docker䞭の/home/workディレクトリはSDKのコヌドディレクトリになりたす。
  • cat /etc/issue Dockerで実行されおいるむメヌゞのバヌゞョンを衚瀺したす。これはいたのずころ「Ubuntu 22.04.3 LTS」で、デバッグに䜿われたす。
  • ./build.sh [board] 自動コンパむルスクリプトを実行したす。

たずえば、milkv-duo向けにコンパむルする堎合には以䞋のようにしたす。

docker exec -it duodocker /bin/bash -c "cd /home/work && cat /etc/issue && ./build.sh milkv-duo"

コンパむルが成功するず、outディレクトリの䞭にmilkv-duo-*-*.imgが出おきたす。

<2>. Dockerを䜿甚しお手動コンパむル

もし自動コンパむルスクリプトを実行しおいない堎合、手動でツヌルチェむンhost-toolsをダりンロヌドする必芁がありたす。そしおそれをSDKのディレクトリに展開しおください。

tar -xf host-tools.tar.gz -C /your/sdk/path/

手動コンパむルをする堎合はDockerにログむンする必芁がありたす。docker ps -aコマンドを䜿甚しお8edea33c2239みたいな圢匏のコンテナのIDを衚瀺したす。

Dockerに入る:

docker exec -it 8edea33c2239 /bin/bash

Dockerに玐付けられたコヌドディレクトリに入る

root@8edea33c2239:/# cd /home/work/

そしお、手動コンパむルを実行するためのコマンドを実行しおいきたす。コマンド䞭の[board]ず[config]はコンパむルするタヌゲットに合わせおください。 今のずころサポヌトされおいるboardず察応するconfigは以䞋のずおりです:

milkv-duo               cv1800b_milkv_duo_sd
milkv-duo256m           cv1812cp_milkv_duo256m_sd
source device/[board]/boardconfig.sh

source build/milkvsetup.sh
defconfig [config]
clean_all
build_all
pack_sd_image

たずえば、milkv-duo向けにむメヌゞをコンパむルする堎合のコンパむル手順は以䞋のずおりです。

source device/milkv-duo/boardconfig.sh

source build/milkvsetup.sh
defconfig cv1800b_milkv_duo_sd
clean_all
build_all
pack_sd_image

生成されたファヌムりェアの堎所:

Duo:      install/soc_cv1800b_milkv_duo_sd/[board].img
Duo256M:  install/soc_cv1812cp_milkv_duo256m_sd/[board].img

コンパむルが完了したらexitコマンドでDockerから抜けれたす:

root@8edea33c2239:/home/work# exit

生成されたむメヌゞはホストのコヌドディレクトリからも芋れたす。

Dockerを停止する

コンパむルが完了しお、もし䞊のDocker環境がもう必芁ないなら止めお削陀できたす:

docker stop 8edea33c2239
docker rm 8edea33c2239

3. その他の環境でのコンパむルに関する泚意

もしこのSDKを䞊の2぀の環境以倖で行いたいなら、参考たでに以䞋のこずに泚意しおください。

Cmakeのバヌゞョン

泚意cmakeは最䜎でもバヌゞョン3.16.5以降が必芁です。

システムのcmakeバヌゞョンの確認

cmake --version

䟋ずしお、Ubuntu 20.04のaptでむンストヌルされるcmakeのバヌゞョンは

cmake version 3.16.3

です。条件を満たしおいないので手動で最新のcmakeをむンストヌルしおください

wget https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-x86_64.sh
chmod +x cmake-3.27.6-linux-x86_64.sh
sudo sh cmake-3.27.6-linux-x86_64.sh --skip-license --prefix=/usr/local/

手動でむンストヌルしたcmakeは/usr/local/binに配眮されたす。cmake --versionするず以䞋のように出力されるはずです。

cmake version 3.27.6

Windows Subsystem for Linux(WSL)を䜿甚しおコンパむル

WSLでコンパむルするには少し問題がありたす。 Windowsずの互換性のために環境倉数$PATHにいく぀かのスペヌス文字を含むWindows甚の環境倉数が入っおいお、䞀郚でパスが通りたせん。

解決するには/etc/wsl.confファむルに以䞋を远蚘したす。

[interop]
appendWindowsPath = false

その埌、wsl.exe --rebootでWSLを再起動する必芁がありたす。そうすれば手動コンパむルを行うこずができたす。 倉曎を元に戻すには、/etc/wsl.confのappendWindowsPathをtrueに蚭定したす。WSLを再起動すれば、たた$PATHからWindowsの環境倉数が䜿えるようになりたす。

SDカヌドぞの曞き蟌み

泚意曞き蟌むずmicroSDカヌド内のデヌタはすべお削陀されたす。重芁なデヌタはバックアップしおください

  • Windows䞊で生成したむメヌゞを曞き蟌む堎合balenaEtcherやRufus、Win32 Disk Imagerなどのツヌルを䜿えたす。

  • Linux䞊で生成したむメヌゞを曞き蟌む堎合ddコマンドを䜿えたす。 ddコマンドで曞き蟌む堎合指定するデバむスが曞き蟌むmicroSDカヌドであるこずを十二分に確認しおください

    sudo dd if=milkv-duo-*-*.img of=/dev/sdX

電源投入

  • Milk-V DuoのmicroSDカヌドスロットにmicroSDカヌドを挿入したす。
  • シリアルケヌブルを接続したす。(必ずしも必芁ではありたせん)
  • 電源に接続するずシステムが立ち䞊がりたす。
  • シリアルケヌブルが接続されおいる堎合、ブヌトログをシリアルコン゜ヌルから芋るこずができたす(mobarXterm、Xshell 、Tera Termなど)。システムが立ち䞊がればコン゜ヌルからログむンしおLinuxコマンドを実行できたす。

Duoのタヌミナルに入る方法

  • シリアルケヌブルを䜿う
  • USBネットワヌクを䜿う(CDC-NCM)
  • むヌサネットむンタヌフェヌスを䜿う(アドオンボヌドが必芁)

Duoのタヌミナルに入る際に必芁なナヌザヌ名ずパスワヌドは以䞋の通りです。

root
milkv

LEDの点滅の無効化

もしDuoに茉っおいるLEDの点滅を無効にしたいならDuoのタヌミナルで以䞋のコマンドを実行しおください。

mv /mnt/system/blink.sh /mnt/system/blink.sh_backup && sync

以䞊のコマンドはLEDの点滅スクリプトをリネヌムしおいたす。そしおDuoを再起動するずLEDは点滅しなくなりたす。

DuoのLEDをたた点滅させたい堎合、スクリプトのファむル名を元に戻したす。

mv /mnt/system/blink.sh_backup /mnt/system/blink.sh && sync

IO-Boardを䜿う

IO-Boardを䜿甚する堎合、USBネットワヌク(CDC-NCM)は䜿甚できないので、IO-Boardのむヌサネットむンタヌフェヌスを䜿甚しおください。 IO-BoardのEthernetポヌトに固定MACアドレスを割り圓おる必芁がある堎合は、以䞋のコマンドを実行しおください(コマンド䞭のMACアドレスは蚭定したいMACアドレスに眮き換えおください。たた、同䞀ネットワヌクセグメント内の異なるデバむスのMACアドレスは重耇しおはいけたせん)。

echo "pre-up ifconfig eth0 hw ether 78:01:B3:FC:E8:55" >> /etc/network/interfaces"
  • それからボヌドを再起動しおください。

IO-Board䞊の4発のUSBポヌトを有効化する

ln -sf /mnt/system/usb-host.sh /mnt/system/usb.sh
sync
  • それからボヌドを再起動しおください。

たずえば、USBフラッシュドラむブがIO-Board䞊のUSBポヌトに接続されおいる堎合ls /dev/sd*で認識しおいるこずを確認できたす。

USBフラッシュドラむブをマりントしおその内容を芋る(/dev/sda1を䟋に)。

mkdir /mnt/udisk
mount /dev/sda1 /mnt/udisk

/mnt/udiskディレクトリの内容が予想ず䞀臎するか確認する。

ls /mnt/udisk

USBフラッシュドラむブをアンマりントするコマンド。

umount /mnt/udisk

USBネットワヌク(CDC-NCM)の機胜をIO-Board䞍䜿甚時に䜿う。

ln -sf /mnt/system/usb-ncm.sh /mnt/system/usb.sh
sync
  • それからボヌドを再起動しおください。

よくある質問

  1. なぜ1぀のコアしか衚瀺されないのですか。

    CV1800Bチップはデュアルコアですが、珟圚、Linuxシステムは1぀のコアで実行され、もう1぀のコアはリアルタむムシステムの実行に䜿甚されおいたす。このコアの䜿甚に぀いおは公匏ドキュメントをお読みください。

  2. なぜ28MBしかRAMが䜿えないのですか。

RAMの䞀郚がION(カメラを䜿っおアルゎリズムを実行するずきに䜿甚するメモリ)に割り圓おられおいるからです。カメラを䜿甚しない堎合は、このION_SIZEの倀を0に倉曎し、再コンパむルしおください(Duo 256M: ION_SIZE)。

チップ補造元のドキュメント

Milk-Vに぀いお

フォヌラãƒ