JESFS - встроенная серийная система файловой системы JO
Для стандартного (серийного) норвежки
Подумайте об очень простых вещах, таких как языковые данные: на «очень маленьком» встроенном устройстве (не что -то «большое», как встроенный Linux, а то, что может работать с небольшими батареями в течение многих лет): это обычно интегрируется «где -то в коде».
Трудно изменить! Но если языковые данные находятся в файлах, изменения просты. То же самое для графики, настройки, все ... это даже позволяет изменить прошивку на встроенном устройстве из разных источников!
Подумайте об встроенных устройствах, которые даже могут получить свою последнюю прошивку самостоятельно! Например, над Wi-Fi, мобильным интернетом, Bluetooth, Uart, Radio-Link,…
Внезапно все варианты открыты! И если у вас есть опасения по поводу безопасности: не волнуйтесь: проблема уже решена, как вы увидите позже ..
Основная проблема для «очень маленьких устройств» - до сих пор - была «файловая система»: все знают «жир», «NTFS»,… но вы когда -нибудь думали о файловой системе на небольшом чипе? Или даже внутри процессора? Нет проблем, с правильным программным обеспечением. Вот почему я написал
«JESFS - встроенная серийная файловая система Джо»

[Изображение: 4MB JESFS на 2х3 мм]
Моя ежедневная работа - это IoT. Поскольку я не нашел действительно практического решения, я решил создать свое собственное. «Надежность», «безопасность» и «маленький след» были моими ограничениями дизайна.
JESFS был разработан для использования в «реальном мире» и для использования со стандартными серийными воспоминаниями о норвере, таких как серия M25R, используемые на NRF52840-DK, NRF52832 и CC13XX/CC26XX Launchpads, который доступен до 16 МБ или даже больше!
Некоторые основы о JESFS:
- Ультра-лучевая оценка оперативной памяти и кода: может использоваться на самых маленьких MCU с памятью только 8 кбайт или меньше (например, знаменитые серии MSP430, почти все виды 32-разрядных ядер ARM (M0, M3, M4,….)). Достаточно только 200 байтов оперативной памяти!
- Полностью открытый исходный код, бесплатный и написанный в стандартном C.
- Работает с серийным норвежком от 8 кбайт до 16 Мбайт (оп. До 2 гбит), но также может быть использован с внутренним процессором.
- Работает рука об руку с помощью Ultra-Mall Secure Bootloader Jesfsboot (требуется менее 8 КБ на стандартных ядрах ARM, включая двигатель шифрования AES-128 для надежных чрезмерных обнот («OTA»)).
- Включает оптимизированное выравнивание износа (для максимального срока службы памяти).
- Очень быстрая передача данных (например, файлы чтения: 3,7 МБ/с на NRF52840).
- Специальный режим был добавлен, чтобы разрешить миллионы циклов записи, особенно для сбора данных, отчетов о событиях и журналирования.
- JESFS устойчив: нет потери данных о потере мощности или сбросе.
- Разработано для (почти) всех ситуаций, где можно использовать ни воспоминания (те, где можно удалить только блоки (0-> 1) и только 0.
- Протестировано с помощью: Macronix MX25RXX, Gigadevices GD25WDXX и GD25WQXX, ...
- Строгое количество встроенных систем с ультра-низкой силой
- Разработан для использования преимущества базового RTO, но также может использоваться автономным.
- Образцы приложений для NRF52840/NRF52832-DK, Launchpads CC13XX/26xx, Atmel SAMD20, Windows-PC и др. (Документация PDF: JESFS.PDF)
- Простой в использовании с интуитивно понятным API:
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);
Чангейлог (jesfs_main.c)
- V1.0 cc13xx/cc26xx и windows
- V1.5 (NRF52) порт NRF52840
- V1.51 (NRF52) NRF52840 Поддержите глубокий сон/пробуждение (глубокий сон с активным RTC и полным удержанием оперативной памяти <3UA)
- V1.6 Добавлено 'fs_disk_check ()': тщательная проверка диска
- V1.61 (NRF52) Source Cosmetics и снижение SPIM -часов по умолчанию до 16 МГц на NRF52840 (32 МГц рекомендуется только без SoftDevice)
- V1.7 (NRF52) добавлено определяет для U-Blox Nina-B3
- V1.8 Добавленное время, установленное с '!' и UART-RX-ошибка
- V2.0 (NRF52) Изменено драйвер UART на APP_UART для многоцелевого использования в TB_Tools
- V2.01 (nrf52) изменилась на SDK17 (проблема с nrf_clock () в SDK17, см. DOCU)
- V2.02 (NRF52) Изменен на SDK17.0.2 и SES 5.10B (проблема с nrf_clock () в SDK17.0.2 Не зафиксирована в SDK17.0.2, см. DOCU)
- V2.10 (NRF52) Добавлена поддержка NRF52832
- V2.20 (NRF52) Добавлен образец для NRF52832 (конфигурация ввода/вывода для U-Blox Anna-B112-Module)
- V2.30 (NRF52) Добавлена печать идентификатора Flash для анализа в jesfs_main.c
- V2.54 (nrf52) добавлено 'tb_get_runtime ()' in tb_tools.c
- V2.55 (NRF52) Изменен на SDK17.1.0 и SES 5.42ab (проблема с nrf_clock () в SDK17.0.2 Не зафиксирована в SDK17.0.2, см. DOCU)
- V2.60 (NRF52) Используйте Global Macro $ SDK_ROOT
- V2.61 (SAMD20) Atmel SAMD20 внесла свой вклад ( Престижность !)
- V2.70 добавлен _feature supply_voltage_check ();
- V2.71 Все глобальные fs_-функции проверки _supply_voltage_check () на входе
- V2.72 jesfs_hl.c (файл v1.91)
Использование JESFS-Blackbox-Demo
Рекордер для домашнего использования
Многие технические устройства работают надежны в течение многих лет и годы, и никто не заботится о них. Но если они терпят неудачу, всегда есть вопрос: что пошло не так?
Именно там, где JESFS может стать чрезвычайно полезным.
Подробнее: blackbox_eval.pdf
Аппаратное обеспечение
Некоторые протестированные чипсы с серийным флешом
Широкий диапазон напряжения (1,6 В-3,6 В) и резервную силу с ультра-низкой силой:
- Macronix MX25R-серия (MX25RXX)
- Gigadevices GD25W-серии (GD25WD80C, GD25WQ64E, ...)
Используйте с NRF52-CPU:


Используйте с CC13XX/26XX-CPU:

Установка (для процессоров NRF52):
Построен с SES (v6.22a ( )) и SDK 17.1.0 ( : более поздние версии SES требуют измененных настройки проекта !!!)
Установите Macro $ SDK_ROOT, где найти SDK в SES -> Tools -> Опции -> Строительство: EG: «Глобальные макросы»: "SDK_ROOT = C: NORDIC NRF5_SDK_17.1.0_DDDE560"
Установите макрос платформы с помощью ввода-выводов (см. TB_Tools.h)
Необязательно исправить проблему с nrf_clock () (см. Docu tb_tools_nrf52.c/.h)