RP2040ファイルシステムの構築

最終更新日:2023/1/13

アールFフィルハワー氏版RP2040開発環境(Arduino-Pico)ではLittleFSというファイルシステムを構築することが出来ます。
https://github.com/earlephilhower/arduino-pico-littlefs-plugin
ところが、これはArduinoIDE1xしかダメのようです。.javaで書かれているみたいです

公開されているjarファイルの入ったZIPをダウンロードし、解凍し、「picolittlefs.jar」を
「C:\Program Files (x86)\Arduino\tools\PicoLittleFS\tool」の中にコピーすれば、ツールメニューのところに「Pico LittleFS Data Upload」という項目が増えます。そして、スケッチのフォルダの下にdataというフォルダができるので、ここにファイルを入れておくとコピーできるようになるそうです。

RP2040には2MBのフラッシュメモリモデルがあります。これまでSTM32F1用にコーディングしたスケッチサイズは64kBは優に超えるモノのなんとか128kBに納めてきました。しかし、マイコン上でWebSerberを構築しようとするとHTMLのコードを内挿するためそこそこフラッシュサイズが必要になります。グラフ等の表示をさせるためにSCRIPTファイルまで内挿しようとすると128kBでは納まりません。
実際、Chart.jsを使う場合、CDSJSにアクセスすることで事なきを得ていますが、ESP32何かだとフラッシュ内にファイルシステムを構築して、マイコン内で完結するような仕組みが実現出来ています。この考えをRP2040にも応用することが出来るはずです。

ArduinoIDEのFlushSizeの設定でスケッチ1MB、FS1MBを選択することで、スケッチ領域を1MBにすることは確認出来ています。後はFS1MBにアクセス出来る検討が必要です。

https://github.com/earlephilhower/arduino-pico-littlefs-plugin

からZIPファイルをダウンロードし、展開します。ReadMeを読むと以下のように書かれていました。

