![見出し画像](https://assets.st-note.com/production/uploads/images/91432844/rectangle_large_type_2_35d3174173bf7793e87155174ce7e61e.png?width=1200)
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
![](https://assets.st-note.com/img/1668506107515-jvDPn5X9Hj.png)
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です。
![](https://assets.st-note.com/img/1668506174341-dkYHTgUKCd.png)
UART/COM変換ケーブル(IO電圧3.3Vのもの)を、Raspberry Pi 4BのTX,
RX,GND端子と接続します。
![](https://assets.st-note.com/img/1668506797628-duPItqMQGp.png)
こんな感じになります。
![](https://assets.st-note.com/img/1668506250262-xYjqkp8NkY.png)
UART/COM変換ケーブルについて
筆者が使用しているUART/COM変換ケーブルは、DSD TECH社ものです。
FTDI FT232RLチップ が搭載されています。
I/F電圧が3.3Vであればだいたい動くはずですが、、、
価格が安すぎるものを購入した時に、それが動かなかった経験はあります。
PC側のシリアルターミナルの設定は以下です。
![](https://assets.st-note.com/img/1668506964409-7gkrBMQEYb.png)
さて、先ほどイメージを書き込んだSDカードを装着し、電源を入れてみましょう。途中何度か、Restarting System… と出力されますが、初回起動ではそのようになるとの事。
![](https://assets.st-note.com/img/1668507017254-4QBcgpJhPA.png)
PCのシリアルターミナルにこのように表示されました。
起動OKです。
おっとここで、やっぱり見てみたいよ、cpuinfo!
$ cat /proc/cpuinfo
![](https://assets.st-note.com/img/1668507058760-n8tT5wFBrp.png)
おぉー。2つだ。。。
残りの2つでSOLID OSが動いているという事ですね。
SSH経由でもターミナル接続できることを確認しておきます。
UARTのターミナルから、
$ ifconfig
を発行すると、IPアドレスが表示されるので、そのアドレスに対してSSH接続してみます。
![](https://assets.st-note.com/img/1668507119349-It83sDQqif.png)
接続できました。
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アドレスが変わってしまうと、またやり直しに
なります。
![](https://assets.st-note.com/img/1668507161916-A6rmvFnswL.png)
5.新規プロジェクトを作成しC++言語でHello Worldしてみる
こちらのWEBサイトの内容を見ながら操作していくだけでできました。
PCにUART経由で、以下のように表示されました。
![](https://assets.st-note.com/img/1668507207049-6wSSTxucbG.png)
次回は、C/C++言語でLチカをやってみようと思います。
この記事が気に入ったらサポートをしてみませんか?