見出し画像

SOLID for Raspberry Pi 4 (連載1)

Raspberry Pi 4Bで、Linuxと共存してリアルタイムOSが動きます。
しかも、C/C++だけでなく、Rust言語でもアプリを書けます。
さらに、デバッグも簡単。ICE等のデバッグ用ハードウェア不要。

「SOLID for Raspberry Pi 4」を使って、その世界を体験してみましょう!
Raspberry Pi 4Bさえあれば、誰でもできるんです。

1.SOLID とは

まずは、SOLIDのご紹介から。

SOLIDとは、ARM Cortex-A用リアルタイムOSを中心とした開発環境が一体化されているものです。
リアルタイムOS、コンパイラ、デバッガが一体となっているので、それぞれのセットアップをする必要がありません。

SOLIDの紹介資料はこちらにあります。

使い方、仕様の説明等、マニュアルはこちらにまとまっています。

一般的なSOLIDの価格については、こちらにあります。(当然ながら、製品です。)

2.SOLID for Raspberry Pi 4で、できること

SOLID for Raspberry Pi 4は、SOLIDをRaspberry Pi 4Bで気軽に試せるように開発されたものです。
それに、ICE等のデバッグ用ハードウェアが不要なので、そちらの購入も不要です。

冒頭で触れたように、Raspberry Pi 4でリアルタイムOSを使ってC言語とRust言語でアプリが書けます。
そしてLinuxとも共存できます。
Linux上のファイルの読み書きOK、LinuxがもつTCP/IPを使うこともOK、その他ももろもろ。。。

公式ページはこちら

ページ上部にGitHubへのリンクがあり、ソフトウェア本体のダウンロード、またドキュメントも見ることができます。
構造等についても詳細に触れられていますので、興味のある方は要チェックです。

という事で、今回から、組込み用リアルタイムOS開発環境 SOLIDのアプリケーションをRust言語で書く!をチャレンジしていく過程で、SOLIDの特徴等にも触れながら、ちょくちょくC/C++言語と比較などできればと思っています。

筆者のプロフィール:

  • C/C++使用ウン十年。Rust言語を使うのは今回初挑戦!

  • 組み込み開発畑にずっといて、今もいる。

要するに、この文章を読んでくださっているRust強者のお兄さまお姉さま方におかれましては、今更ナンナノ?というご感想になるのではと危惧しておりますが、そこは温かい目でご容赦ください。

では、いってみましょう!

3.SOLID for Raspberry Pi 4のセットアップ:Raspberry Pi 4B側

Raspberry Pi 4Bは、Cortex-A72コアが4つのBCM2711 SoCが搭載されています。通常のRaspbian OSを搭載したRaspberry Pi 4Bで、cpuinfoを見てみると以下です。

$ cat /proc/cpuinfo

/proc/cpuinfo


4つです。

SOLID 環境では、その4個のCortex-A72コアのうち、2個をSOLID-OS/FMP3システム、残りの2個をLinuxに割り当てています。

構造どうなってるの?は、ここでは説明しません(筆者にはできません)
詳細はこちら

とにかく、SOLID for Raspberry Pi 4用のRaspberry Pi 4Bイメージファイルがあるので、そちらをSDカードに書き込み、Raspberry Pi 4Bのセットアップをします。
まずSDカードに専用イメージファイルを書き込みます。手順はこちら。このとおりやればOKです。
☆筆者はWifi環境です。有線LANは使いません。
☆SDカード容量は16GBでOKだそうですが、筆者は手持ちの32GBで行いました。

次は、Raspberry Pi 4B側の準備をします。
UART(※)を使用し、ログ出力により状態を確認します。
モニタ、キーボード、マウスは接続しません。

※通常のRaspberry PiBセットアップと同じく、UARTは別に必須ではありません。Raspberry PiBターミナル操作をするためには、SSHで接続すればOKです。ただ、以下2点のため、ここではUARTを接続しています。

  • 筆者はRaspberry Pi 4Bに固定IPの設定をしていないので、IPアドレスの確認用です。

  • 後述のHello Worldアプリケーションの出力がUARTです。

UART/COM変換ケーブル(IO電圧3.3Vのもの)を、Raspberry Pi 4BのTX,
RX,GND端子と接続します。

こんな感じになります。

UART/COM変換ケーブルについて

筆者が使用しているUART/COM変換ケーブルは、DSD TECH社ものです。
FTDI FT232RLチップ が搭載されています。
I/F電圧が3.3Vであればだいたい動くはずですが、、、
価格が安すぎるものを購入した時に、それが動かなかった経験はあります。

PC側のシリアルターミナルの設定は以下です。

さて、先ほどイメージを書き込んだSDカードを装着し、電源を入れてみましょう。途中何度か、Restarting System… と出力されますが、初回起動ではそのようになるとの事。

PCのシリアルターミナルにこのように表示されました。
起動OKです。

おっとここで、やっぱり見てみたいよ、cpuinfo!

$ cat /proc/cpuinfo

おぉー。2つだ。。。
残りの2つでSOLID OSが動いているという事ですね。

SSH経由でもターミナル接続できることを確認しておきます。
UARTのターミナルから、

$ ifconfig

を発行すると、IPアドレスが表示されるので、そのアドレスに対してSSH接続してみます。

接続できました。

2022/11/22追記:
 SSH接続先指定にはIPアドレスでなく、ホスト名(例えばraspberrypi)
 を使用するようにしてください。SDカード作成時、ホスト名は指定
 しているはず、なので、そちらの名称を使用してください。
 DHCPでIPアドレスが変更になったとしても、WindowsPC側アプリは
 ホスト名を見つけることが可能です。

Raspberry Pi 4B側の設定はひとまず終了です。
ターミナルから

$sudo poweroff

を発行し、しばらくののち電源をOFFしておきます。

4.SOLID for Raspberry Pi 4のセットアップ:Windows PC側

こちらのWEBサイトの内容を実行していくのみです。

そして、ライセンスの有効化を行います。
ライセンスツールは、SOLID IDEの「ヘルプ」メニューから
「ライセンスツール」⇒「ラズベリーパイライセンスツールを起動」
と選択することで、起動できます。

筆者の環境では、IPアドレス情報を使ってRaspberry Pi 4Bと通信しているので、ライセンスツールにおいて、ホスト名のところにはIPアドレスを入力します。

2022/11/22追記:
 SSH接続先指定にはIPアドレスでなく、ホスト名の使用を推奨します。
 したがって、ライセンスツールにはホスト名を入力してください。
 以下の例の場合、IPアドレスが変わってしまうと、またやり直しに
 なります。

5.新規プロジェクトを作成しC++言語でHello Worldしてみる

こちらのWEBサイトの内容を見ながら操作していくだけでできました。

PCにUART経由で、以下のように表示されました。

次回は、C/C++言語でLチカをやってみようと思います。


この記事が気に入ったらサポートをしてみませんか?