MBED OS5を使ってSDカードのR/Wしてみたよ


はじめに

これは「MBED OS5ってやつを見直したよ」っていう、最近身の回りであったハートウォーミング(?)なお話です。(MBEDさんにとっては理不尽極まりないけど・・・)

まず正直に言いますが、私が最初にMBED OSって聞いて、「スレッドとかメッセージパッシングとか書くやつか。めんどくさいなぁ・・・。」って思いました。

昨今の組み込みOSは、リッチなデバイスを中心にLinuxが跋扈してuITRONベースの宗派いろいろとかAmazonのFreeRTOSとかもうてんやわんやな状態です。 (あくまでも私個人の見解ですが)

そういうごちゃごちゃした状況で、
 「もし苦手な英語のドキュメントを読んで使ってみたものの、別のデファクトスタンダードが現れたらどうすんだ」
 「自分の身は自分で守るしかない」
という身勝手でチキンで一部意味不明な殻に閉じこもっていたわけです。

しかし、実際使ってみて、「なかなか。フムフム。これはこれで。というか、OSって付いてるけど全然難しくないやーん」と感じましたので、本記事を書くに至りました。

実際にやったこと

ハードウェアの準備

そろそろ文章を書き疲れました(早い)。
図を中心にして説明します。巻いていきましょう(メリハリが大事!)。
今回用意したブツはこれです。

使ったマイコンボードはFRDM-K22Fです。SDカードにはSPIモードの結線で繋いでいます。

ソフトウェアの準備

mbedのCLI環境を整えて、SDカード用のプロジェクトをimportすれば終わりです。

CLI環境の構築

この辺りの方々の記事を参考にさせていただきました。
 ①https://os.mbed.com/users/ytsuboi/notebook/ja-setup-mbed-cli-on-windows/
 ②https://qiita.com/matsujirushi/items/bf4db4514a753f794643

 ※importのやり方とかもここを見ればバッチリかと思います。

SDカードのプロジェクトのインポート

 ↓のプロジェクトをインポートします。
 https://github.com/ARMmbed/mbed-os-example-fat-filesystem

 ※インポート時間が長いです。(私のところでは30分以上待った気がします)
 ※「Issue」にもありますが、現状のリポジトリをimportするとSDカードのフォーマットが失敗(-9のリターン)しますので、「mbed-os」を5.7.6にしてください。(私はmbed-os-example-blinkyのプロジェクトを元々インポートしていましたので、そこからmbed osのフォルダだけコピペしました)
 ※ここのプロジェクトはそのままだとファイルシステムはRAM上に作る仕様なので、上記ページ記載の↓の変更を行います

[抜粋:ファイルシステム構築ターゲットをRAMからSDカードへ変更する方法]

[参考:実際に変更したコード]

動かしてみる

ここまでの手順で動作させると以下のようなメッセージが出て成功したことがわかります。

Welcome to the filesystem example.
Formatting a FAT, RAM-backed filesystem. done.
Mounting the filesystem on "/fs". done.
Opening a new file, numbers.txt. done.
Writing decimal numbers to a file (20/20) done.
Closing file. done.
Re-opening file read-only. done.
Dumping file to screen.
0
1
2
3
 :(省略)
17
18
19
EOF.
Closing file. done.
Opening root directory. done.
Printing all filenames:
  numbers.txt
Closeing root directory. done.
Filesystem Demo complete.

さらにSDカードを取り出してPCで中身を見てみると、以下のようにファイルが作られています。

※フォーマットエラーで-5が返る場合はハード的にあまりよろしくない状態になっているようです。SDカードのボードを抜き差しすると解消しました。
(プルアップとかすれば解消するのかしら・・・)

終わりに

いかがでしたでしょうか。
私はこのようにMBED OS5を使ってみて、「簡単に使えて今後も使ってみたい」と感じました。

また、SDカードは色々使い道がありますので、発想の着火剤になるかと思います。
(今回やったことも実は別の目的の副産物なのですが、その話は長くなるので今回はパスします。)

至らないところは処々あるかと思いますが、見ていただいてありがとうございました。
тнайк чoμ_〆(・ω・。)

追記

もう少しMBEDについて書いておくと、私はしばらくクラウドのMBEDを使っていませんでした。
そこで、最近使ってみたところ、インポートでわけのわからないエラーやワーニングがでて気が滅入りました。
本記事のようにリポジトリがGitHubでホストされているMBED OS5を使った開発の方が今後は主流になっていくのかもしれません。