Boundary Devices社のi.MX6 Sabre Liteボードを動かしてみました。

  • ボードの情報
Mouserで販売されているBD-SL-i.MX。i.MX6のQuadが搭載されてます。

1
  • 開発ツール
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と一緒か…)
IMG_20190430_234106

先ほど書き込んだSDカードをSDコネクタ(左下)に挿し、ACアダプタ(右上)を挿すと電源が入ります。が、そのままだと何が起きてるのかサッパリ分からないので、独自シリアル拡張ケーブル(左上)を挿します。
IMG_20190430_234042

独自シリアル拡張ケーブルは2本のコネクタが出てますが、CONSOLEというシールが貼ってあるコネクタに、USBシリアル変換アダプタを挿し、PCに繋ぎます。
IMG_20190430_233114

我が家のUSBシリアル変換アダプタは、コレガのCG-USBRS232Rというアダプタでした。ドライバが必要なのでメーカーページから落としてきます。PCに正しく認識されるとこんな感じ。
b

TeraTermでCOM12(今回はたまたま12なので環境によって数字は変わる)につなぐと無事起動ログが表示され、例によってroot/パスワードなしでログインできました。
a
  • ひとりごと
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
続く
スポンサードリンク