

現在、3軸加速度の値をspresenseメインボード上のflashメモリへ記録するプログラムをarduinoにて作成しています。しかし、ファイルが作成されたり,されなかったりと不安定です。その頻度は10回に1回程度です。先日の質問([Flashメモリに一定間隔で加速度の値を記録する方法](https://ja.stackoverflow.com/questions/85536/))のように、数時間単位で何度もファイルを毎回open、closeをしてしまったため、Flashの寿命がきてしまったのでしょうか。それとも、何か別の原因があるのでしょうか。

行った手順としては  
1.ファイルオープン後、Flush前、close前にログを発生させ,シリアルモニタで確認。  
2.nuttx_shellを実行し、ファイルの有無を確認  
3.ファイルがあれば、microSDカードに写し、中身を確認し、1に戻る。ない場合も1に戻る.

です。  
この手順を行っても、ファイルが作成される場合とされない場合もログに変わりがありませんでした。


CC BY-SA 4.0
2022-01-10T09:23:19.073
85604
2022-02-15T02:37:19.457
2022-02-05T09:24:22.680
50786
50786
question
spresense arduino
spresenseでFlashメモリへのファイル作成ができない時がある


まずはそのファイルのデータを読み込み、保存して、どこがどういうふうに違っているかを確認しては。


CC BY-SA 4.0
2022-01-10T11:49:42.437
85606
2022-01-10T11:49:42.437
27481
85604
answer


KX122センサを持っているので、同じソースコードで`KX126`を`KX122`に変更しただけのものを動かしてみましたが、特に問題無く動作します。30秒周期で`dataFile.flush()`するタイミングで"4hz60.txt"ファイルにデータが追加されています。ファイルの中身をみても250ミリ秒ごとにデータが入っています。(このスケッチ内でファイルの消去はされていないので、繰り返し実行したりリセットしたりすると常に後ろに追記されています)

「Flashへの記録がされたりされなかったりと不安定」が一切データが書き込まれていないのか、一部のデータが欠けているのか、時間が飛んでいるのか、具体的な内容が分かりませんが、もしFlashの問題でしたら、Flashの操作だけを行って切り分けした方が良いと思います。

もしまだ試していなければ、Flashをフォーマットすると復旧するかもしれません。"Spresense用のスケッチ例" -> "Flash" ->
"format" スケッチでフォーマットできます。フォーマットするといままで取得したFlash内のデータはすべて削除されるのでご注意ください。


CC BY-SA 4.0
2022-01-12T06:29:24.070
85641
2022-01-12T06:29:24.070
31378
85604
answer


私もFlashを結構使うほうで、データが書き込めない症状に何度か陥ったことがあります。その時に解決した方法を備忘録としてご参考までにここに記載しておきます。

**＜復帰手順＞**

  1. Spresenseのrecovery_toolで工場出荷状態にする
  2. Bootloaderを書き込む
  3. SpresenseのFlashサンプルのFormatでFlashをフォーマットする
  4. Flashサンプルのread_writeで動作確認する

recovery_toolの場所はとても分かりにくいのですが、ヘルプにリンクがあります。

**Spresense FAQ**  
<https://developer.sony.com/develop/spresense/docs/faq_ja.html>

このFAQの`Spresense のシリアルモニタに "D>"
と表示されてしまう、またはボードへの書き込みに失敗する`に詳しく解説されています。念のためRecovery_toolのダウンロードページへのリンクも張り付けておきます。

**Recovery_toolのダウンロードページ**  
<https://developer.sony.com/develop/spresense/developer-tools/spresense-
recovery-tool>

使い方はダウンロードしたZIPファイルを解凍するとマニュアル同梱されているのでそちらを参照してください。


CC BY-SA 4.0
2022-02-15T02:37:19.457
86346
2022-02-15T02:37:19.457
27334
85604
answer