スケッチ データ フォルダを LittleFS ファイルシステム イメージにパックする Arduino プラグイン、
イメージを Raspberry Pi Pico RP2040 フラッシュ メモリにアップロードします。
<br>
## インストール
- Arduino IDE のサポートされているバージョンのいずれかを使用し、Arduino-Pico コア (https://github.com/earlephilhower/arduino-pico) がインストールされていることを確認してください。
- (https://github.com/earlephilhower/arduino-pico-littlefs-plugin/releases) からツール アーカイブをダウンロードします。
- Arduino sketchbook ディレクトリに tools ディレクトリがまだ存在しない場合は作成します。
- ツールを tools ディレクトリに解凍します (パスは `<home_dir>/Arduino/tools/PicoLittleFS/tool/picolittlefs.jar のようになります)`。
- Arduino IDE を再起動します。
OS X では、`~/Documents/Arduino/` に tools ディレクトリを作成し、そこにファイルを展開します。
## 使用法
- スケッチを開きます (または新しいスケッチを作成して保存します)。
- スケッチ ディレクトリに移動します ([スケッチ] > [スケッチ フォルダを表示] を選択します)。
- `data` という名前のディレクトリと、そのファイル システムに必要なファイルを作成します。
- ボードとポートが選択されていることを確認してください。
- シリアル モニターを閉じます。そうしないと、ツールがファイル システムをアップロードできなくなります。
- 「ツール > Pico LittleFS データ アップロード」メニュー項目を選択します。 これにより、フラッシュ ファイル システムへのファイルのアップロードが開始されます。
   完了すると、IDE ステータス バーに LittleFS Image Uploaded メッセージが表示されます。 ファイル システムのサイズが大きい場合は、数分かかる場合があります。
## スクリーンショット
![スクリーンショット](screenshot2.png)
## クレジットとライセンス
- Copyright (c) 2015 Hristo Gochkov (ficeto at ficeto dot com)
- GPL v2 ([テキスト](LICENSE)) に基づくライセンス
- LittleFS 用に Earle F. Philhower, III によって変更

ところが、ArduinoIDE2では、認識しません。ArduinoIDE2の場合、インストールするフォルダパスは、64bit版という事も有り、

「C:\Program Files\Arduino IDE\tools\PicoLittleFS\tool」

となるはずで、この中にプラグインファイル「picolittlefs.jar」をインストールしてもツールメニューに「Pico LittleFS Data Upload」は現れません。ArduinoIDE2はJavaで作成されたモノではないので認識しないのかなと思います。

さて、どうすべきなのか?調査を進める必要があります。


ArduinoIDE1.8.19にてPicoLittleFSの確認をすべきだと思いました。

まずはExampleを動作させてみます。Pico SpeedTestというExampleを実行して見ました。
コンパイルは通ります。
実行したところ以下のような結果を得ました。

10:07:29.284 -> Beginning test
10:07:29.351 -> Creating 256KB file, may take a while...
10:07:32.712 -> ==> Time to write 256KB in 256b chunks = 3345 milliseconds
10:07:32.712 -> ==> Created file size = 262144
10:07:32.712 -> Reading 256KB file sequentially in 256b chunks
10:07:32.746 -> ==> Time to read 256KB sequentially in 256b chunks = 47 milliseconds = 5.58 MB/s
10:07:32.746 -> Reading 256KB file MISALIGNED in flash and RAM sequentially in 256b chunks
10:07:32.814 -> ==> Time to read 256KB sequentially MISALIGNED in flash and RAM in 256b chunks = 48 milliseconds = 5.46 MB/s
10:07:32.814 -> Reading 256KB file in reverse by 256b chunks
10:07:32.916 -> ==> Time to read 256KB in reverse in 256b chunks = 115 milliseconds = 2.28 MB/s
10:07:32.916 -> Writing 64K file in 1-byte chunks
10:07:34.037 -> ==> Time to write 64KB in 1b chunks = 1116 milliseconds = 58.72 KB/s
10:07:34.037 -> Reading 64K file in 1-byte chunks
10:07:34.231 -> ==> Time to read 64KB in 1b chunks = 208 milliseconds = 315.08 KB/s
10:07:34.231 -> done

LittleFS領域へのファイルのUpdateですが、シリアル経由で実現します。
Uploadしたいファイルをスケッチと同じ階層に“data”フォルダを作成し、その中に保存します。
ツールメニュー>「Pico LittleFS Data Upload」を実行することでUploadされます。
以後、フラッシュ領域を変更しない限り、ここにUploadしたファイルは維持されるようです。

実行結果は以下の通り※シリアルモニタに表示されます。

13:03:18.707 -> FS format done, took 105 ms!
13:03:18.809 -> 
13:03:18.809 -> Enter 'F' to format, 'L' to list the contents of the FS
・・・・フォーマット実行後にリスト表示
13:03:28.009 -> Listing contents...
13:03:28.043 -> 0 files/dirs total
13:03:28.111 -> 
13:03:28.111 -> Enter 'F' to format, 'L' to list the contents of the FS
・・・・ここでUpload
13:06:18.404 -> Listing contents...
13:06:18.404 -> Chart.bundle.js  (455297 Bytes)
13:06:18.404 -> favicon.ico      (2238 Bytes)
13:06:18.404 -> utils.js         (3443 Bytes)
13:06:18.404 -> 3 files/dirs total
13:06:18.506 -> 
13:06:18.506 -> Enter 'F' to format, 'L' to list the contents of the FS


戯言(nonsense)に戻る


問い合わせ頁の表示


免責事項

本ソフトウエアは、あなたに対して何も保証しません。本ソフトウエアの関係者(他の利用者も含む)は、あなたに対して一切責任を負いません。
あなたが、本ソフトウエアを利用(コンパイル後の再利用など全てを含む)する場合は、自己責任で行う必要があります。

本ソフトウエアの著作権はToolsBoxに帰属します。
本ソフトウエアをご利用の結果生じた損害について、ToolsBoxは一切責任を負いません。
ToolsBoxはコンテンツとして提供する全ての文章、画像等について、内容の合法性・正確性・安全性等、において最善の注意をし、作成していますが、保証するものではありません。
ToolsBoxはリンクをしている外部サイトについては、何ら保証しません。
ToolsBoxは事前の予告無く、本ソフトウエアの開発・提供を中止する可能性があります。

商標・登録商標

Microsoft、Windows、WindowsNTは米国Microsoft Corporationの米国およびその他の国における登録商標です。
Windows Vista、Windows XPは、米国Microsoft Corporation.の商品名称です。
LabVIEW、National Instruments、NI、ni.comはNational Instrumentsの登録商標です。
I2Cは、NXP Semiconductors社の登録商標です。
その他の企業名ならびに製品名は、それぞれの会社の商標もしくは登録商標です。
すべての商標および登録商標は、それぞれの所有者に帰属します。