Jesfs - Sistem File Serial Tertanam Jo
untuk standar (serial) nor-flash
Pikirkan hal -hal yang sangat sederhana seperti data bahasa: pada perangkat tertanam yang "sangat kecil" (bukan sesuatu yang "besar" seperti linux tertanam, tetapi sesuatu yang dapat berjalan dengan baterai kecil selama bertahun -tahun): biasanya terintegrasi "di suatu tempat dalam kode".
Sulit untuk diubah! Tetapi jika data bahasa dalam file, perubahan mudah. Sama untuk grafik, pengaturan, semuanya ... bahkan memungkinkan untuk mengubah firmware pada perangkat tertanam dari berbagai sumber!
Pikirkan perangkat tertanam, yang bahkan bisa mendapatkan firmware terbaru mereka sendiri! Misalnya wifi, internet seluler, bluetooth, uart, radio-link,…
Tiba -tiba semua opsi terbuka! Dan jika Anda memiliki kekhawatiran tentang keamanan: Jangan khawatir: masalah sudah terpecahkan, seperti yang akan Anda lihat nanti ..
Masalah utama untuk "perangkat yang sangat kecil" - sampai sekarang - adalah "sistem file": semua orang tahu "gemuk", "NTF", ... tetapi apakah Anda pernah memikirkan sistem file pada chip kecil? Atau bahkan di dalam CPU? Tidak masalah, dengan perangkat lunak yang tepat. Inilah sebabnya saya menulis
"Jesfs - Sistem File Serial Tertanam Jo"

