【※ 当記事は2020年7月2日時点の情報です】
ペイヴメント(@pavement1234)です。
Sabre Liteボード(i.MX6)の動かし方を知りたい。
ボードの情報
Mouserで販売されている
BD-SL-i.MX i.MX6のQuadが搭載されてます。
開発ツール
Boundary Devices社の
What is Yocto and how can I start?にガイドが載ってます。
例によってYoctoです。
①ビルドに必要なパッケージ収集
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm
$ sudo apt-get install sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc
②repo (git管理ツール)のインストール
$ mkdir ~/bin
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=~/bin:$PATH
③repo(git)でフリースケールの
BSP(fidoブランチ)を取得
$ mkdir ~/fido
$ cd ~/fido
$ repo init -u https://github.com/Freescale/fsl-community-bsp-platform -b fido
repo sync
【評価ボードとMACHNE名の対比】
今回使ってるボードはsable-liteなので
マシン名はnitrogen6xになります。
For the sabre-lite, nitrogen6x, nitrogen6x_max boards and all their variants, the MACHINE name is nitrogen6x.
For the nitrogen6x-lite, the MACHINE name is nitrogen6x-lite.
For the Nitrogen6_SoloX, the MACHINE name is nitrogen6sx.
For the purposes of the example, I’ll build for the nitrogen6x,
replace that according to whatever you’re using.
④環境変数を読み込み
(マシン名とイメージ名?(=core-image-sato)を指定)
$ cd ~/fido
$ MACHINE=nitrogen6x . setup-environment core-image-sato
(accept the license agreement)
⑤フルビルド
$ bitbake core-image-sato
⑥カーネルコンフィグ
$ MACHINE=nitrogen6x bitbake -f -c menuconfig virtual/kernel
⑦カーネルビルド、デプロイ
$ MACHINE=nitrogen6x bitbake -f -c compile virtual/kernel
$ MACHINE=nitrogen6x bitbake -f -c deploy virtual/kernel
⑧ubootビルド
$ bitbake -f -c compile u-boot-imx
$ bitbake -f -c deploy u-boot-imx
⑨SDKビルド
$ bitbake core-image-sato -c populate_sdk
正常終了すると、
tmp/deploy/sdk配下に.shファイルが生成されるので、
shファイルを実行します。
$ cd ~/fido/core-image-sato/tmp/deploy/sdk
$ ./poky-glibc-x86_64-core-image-sato-cortexa9hf-vfp-neon-toolchain-1.8.2.sh
Enter target directory for SDK (default: /opt/poky/1.8.2): Enterを入力
The directory “/opt/poky/1.8.2” already contains a SDK for this architecture.
If you continue, existing files will be overwritten! Proceed[y/N]? yを入力
Extracting SDK…done
Setting it up…done
SDK has been successfully set up and is ready to be used.
クロスコンパイル実行時は
以下のスクリプトを実行して
環境変数を設定します。
$ . /opt/poky/1.8.2/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
環境変数ファイルの中身はこんな感じ。
export PKG_CONFIG_SYSROOT_DIR=$SDKTARGETSYSROOT
export PKG_CONFIG_PATH=$SDKTARGETSYSROOT/usr/lib/pkgconfig
export CONFIG_SITE=/opt/poky/1.8.2/site-config-cortexa9hf-vfp-neon-poky-linux-gnueabi
export OECORE_NATIVE_SYSROOT=”/opt/poky/1.8.2/sysroots/x86_64-pokysdk-linux”
export OECORE_TARGET_SYSROOT=”$SDKTARGETSYSROOT”
export OECORE_ACLOCAL_OPTS=”-I /opt/poky/1.8.2/sysroots/x86_64-pokysdk-linux/usr/share/aclocal”
export PYTHONHOME=/opt/poky/1.8.2/sysroots/x86_64-pokysdk-linux/usr
export AS=”arm-poky-linux-gnueabi-as ”
export LD=”arm-poky-linux-gnueabi-ld –sysroot=$SDKTARGETSYSROOT”
export GDB=arm-poky-linux-gnueabi-gdb
export STRIP=arm-poky-linux-gnueabi-strip
export RANLIB=arm-poky-linux-gnueabi-ranlib
export OBJCOPY=arm-poky-linux-gnueabi-objcopy
export OBJDUMP=arm-poky-linux-gnueabi-objdump
export AR=arm-poky-linux-gnueabi-ar
export NM=arm-poky-linux-gnueabi-nm
export M4=m4
export TARGET_PREFIX=arm-poky-linux-gnueabi-
export CONFIGURE_FLAGS=”–target=arm-poky-linux-gnueabi –host=arm-poky-linux-gnueabi –build=x86_64-linux –with-libtool-sysroot=$SDKTARGETSYSROOT”
export CFLAGS=” -O2 -pipe -g -feliminate-unused-debug-types”
export CXXFLAGS=” -O2 -pipe -g -feliminate-unused-debug-types”
export LDFLAGS=”-Wl,-O1 -Wl,–hash-style=gnu -Wl,–as-needed”
export CPPFLAGS=””
export KCFLAGS=”–sysroot=$SDKTARGETSYSROOT”
export OECORE_DISTRO_VERSION=”1.8.2″
export OECORE_SDK_VERSION=”1.8.2″
export ARCH=arm
export CROSS_COMPILE=arm-poky-linux-gnueabi-
# Append environment subscripts
if [ -d “$OECORE_TARGET_SYSROOT/environment-setup.d” ]; then
for envfile in $OECORE_TARGET_SYSROOT/environment-setup.d/*.sh; do
source $envfile
done
fi
if [ -d “$OECORE_NATIVE_SYSROOT/environment-setup.d” ]; then
for envfile in $OECORE_NATIVE_SYSROOT/environment-setup.d/*.sh; do
source $envfile
done
fi
⑩SDカード書き込み
(SDカードが/dev/sdcに挿さってるという前提)
$ cd ~/fido/core-image-sato/tmp/deploy/images/nitrogen6x/
$ sudo umount /dev/sdc
$ sudo dd if=core-image-sato-nitrogen6x.sdcard of=/dev/sdc bs=1M
ボードを動かしてみる
ACアダプタは5V/4Aです
(Jetson Nanoと一緒か…)。
先ほど書き込んだSDカードをSDコネクタ(左下)に挿し、
ACアダプタ(右上)を挿すと電源が入ります。
が、そのままだと何が起きてるのかサッパリ分からないので、
独自シリアル拡張ケーブル(左上)を挿します。
独自シリアル拡張ケーブルは2本のコネクタが出てますが、
CONSOLEというシールが貼ってあるコネクタに、
USBシリアル変換アダプタを挿し、
PCに繋ぎます。
我が家のUSBシリアル変換アダプタは、
コレガのCG-USBRS232Rというアダプタでした。
ドライバが必要なのでメーカーページから落としてきます。
PCに正しく認識されるとこんな感じ。
TeraTermで
COM12(今回はたまたま12なので環境によって数字は変わる)につなぐと
無事起動ログが表示され、
例によってroot/パスワードなしでログインできました。
ひとりごと
i.MX6はNXPの標準SABREボードがよく使われていますが、
BoundaryDeviceのSABRE-LITEボードも結構見かけます。
USB-OTGが搭載されているので、
このボードをUSBデバイスとして認識させる実験なども面白そうです。
あとはHDMI、USBホスト×2がついてるのでPC的な使い方もできそう。
他にはSATA、SATA-PWR、CAN、JTAG、GPIO/I2C、GPIO/I2C3、PCIe、LVDS0、CAMERA、SD4/BOOT、HEAD(PHONE)、MIC、BOOT(00:*FUSES、01:USB OTG、10:INTERNAL)、
という表記が確認できました。
メーカーのBD-SL-i.MX6を見ると
スペックとかドキュメントとかが、まとまってます。
但しドキュメントをダウンロードするにはアカウント登録が必要っぽい。
【CPU】
CPU Name NXP i.MX 6
CPU Type ARM Cortex-A9
CPU Cores 4
CPU Clock (Max) 1GHz
【Memory】
RAM 1GB DDR3L
NOR Flash 2MB (SPI)
eMMC N/A
【Multimedia】
2D/3D Graphics Acceleration Vivante GC2000
Video Encode / Decode 1080p30 H.264 / 1080p60 H.264
Camera Interfaces 2x Parallel, 1x MIPI
【Display Connections】
HDMI v1.4 1920 x 1080
LVDS 1 x 24-bit
RGB 1 x 24-bit
MIPI DSI N/A
【Networking Connections】
Ethernet 10/100/1G
WiFi + Bluetooth N/A
【Audio Interfaces】
Headphone Yes
Microphone Analog Mic
Amplifier N/A
【Connectivity Ports】
I2Cx3
SPIx1 (via J15)
UARTx2 (RS-232). More Available via J15
SD / MMCx1 microSD
USB USB 2.0: 3x Host, 1x OTG
SATA SATA II interface, 3.0 Gbps
RTC No
PCIe Gen 2.0 via J23 Daughter Board
JTAG Yes
CAN x1
【PCB Specifications】
Dimensions (L x W) 82mm x 82mm
【Miscellaneus Specifications】
Temperature Rating Commercial Temp 0° to 70°C
Power Supply 5V
まとめ
Boundary Devices社のSabre Liteボード(i.MX6)を動かしてみたみました。
この手のボードが家に沢山あるので、
1つずつ紹介していきます。
関連記事(組み込みボード)
【ラズパイ4 】最低限必要なモノとRaspbianインストール手順
【組込Linuxボード】アルテラのDE0-Nano-SoCボードを動かしてみた
【組込Linuxボード】Raspberry Pi 3 Model B Plus Rev1.3を動かしてみた(カメラも動かした)
【組込Linuxボード】Boundary Devices社のSabre Liteボード(i.MX6)を動かしてみた