私は最新のファームウェアを使用してい
、0.9.6-dev_20150704、floatバージョン各コードを連続して実行すると、数百回の実行後にはほぼ100ミリ秒まででした。それは私の上で決して墜落しなかった。あなたは(SDK 1.4.0に基づいて)新しいバージョンにアップグレードする場合
function save_setting(name, value)
file.open(name, 'w') -- you don't need to do file.remove if you use the 'w' method of writing
file.writeline(value)
file.close()
end
function read_setting(name)
if (file.open(name)~=nil) then
result = string.sub(file.readline(), 1, -2) -- to remove newline character
file.close()
return true, result
else
return false, nil
end
end
startTime = tmr.now()
test1 = 1200
test2 = 15.7
test3 = 75
test4 = 15000001
save_setting('test1', test1)
save_setting('test2', test2)
save_setting('test3', test3)
save_setting('test4', test4)
1exists, test1 = read_setting('test1')
2exists, test2 = read_setting('test2')
3exists, test3 = read_setting('test3')
4exists, test4 = read_setting('test4')
completeTime = (tmr.now()-startTime)/(1000)
print('time to complete (ms):')
print(tostring(completeTime))
それぞれの書き込みでは、本質的に遅い消去と書き換えが必要な可能性があります。なぜクラッシュするのかわかりませんが、同じ操作が既に起きている間に、書き込みバッファがあふれているか、ページの消去/書き込みを試みている可能性があります。どちらの場合でも、解決策はデータを配列のどこかにバッファリングして書き込む頻度を減らすことです。これで十分ではない場合は、SPI EEPROMまたはSDカードに書き込む必要があるかもしれません:( – user1816847
@ user1816847 Ithxの返信用ですが、私はすでにプロジェクト用にcuatom pcbを作成していて、現在保存機能なしで使用しています...私が今行うことができるのは、いくつかのホームは、ソフトウェアのみを使ってセーブロード機能を実装することです。 –
この場合、 'file.open'で冗長な' file.remove(name) 'を削除することをお勧めしますこれは、ファイルテーブルに変更がないので、FSが行う必要がある作業を単純化することもできます。 –