[Gambar: 4MB Jesfs pada 2x3 mm]
Pekerjaan harian saya adalah IoT. Karena saya tidak menemukan solusi yang benar -benar praktis, saya memutuskan untuk membuatnya sendiri. "Ketahanan", "keamanan" dan "jejak kecil" adalah kendala desain saya.
Jesfs dirancang untuk digunakan di "dunia nyata" dan untuk digunakan dengan kenangan serial nor-flash standar, seperti seri M25R, yang digunakan pada NRF52840-DK, NRF52832 dan launchpads CC13XX/CC26XX, yang tersedia hingga 16 MB, atau lebih banyak lagi ...
Beberapa dasar tentang Jesfs:
- Ultra-Small RAM dan Code Footprint: Dapat digunakan pada MCU terkecil dengan hanya memori program 8kbyte atau kurang (seperti seri MSP430 yang terkenal, hampir semua jenis inti lengan 32-bit (M0, M3, M4,….)). Hanya 200 byte RAM yang cukup!
- Sumber terbuka sepenuhnya, gratis dan ditulis dalam standar C.
- Bekerja dengan serial nor-flash dari 8kbyte hingga 16mbyte (opt. Hingga 2Gbyte), tetapi juga dapat digunakan dengan CPU-Internal Nor-Flash.
- Bekerja dengan tangan dengan bootloader Secure Ultra-Small Jesfsboot (membutuhkan kurang dari 8kb pada inti lengan standar, termasuk mesin enkripsi AES-128 untuk pembaruan over-the-air yang andal ("OTA")).
- Termasuk leveling keausan yang dioptimalkan (untuk umur maksimum memori).
- Transfer data yang sangat cepat (misalnya file membaca: 3.7MB/detik pada NRF52840).
- Mode khusus ditambahkan untuk memungkinkan jutaan siklus menulis, terutama untuk pengumpulan data, laporan acara, dan aplikasi jurnal.
- Jesfs persisten: tidak ada kehilangan data karena kehilangan daya atau reset.
- Dirancang untuk (hampir) semua situasi, di mana atau ingatan tidak dapat digunakan (yang hanya blok yang dapat dihapus (0-> 1) dan hanya 0 yang ditulis.
- Diuji dengan: macronix mx25rxx, gigadevices gd25wdxx dan gd25wqxx, ...
- Taylored secara ketat ke sistem tertanam yang sangat rendah
- Dirancang untuk menggunakan keuntungan dari RTO yang mendasarinya, tetapi juga dapat digunakan mandiri.
- Contoh Aplikasi untuk NRF52840/NRF52832-DK, Launchpads CC13XX/26XX, ATMEL SAMD20, Windows-PC dan lainnya (Dokumentasi PDF: JESFS.PDF)
- Mudah digunakan dengan API intuitif:
int16_t fs_open(FS_DESC *pdesc, char* pname, uint8_t flags);
int32_t fs_read(FS_DESC *pdesc, uint8_t *pdest, uint32_t anz);
int16_t fs_write(FS_DESC *pdesc, uint8_t *pdata, uint32_t len);
int16_t fs_close(FS_DESC *pdesc);
int16_t fs_delete(FS_DESC *pdesc);
int16_t fs_rewind(FS_DESC *pdesc);
int16_t fs_rename(FS_DESC *pd_odesc, FS_DESC *pd_ndesc);
uint32_t fs_get_crc32(FS_DESC *pdesc);
int16_t fs_check_disk(void cb_printf(char *fmt, ...), uint8_t *pline, uint32_t line_size);
int16_t fs_format(uint32_t f_id);
int16_t fs_start(uint8_t mode);
void fs_deepsleep(void);
int16_t fs_info(FS_STAT *pstat, uint16_t fno);
void fs_sec1970_to_date(uint32_t asecs, FS_DATE *pd);
Changelog (jesfs_main.c)
- V1.0 CC13XX/CC26XX dan Windows
- V1.5 (NRF52) Port NRF52840
- V1.51 (NRF52) NRF52840 DUKUNGAN Tidur nyenyak/bangun (Tidur nyenyak dengan RTC aktif dan retensi RAM penuh <3UA)
- V1.6 ditambahkan 'fs_disk_check ()': cek disk yang cermat
- V1.61 (NRF52) Sumber kosmetik dan mengurangi jam spim default menjadi 16MHz pada NRF52840 (32MHz direkomendasikan hanya tanpa softdevice)
- V1.7 (NRF52) Ditambahkan Definent untuk U-Blox Nina-B3
- V1.8 Menambahkan waktu set dengan '!' dan uart-rx-error
- V2.0 (NRF52) Mengubah driver UART menjadi app_uart untuk multi guna di TB_Tools
- V2.01 (NRF52) diubah menjadi SDK17 (masalah dengan nrf_clock () di SDK17, lihat DOCU)
- V2.02 (NRF52) diubah menjadi SDK17.0.2 dan SES 5.10B (masalah dengan nrf_clock () di SDK17.0.2 tidak diperbaiki di SDK17.0.2, lihat DOCU)
- V2.10 (NRF52) Menambahkan dukungan untuk NRF52832
- V2.20 (NRF52) Menambahkan sampel untuk NRF52832 (konfigurasi I/O untuk u-blox anna-b112-module)
- V2.30 (nrf52) Menambahkan cetakan ID flash untuk analisis di jesfs_main.c
- V2.54 (nrf52) menambahkan 'tb_get_runtime ()' di tb_tools.c
- V2.55 (NRF52) diubah menjadi SDK17.1.0 dan SES 5.42AB (masalah dengan nrf_clock () di SDK17.0.2 tidak diperbaiki dalam SDK17.0.2, lihat DOCU)
- V2.60 (NRF52) Gunakan Global Macro $ SDK_ROOT
- V2.61 (SAMD20) ATMEL SAMD20 Dikontribusikan ( Kudos !)
- V2.70 ditambahkan _feature suplai_voltage_check ();
- V2.71 Semua FS_-Fungsi Global Periksa _supply_voltage_check () saat entri
- V2.72 jesfs_hl.c (file v1.91)
Menggunakan Jesfs-Blackbox-Demo
Perekam penerbangan untuk digunakan di rumah
Banyak perangkat teknis bekerja dapat diandalkan selama bertahun -tahun dan tidak ada yang peduli tentang mereka. Tetapi jika mereka gagal, selalu ada pertanyaan: Apa yang salah?
Ini adalah, di mana para Jesf bisa menjadi sangat berguna.
Baca lebih lanjut: Blackbox_eval.pdf
Perangkat keras
Beberapa chip serial-flash yang diuji
Kisaran tegangan lebar (1.6V-3.6V) dan siaga ultra-rendah:
- Macronix MX25R-Series (MX25RXX)
- Gigadevices GD25W-Series (GD25WD80C, GD25WQ64E, ...)
Gunakan dengan NRF52-CPU:


Gunakan dengan CC13XX/26XX-CPU:

Instalasi (untuk NRF52 CPU):
Dibangun dengan SES (v6.22a ( )) dan SDK 17.1.0 ( : Versi SES yang lebih baru memerlukan pengaturan proyek yang diubah !!!)
Atur makro $ sdk_root di mana menemukan SDK di SES -> Tools -> Options -> Building: Misalnya: "Global Macros": "SDK_ROOT = C: Nordic nrf5_sdk_17.1.0_ddde560"
Atur platform makro dengan I/O-PIN (lihat tb_tools.h)
Secara opsional perbaiki masalah dengan nrf_clock () (lihat docu tb_tools_nrf52.c/.h)