JESFS - Système de fichiers série intégré de Jo
pour standard (série) nor-flash
Pensez simplement à des choses très simples comme les données du langage: sur un «très petit» appareil intégré (pas quelque chose de «grand» comme un Linux intégré, mais quelque chose qui peut fonctionner avec de petites batteries pendant des années): il est généralement intégré «quelque part dans le code».
Difficile à changer! Mais si les données linguistiques sont dans les fichiers, les modifications sont faciles. Idem pour les graphiques, les configurations, tout… il permet même de modifier le firmware sur l'appareil intégré à partir de nombreuses sources différentes!
Pensez aux appareils intégrés, qui peuvent même obtenir leur dernier firmware par eux-mêmes! Par exemple, sur le wifi, Internet mobile, Bluetooth, UART, Radio-link,…
Soudain, toutes les options sont ouvertes! Et si vous avez des inquiétudes concernant la sécurité: ne vous inquiétez pas: le problème déjà résolu, comme vous le verrez plus tard.
Le principal problème pour les «très petits appareils» - jusqu'à présent - était le «système de fichiers»: tout le monde connaît «Fat», «NTFS»,… mais avez-vous déjà pensé à un système de fichiers sur une petite puce? Ou même à l'intérieur d'un processeur? Pas de problème, avec le bon logiciel. C'est pourquoi j'ai écrit
"JESFS - Système de fichiers série intégré de Jo"

[Image: 4 Mo JESFS sur 2x3 mm]
Mon travail quotidien est l'IoT. Parce que je n'ai trouvé aucune solution vraiment pratique, j'ai décidé de créer mon propre. La «robustesse», la «sécurité» et la «petite empreinte» étaient mes contraintes de conception.
JESFS a été conçu pour être utilisé dans le «monde réel» et pour une utilisation avec des souvenirs en série nor-flash standard, comme la série M25R, utilisé sur NRF52840-DK, NRF52832 et le CC13XX / CC26XX LaunchPads, qui est disponible jusqu'à 16 MB, ou même plus…
Quelques bases sur Jesfs:
- Empreinte Ultra-Small RAM et Code: Peut être utilisé sur le plus petit MCU avec seulement une mémoire du programme de 8 km ou moins (comme la célèbre série MSP430, presque toutes sortes de noyaux de bras 32 bits (M0, M3, M4,….)). Seuls 200 octets de RAM sont suffisants!
- Complètement open source, gratuit et écrit en standard C.
- Fonctionne avec le Nor-Flash en série de 8kbyte à 16mbyte (opt. Jusqu'à 2gbyte), mais pourrait également être utilisé avec le Nor-Flash interne du CPU.
- Travaille main dans la main avec le chargeur de démarrage sécurisé Ultra-Small Jesfsboot (nécessite moins de 8 Ko sur les noyaux de bras standard, y compris un moteur de chiffrement AES-128 pour des radiations fiables («OTA»)).
- Comprend un nivellement d'usure optimisé (pour une durée de vie maximale de la mémoire).
- Transfert de données très rapide (par exemple, fichiers de lecture: 3,7 Mo / sec sur NRF52840).
- Un mode spécial a été ajouté pour permettre des millions de cycles d'écriture, en particulier pour la collecte de données, les rapports d'événements et les aplications de journalisation.
- JESFS est persistant: aucune perte de données sur la perte de puissance ou la réinitialisation.
- Conçu pour (presque) toutes les situations, où ni les souvenirs ne peuvent être utilisés (ceux où seuls les blocs peuvent être supprimés (0-> 1) et seulement 0 écrits.
- Testé avec: Macronix MX25RXX, Gigadevices GD25WDXX et GD25WQXX, ...
- Strictement tayloré à des systèmes intégrés à ultra-faible puissance
- Conçu pour utiliser l'avantage d'un RTOS sous-jacent, mais peut également être utilisé autonome.
- Exemples d'applications pour le NRF52840 / NRF52832-DK, LaunchPads CC13XX / 26XX, ATMEL SAMD20, Windows-PC et autres (documentation PDF: JESFS.PDF)
- Facile à utiliser avec une API intuitive:
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 et windows
- V1.5 (NRF52) Port NRF52840
- V1.51 (NRF52) NRF52840 Soutien du sommeil profond / réveil (sommeil profond avec RTC actif et pleine rétention RAM <3UA)
- V1.6 Ajouté 'fs_disk_check ()': vérification minutieuse du disque
- V1.61 (NRF52) Cosmétiques source et horloge de pointe par défaut réduite à 16 MHz sur NRF52840 (32 MHz recommandé uniquement sans SoftDevice)
- V1.7 (nrf52) ajouté définit pour u-blox nina-b3
- V1.8 Temps ajouté avec '!' et uart-rx-error
- V2.0 (NRF52) a modifié le pilote UART vers APP_UART pour une utilisation multiples dans tb_tools
- V2.01 (nrf52) est passé en SDK17 (problème avec nrf_clock () dans sdk17, voir docu)
- V2.02 (nrf52) est modifié en sdk17.0.2 et ses 5.10b (problème avec nrf_clock () dans sdk17.0.2 non résolu dans SDK17.0.2, voir docu)
- V2.10 (NRF52) Ajout de la prise en charge de NRF52832
- V2.20 (NRF52) a ajouté un échantillon pour NRF52832 (configuration d'E / S pour le module U-Blox Anna-B112)
- V2.30 (NRF52) Ajout de l'impression de l'ID Flash pour l'analyse dans JESFS_MAIN.C
- V2.54 (nrf52) a ajouté 'tb_get_runtime ()' dans tb_tools.c
- V2.55 (nrf52) est modifié en sdk17.1.0 et ses 5.42ab (problème avec nrf_clock () dans sdk17.0.2 non résolu dans SDK17.0.2, voir docu)
- V2.60 (nrf52) Utiliser la macro global $ sdk_root
- V2.61 (SAMD20) ATMEL SAMD20 a contribué ( Kudos !)
- V2.70 Ajout _Featuture Supply_Voltage_Check ();
- V2.71 Tous les fonctionnalités Global FS_
- V2.72 jesfs_hl.c (fichier v1.91)
Utilisation de JESFS - Blackbox-Demo
Un enregistreur de vol pour un usage domestique
De nombreux appareils techniques fonctionnent fiables pendant des années et des années et personne ne se soucie d'eux. Mais s'ils échouent, il y a toujours la question: qu'est-ce qui ne va pas?
C'est, où les JESF pourraient devenir extrêmement utiles.
Lire la suite: Blackbox_eval.pdf
Matériel
Quelques puces à l'éclassage en série testées
Plage de tension large (1,6 V-3,6 V) et attente ultra-faible-puissance:
- Macronix MX25R-Series (MX25RXX)
- Gigadevices GD25W-Series (GD25WD80C, GD25WQ64E, ...)
Utiliser avec NRF52-CPUS:


Utiliser avec CC13XX / 26XX-CPUS:

Installation (pour les processeurs NRF52):
Construit avec SES (V6.22A ( )) et SDK 17.1.0 ( : Les versions ultérieures de SES nécessitent des paramètres de projet modifiés !!!)
Définissez macro $ sdk_root où trouver le SDK dans SES -> Tools -> Options -> Building: Eg: "Global Macros": "SDK_ROOT = C: Nordic NRF5_SDK_17.1.0_DDDDE560"
Définir la macro de plate-forme avec des I / O-Pins (voir tb_tools.h)
Formez éventuellement le problème avec nrf_clock () (voir docu tb_tools_nrf52.c / .h)