LuckFox Pico ProでUbuntuを使ってみる

Ubuntuのインストール

AliExpressで気になるLinuxボードを見つけました。
LuckFox Picoと言う製品で、SoCにRockchip RV1103/1106を採用したLinuxです。
RV1103/1106はいずれもMCUにCortex-A7を採用したSoCです。
Cortex-A7は2011年に発表されたARMv7-Aアーキテクチャを実装したMCUで、
Raspberry Pi2のBCM2836やOrangePi PCのAllwinner H3に実装されているMCUです。
BCM2836やAllwinner H3は、このMCUを4個内蔵していますが、RV1103/1106は1個だけ内蔵しています。
右がLuckFox Pico Mini、左がLuckFox Picoで、どちらもRV1103が搭載されています。


右上がLuckFox Pico Pro(RV1106)で左上がLuckFox Pico Plus(RV1103)です。



RV1103シリーズのスペックはこ ちらに、RV1106シリーズのスペックはこちらに公開されてい ます。
今回入手したのはRV1106G3のLuckFox Pico Maxで、256MBのMemoryと256MBのSPI NAND FLASHが搭載されています。


裏面にSPI NAND FLASHが実装されています。


OSイメージへのリンク(Google Cloud Link)がこ ちらに公開されていて、UbuntuとBuildrootのイメージを使用することができます。
今回は「Ubuntu_Luckfox_Pico_Max_MicroSD_250313.zip」を使い、SDカードから起動してみました。
SDカードへの書き込みツール(SocToolKit.exe)と、書き込み手順がこ ちらに公開されています。
注意点としてSDカードを刺した状態で書き込みツール(SocToolKit.exe)を起動すると、SDカードを認識しません。
書き込みツール(SocToolKit.exe)起動後に、SDカードを刺すと、SDカードを認識します。
「Ubuntu_Luckfox_Pico_Max_MicroSD_250313.zip」を適当なフォルダーで解凍して、全てのファイルを ツールに読 み込みます。
提供されているイメージにはupdate.imgが含まれていますが、このファイルは書き込み対象から除外する必要が有ります。


update.imgを除くファイルをSDカードに書き込みます。


Create SDボタンを押すと書き込みが始まります。


SDカードの書き込みは結構時間が掛かります。
書き込みを始めると右側に進捗状況が表示されますが、rootfsの書き込みですごぉ〜く待たされます。
私の環境では書き込みが始まるまでに45分ぐらい掛かりました。


辛抱強く待つとrootfsの書き込みが始まります。


書き込みが終了するとこの画面になります。


SDカードが準備できたら、USB-TTL変換アダプターを本体のデバッグポートに接続します。
GPIOのピン配置はこちらに 公開されていますが、デバッグポートはTXがピン番号1(GPIO42)、RXがピン番号2(GPIO43)です。
USB-TTLアダプターをWindowsマシンに接続し、TeraTermを起動してから、ボードのUSB経由で電源を供給します。
ずらずらとブートメッセージが表示されて、ログインプロンプトが表示されます。
イメージは圧縮されているので、初回だけはイメージの伸張を行います。
root/rootとpico/luckfoxのユーザが事前に登録されています。


提供されているUbuntuのバージョンはUbuntu 22.04.3です。


IPアドレスもDHCP経由で正しく取得できています。


ifconfig(net-tools)も最初からインストールされていました。


パッケージの更新も問題なくできます。


パッケージを更新したらUbuntuが22.04.3→22.04.5になりました。


提供されているubuntuはRNDIS機能が最初から有効になっていて、USBポートに対して「172.32.0.70」のIPアドレスが割り 当てられています。
Windows-PCやLinux-PCを母艦として、USBポートを使ったネットワークが使えるようになります が、
このモデルはEthernetを持っているので、このデバイスの使い道は有りません。


パーティションは以下の様に切られています。
今回16GBのマイクロSDカードを使いました。
全体で6G程度しか使われていないので、パーテイションの伸張は行わない様です。


SWAP領域は1Gだけアサインされています。


インストールされているコンパイラのバージョンは11.4.0です。
$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ g++ --version
g++ (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

簡単なCソースをコンパイルしてみました。
問題なくビルドできます。
$ cat a.c
#include <stdio.h>
int main() {
        printf("hoge\n");
        return 0;
}

$ gcc a.c

$ ./a.out
hoge

簡単なC++ソースをコンパイルしてみました。
こちらも問題なくビルドできます。
$ cat a.cpp
#include <iostream>

using namespace std;

int main() {
        cout << "Hello, World!" << endl;
        return 0;
}

$ g++ a.cpp

$ ./a.out
Hello, World!

以下のコマンドでインストールできるgccを調べることができます。
gcc-12もインストールできる様です。
$ sudo apt search '^gcc-[0-9]+$'
Sorting... Done
Full Text Search... Done
gcc-10/jammy-updates,jammy-security 10.5.0-1ubuntu1~22.04.3 armhf
  GNU C compiler

gcc-11/jammy-updates,jammy-security,now 11.4.0-1ubuntu1~22.04.3 armhf [installed,automatic]
  GNU C compiler

gcc-12/jammy-updates,jammy-security 12.3.0-1ubuntu1~22.04.3 armhf
  GNU C compiler

gcc-9/jammy-updates,jammy-security 9.5.0-1ubuntu1~22.04.1 armhf
  GNU C compiler

以下の手順でgcc-12をインストールし、update-alternativesでバージョンを切り替えてみま した。
$ sudo apt install g++-12 -y

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12

$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 11

$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 12

$ gcc --version
gcc (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ g++ --version
g++ (Ubuntu 12.3.0-1ubuntu1~22.04.3) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

続く....