SD Kart içerisinde bulunan dosyaların zaman zaman silinmesi

Başlatan volkanunal, 15 Ekim 2019, 14:36:25

volkanunal

Merhabalar,

SD kart içerisinde tuttuğum dosyalar zaman zaman (2-3 hafta belki 3gün) içerisinde, periyodik olmayan zamanlarda içerisinde bulundurduğu bazı dosyaları kendisi silmekte. Her zaman aynı dosyalar değil.

SD kart içerisinde cihazın sadece ayağa kalktığı zamanlarda okuma yaptığı dosyaların yanı sıra, bazı durumlarda 5dk'lık aralıklar bir treshold dosyasını güncelliyor. Gerekli şartlar sağlandıktan sonra dosyayı okuma yaparak veriyi gönderiyor.

Ancak bu silinme olayı, çok can sıkıcı bir durum oluşturmakta. Daha önce böyle bir durumla karşılaşan oldu mu acaba?

Sd kart dosyalama sisteminde FatFs kullanılmakta
Kullanılan sd kart -> Kingston marka sd card.

OptimusPrime

Yazilimdaki bir bug dosyalari siliyor veya bir sekilde bozuyor olabilir mi?
Dosya islemleri yaparken cagirilan API lerdeki geri donuslere bakarak error recovery gibi islemler yapiliyor mu? Hic kart uzerinde dosya sistemi hatalirn bakildi mi?

Bunlar ilk anda aklima gelenler  :du:
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

volkanunal

Periyodik olarak olmadığı için sahadaki bir cihazı takip etmem çok mümkün olmuyor, silinmenin yanı sıra bozulmalarda meydana gelebiliyor. Bu durumda sd kartın formatlanması gerekiyor

z

Ya senin keni kodlarında ya da SD kart kütüphanesinde bug vardır.

Çok sıkıcı bir hata ayıklama operasyonu gerekecek.

OptimusPrime

Zor is bunu bulmak .  :(

Bir cesit log mekanizmasi kurup uzunca bir zaman izlemen gerekiyor. Ozelliklede dosya sistemi ile ilgili API lerin cagirildigi fonksiyonlarin neler yaptigini loglarsan birseyler cikabilir gibi.  :du:
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

taydin

Eğer lojik analizör varsa şöyle birşey de yapılabilir: Lojik analizörü SDCARD sinyallerine bağla, sonra da yazma sinyalinin aktif olmasına trigger tanımla. Böyle yapınca, ne zaman yazıldığını ve ne yazıldığını görebilirsin. Eğer bu sırada işletim sisteminde neler olup bitiyor öğrenmek istiyorsan, bu trigger'i MCU'nun bir GPIO suna bağlarsın ve o GPIO'da trigger'i görünce MCU'ya sağdan soldan veri toplatıp bir kenara yazdırırsın.

Bu sana problem ile ilgili post mortem bir durum raporu sunacak, uçak karakutusu gibi, ve belki de topladığın bilgilerle problemin ne olduğunu anlayabileceksin.
Timur Aydın (mekatronik.org)

volkanunal

Alıntı yapılan: z - 16 Ekim 2019, 09:14:38Ya senin keni kodlarında ya da SD kart kütüphanesinde bug vardır.

Çok sıkıcı bir hata ayıklama operasyonu gerekecek.

Fatfs'in 2014 çıkarmış olduğu sürümde şu an cihazın içinde ki driver, 2019 taşımaya çalışıyorum faka haliyle o zamandan bu yana 3.parti yazılım kısmını geçtim hal kısmında bile bir çok değişiklik olmuş. Hatayı yakalamam zor gibi duruyor gerçekten.


Alıntı yapılan: taydin - 16 Ekim 2019, 19:49:44Eğer lojik analizör varsa şöyle birşey de yapılabilir: Lojik analizörü SDCARD sinyallerine bağla, sonra da yazma sinyalinin aktif olmasına trigger tanımla. Böyle yapınca, ne zaman yazıldığını ve ne yazıldığını görebilirsin. Eğer bu sırada işletim sisteminde neler olup bitiyor öğrenmek istiyorsan, bu trigger'i MCU'nun bir GPIO suna bağlarsın ve o GPIO'da trigger'i görünce MCU'ya sağdan soldan veri toplatıp bir kenara yazdırırsın.

Bu sana problem ile ilgili post mortem bir durum raporu sunacak, uçak karakutusu gibi, ve belki de topladığın bilgilerle problemin ne olduğunu anlayabileceksin.

Ne zaman ne yazıldığını test düzeneği üzerinde görebiliyorum. Ancak dediğim gibi 4 ay boyunca bir problem olmadan çalıştığı sahada var.

taydin

Alıntı yapılan: volkanunal - 16 Ekim 2019, 21:01:21Ne zaman ne yazıldığını test düzeneği üzerinde görebiliyorum. Ancak dediğim gibi 4 ay boyunca bir problem olmadan çalıştığı sahada var.

Yani hiçbir şekilde SDCARD'a yazma komutu gitmiyor, bundan eminsin, ve buna rağmen SDCARD'daki dosyalar bozuluyor öyle mi?

Eğer öyle ise, o SDCARD'daki flash chipleri aşınmış ve ömürlerini doldurmuştur. Her flash belleğin bir yazılabilme sayısı limiti var. Belki o sistem üzerinde birisi program geliştirirken bir hata yaptı ve sonsuz döngüde sürekli o flash'a birşeyler yazıldı. Bu olduktan sonra artık o SDCARD'dan hayır gelmez.
Timur Aydın (mekatronik.org)

taydin

Bir diğer ihtimal de, o flash'lar çok yoğun X ışınlarının olduğu bir yerde bulunuyor (röntgen cihazı?) veya çok fazla kozmik ışımaya maruz kalıyor (uluslararası uzay istasyonu? :) )
Timur Aydın (mekatronik.org)


OptimusPrime

Class 10 muydu daha oncesi sd lerdemiydi ayni yere surekli yazsan bile sd icindeki ozel bir devre ile ayni bolgenin devamli kullanilmasi engelleniyordu. Bunun adi neydi hatirlamiyorum.  :du:

Bence port ettigin kisimda bir sikinti var. Sd olaylarini ayrintili logla oradan bir sonuc cikar diye dusunuyorum. ::ok
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

taydin

Alıntı yapılan: OptimusPrime - 17 Ekim 2019, 11:57:57Class 10 muydu daha oncesi sd lerdemiydi ayni yere surekli yazsan bile sd icindeki ozel bir devre ile ayni bolgenin devamli kullanilmasi engelleniyordu. Bunun adi neydi hatirlamiyorum.  :du:

Ona "wear levelling" (aşınma dengelemesi) deniyor ve flash çiplerinin içinde değil, haricinde bir kontrolcü devresi yapıyor. Ama gene de bir yazılım bir bug nedeniyle sonsuz döngüde yazarsa, sabaha kadar çalıştığında o flash gene gider diye düşünüyorum. Wear levelling sadece süreyi uzatır.
Timur Aydın (mekatronik.org)

OptimusPrime

https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||