teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

試したこと追記

2021/08/17 14:46

投稿

thkana
thkana

スコア7735

answer CHANGED
@@ -3,4 +3,46 @@
3
3
  ならそこに書き込んで、番地指定でプログラムから読み出せばよいのではないですか?
4
4
  なんでわざわざプログラムを壊しながら書くのでしょう?
5
5
 
6
- Platform IOということはArduino環境なんでしょうか。Platform IOで使えるかは知りませんが、Arduino IDEなら[spiffsにファイルを流し込むツールなんてのもある](https://www.mgo-tec.com/blog-entry-spiffs-uploader-plugin-arduino-esp32.html)ようですので(私自身は使ったことはありません)、とくにこだわりがあるのでなければそういのでもよいのでは。
6
+ Platform IOということはArduino環境なんでしょうか。Platform IOで使えるかは知りませんが、Arduino IDEなら[spiffsにファイルを流し込むツールなんてのもある](https://www.mgo-tec.com/blog-entry-spiffs-uploader-plugin-arduino-esp32.html)ようですので(私自身は使ったことはありません)、とくにこだわりがあるのでなければそういのでもよいのでは。
7
+
8
+ ---
9
+ ちょっと真面目に調べました。
10
+ ESP32-WROOM-02のSPIフラッシュからの読み出しには`spi_flash_read`というAPI関数が使えるようです。
11
+ パーティションテーブルを
12
+ ```text
13
+ # Name, Type, SubType, Offset, Size, Flags
14
+ nvs, data, nvs, 0x9000, 0x5000,
15
+ otadata, data, ota, 0xe000, 0x2000,
16
+ app0, app, ota_0, 0x10000, 0x140000,
17
+ app1, app, ota_1, 0x150000,0x140000,
18
+ eeprom, data, 0x99, 0x290000,0x1000
19
+ spiffs, data, spiffs, 0x291000,0x16F000,
20
+ ```
21
+ esptoolで0x290000から
22
+ ```
23
+ de ad be ef 00 00....あとしばらく00
24
+ ```
25
+ を書き込んで、
26
+ ```Arduino
27
+ void setup()
28
+ {
29
+ char data[1024];
30
+ spi_flash_read(0x290000,data,1024);
31
+ Serial.begin(115200);
32
+ for (int i = 0; i < 1024; i++) {
33
+ printf("%02x ",data[i]);
34
+ if((i%16)==15){
35
+ printf("\n");
36
+ }
37
+ }
38
+ }
39
+ void loop(){}
40
+ ```
41
+ を走らせると
42
+ ```
43
+ de ad be ef 00 00 00 00 00 00 00 00 00 00 00 00
44
+ 以下略
45
+ ```
46
+ という表示が得られました。
47
+
48
+ やりたかったのはこういうことでいいんですよね?