組込/ハードウェア

【組込Linuxボード】Boundary Devices社のSabre Liteボード(i.MX6)を動かしてみた

【※ 当記事は2020年7月2日時点の情報です】

ペイヴメント(@pavement1234)です。

エンジニア
エンジニア
Boundary Devices社の
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つずつ紹介していきます。

ABOUT ME
ペイヴメント
ペイヴメントのエンジニア塾(当ブログ)では20年以上の経験から得られたプログラミング系ノウハウについてベテランにも満足して頂けるような内容の濃いコンテンツを初心者にも分かりやすい形で日々発信しています。【経歴】ベンチャーのソフトハウスで4年勤務後、精密機器メーカーのソフト開発部門に勤務し今に至ります。
error: Content is protected !!