LoginSignup
0
0

M5stack core3でのカメラ操作

Last updated at Posted at 2023-06-17

M5stack core3でカメラ操作をするために調べたことをまとめました。

背景

Githab M5CoreS3M5CoreS3/examples/Basics/Camera /Camera.inoを使用してカメラ操作を試していましたが、No core dump partition foundというエラーが出たため、カメラ操作を行うことができませんでした。原因は、board、memory_type、partitionの設定を変更する必要がありました。設定について何をしているのかを調べてみました。

環境

OS: windows 10.0
開発環境:Platform IO
デバイス:M5stackcore3

PlatfromIO

ronron-ghさんが作成したplatformIOの環境でM5stack Core3のカメラ操作をすることができたので、PlatfromIOで設定していることを図にしてみました。
image.png

Platformio.iniのファイルでは、プロジェクトで使用する設定を記述しています。boardは、使用するマイコンに合わせて選択する必要があります。また、memory_type、partitionsは、作成するアプリケーションと使用しているマイコンによって設定できる機能が変わってきます。マイコンが処理を頻繁に行うアプリケーションの場合は、この設定を変更する必要があります。lib_depsでは、プログラム内で使用するライブラリを設定しています。

board

image.png
board情報は、使用するモジュールによって使用するマイコンも異なります。M5stack core2とM5stack core3では、ESPの種類が変わっています。board情報は、使用するpin情報の設定も含まれているため、使用するESPに合わせて設定する必要があります。ボードで設定される情報は、platformIOのサイトに記載されています。Espressif ESP32-S3-Boxはこんな感じです。

memory_type

memory_typeでは、qio_qspiを設定します。qspiとは、PSRAMがflashメモリなどのシリアルメモリにアクセスするための通信機能を選択です。core3は、QSPI通信を行うことができます。これを使用することで手軽に外部メモリを増設することができます。ざっくりといえば、SPI通信では、2本の通信バスだったのが、QSPIでは、4本の通信バス拡張されたため、1クロックでデータを送受信できる量が2倍になり、より高速でデータ通信ができます。

partition

parition table(partition)について、ドキュメントには、下記のように記載されています。

A single ESP32’s flash can contain multiple apps, as well as many different kinds of data (calibration data, filesystems, parameter storage, etc). For this reason a partition table is flashed to (default offset) 0x8000 in the flash.

使用するアプリケーションに合わせて機能を追加したいとき、このpartition tableを編集することでメモリ領域を確保することができます。partition tableは、それぞれのアプリケーションに必要なflashメモリのアドレスとサイズを指定し、分割することができます。

partition table例

下記は、default_16MB.csvです。

Name Type SubType Offset Size Flags
nvs data nvs 0x9000 0x5000
otadata data ota 0xe000 0x2000
app0 app ota_0 0x10000 0x640000
app1 app ota_1 0x650000 0x640000
spiffs data spiffs 0xc90000 0x360000
coredump data coredump 0xFF0000 0x10000
Name

パーティション名です。16文字以内で記述します。

Type

dataまたはappを設定できます。
appタイプは、アプリケーションを格納するパーティションを定義するために使用されます。
dataタイプは、一般的なデータを格納するパーティションを定義するために使用することができます

SubType

SubTypeは、アプリパーティションとデータパーティションの使い方を定義します。

nvs(data)

nvsは、WiFiデータ、デバイスPHYキャリブレーションデータなど不揮発性メモリに保存するデータを格納ために使用します。

ota(data),ota_0(app),ota_1(app)

otaは、OTA(Over The Air)情報を格納するために使用します。OTAとは、データその送受信を無線通信で行うための技術です。

spiffs(data)

spiffsは、SPIFFS (SPI Flash File System) の使用を定義しています。SPIFFSの機能を使うと、ESP32のフラッシュメモリの一部をストレージとして使うことができます。

coredump(data)

oredumpは、コアダンプをメモリに格納するために使用します。コアダンプは、アプリケーションの動作中にクラッシュした際の情報を残すことができるので、解析をするときに使用できます。

Offset

オフセットは、パーティションの開始アドレスを定義します。オフセットは、オフセットと先のパーティションのサイズの合計で定義されます。

Size

サイズは、パーティションに割り当てるメモリを定義します。

Flags

フラグは、パーティションがフラッシュ暗号化機能で暗号化されるかどうかを定義するために使用されています。

M5stack core3の初期化

Core3の書き込み途中で動かなくなったことが何度かあり、初期化を行いました。方法については下記のとおりです。
CoreS3Download CoreS3 Factory Firmware Easyloaderをダウンロードします。
ダウンロードしたアプリを開き、Burnを押すと、初期化します。
image.png

link

参考にした or 関係するlinkです。

  1. Quad SPI
    Quad SPIって何?
  2. Board infomation
    platform io board 情報
  3. Module
    M5stack coreS3
  4. partition 関連
    ESP32マウスPart.41 ESP32でファイルシステムを扱う
    Partition Tables
    ESP32-WROOM-32 SPIFFS メモリサイズを大きくする方法
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0