SOLID未分類 SOLID for Raspberry Pi 4 (連載1)
(2022/10/19)
Raspberry Pi 4Bで、Linuxと共存してリアルタイムOSが動きます。
しかも、C/C++だけでなく、Rust言語でもアプリを書けます。
さらに、デバッグも簡単。ICE等のデバッグ用ハードウェア不要。
「SOLID for Raspberry Pi 4」を使って、その世界を体験してみましょう!
Raspberry Pi 4Bさえあれば、誰でもできるんです。
まずは、SOLIDのご紹介から。
SOLIDとは、ARM Cortex-A用リアルタイムOSを中心とした開発環境が一体化されているものです。
リアルタイムOS、コンパイラ、デバッガが一体となっているので、それぞれのセットアップをする必要がありません。
SOLIDの紹介資料はこちらにあります。
使い方、仕様の説明等、マニュアルはこちらにまとまっています。
一般的なSOLIDの価格について、こちらにあります。(当然ながら、製品です。)
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強者のお兄さまお姉さま方におかれましては、今更ナンナノ?というご感想になるのではと危惧しておりますが、そこは温かい目でご容赦ください。
では、いってみましょう!
Raspberry Pi 4Bは、Cortex-A72コアが4つのBCM2711 SoCが搭載されています。
通常のRaspbian OSを搭載したRaspberry Pi 4Bで、cpuinfoを見てみると以下です。
cat /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端子と接続します。
Raspberrry Piピン番号 | Raspberrry Pi端子機能 | UART/COM変換ケーブル側 |
---|---|---|
6 | GND | GND |
8 | UART TX | RX (Rapsberry Pi -> PC) |
10 | UART RX | TX (PC-> Rapsberry Pi) |
こんな感じになります。
☆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しておきます。
こちらのWEBサイトの内容を実行していくのみです。
そして、ライセンスの有効化を行います。
ライセンスツールは、SOLID IDEの「ヘルプ」メニューから
「ライセンスツール」⇒「ラズベリーパイライセンスツールを起動」
と選択することで、起動できます。
筆者の環境では、IPアドレス情報を使ってRaspberry Pi 4Bと通信しているので、ライセンスツールにおいて、ホスト名のところにはIPアドレスを入力します。
2022/11/22追記:
SSH接続先指定にはIPアドレスでなく、ホスト名を使用することが推奨です。
したがって、ライセンスツールにはホスト名が入力されるべきです。
以下の例の場合、IPアドレスが変わってしまうと、またやり直しになります。