JESFS - نظام الملفات التسلسلية المدمجة لـ JO
للمعيار (المسلسل) النورش
فقط فكر في أشياء بسيطة للغاية مثل بيانات اللغة: على جهاز "صغير جدًا" مضمن (ليس شيئًا "كبيرًا" مثل Linux المضمّن ، ولكن شيء يمكن أن يعمل مع بطاريات صغيرة لسنوات): يتم دمجه بشكل شائع "في مكان ما في الكود".
من الصعب التغيير! ولكن إذا كانت بيانات اللغة في الملفات ، فإن التغييرات سهلة. نفس الشيء بالنسبة للرسومات ، الإعدادات ، كل شيء ... حتى أنه يسمح بتغيير البرامج الثابتة على الجهاز المدمج من العديد من المصادر المختلفة!
فكر في الأجهزة المدمجة ، حتى أنها يمكن أن تحصل على أحدث البرامج الثابتة الخاصة بها بنفسها! على سبيل المثال wifi ، الإنترنت المحمول ، البلوتوث ، UART ، رابط الراديو ، ...
فجأة جميع الخيارات مفتوحة! وإذا كان لديك مخاوف بشأن الأمن: لا تقلق: مشكلة تم حلها بالفعل ، كما سترى لاحقًا ..
كانت المشكلة الرئيسية لـ "الأجهزة الصغيرة جدًا" - حتى الآن - هي "نظام الملفات": الجميع يعرف "الدهون" ، "NTFS" ، ... لكن هل فكرت يومًا في نظام ملفات على شريحة صغيرة؟ أو حتى داخل وحدة المعالجة المركزية؟ لا مشكلة ، مع البرنامج الصحيح. هذا هو السبب في أنني كتبت
"JESFS - نظام الملفات التسلسلية المدمجة لـ JO"

[الصورة: 4MB JESFS على 2x3 مم]
عملي اليومي IST IoT. لأنني لم أجد أي حل عملي حقًا ، فقد قررت إنشاء خط خاص بي. كانت "المتانة" و "الأمن" و "البصمة الصغيرة" قيود التصميم الخاصة بي.
تم تصميم JESFS للاستخدام في "العالم الحقيقي" وللاستخدام مع ذكريات النورش التسلسلية القياسية ، مثل سلسلة M25R ، المستخدمة على NRF52840-DK ، NRF52832 و CC13XX/CC26XX LAUFTPADS ، والتي تتوفر حتى 16 ميغابايت ، أو حتى أكثر ...
بعض الأساسيات حول JESFS:
- ذاكرة الوصول العشوائي الفائقة وذاكرة الكود: يمكن استخدامها على أصغر MCU مع ذاكرة برنامج 8KBYTE فقط أو أقل (مثل سلسلة MSP430 الشهيرة ، تقريبًا جميع أنواع ذراع 32 بت (M0 ، M3 ، M4 ، ...)). فقط 200 بايت من ذاكرة الوصول العشوائي كافية!
- مفتوح المصدر بالكامل ، مجاني وكتاب في C.
- يعمل مع Flash التسلسلي من 8KBYTE إلى 16MBYTE (OPT. حتى 2GBYTE) ، ولكن يمكن أيضًا استخدامها مع NOR-FLASH الداخلي.
- يعمل جنبًا إلى جنب مع محمل التمهيد الآمن Ultra-Small JESFSBOOT (يتطلب أقل من 8 كيلو بايت على نوى الذراع القياسية ، بما في ذلك محرك تشفير AES-128 للاحتفالات التي يمكن الاعتماد عليها في الهواء ("OTA")).
- يتضمن تسوية التآكل الأمثل (لأقصى عمر للذاكرة).
- نقل البيانات السريع للغاية (على سبيل المثال ملفات القراءة: 3.7 ميجابايت/ثانية على NRF52840).
- تمت إضافة وضع خاص للسماح بملايين دورات الكتابة ، وخاصة بالنسبة لجمع البيانات وتقارير الأحداث والدورة المجردة.
- JESFS ثابتة: لا يوجد فقدان البيانات على فقدان الطاقة أو إعادة تعيينه.
- تم تصميمه لـ (تقريبًا) جميع المواقف ، حيث يمكن استخدام أو الذكريات (تلك التي يمكن حذف الكتل فقط (0-> 1) و 0 مكتوبة فقط.
- تم اختباره مع: Macronix MX25RXX ، GigAdevices GD25WDXX و GD25WQXX ، ...
- تايلانديات بصرامة لأنظمة مضمنة منخفضة الطاقة
- تم تصميمه لاستخدام ميزة RTOs الأساسية ، ولكن يمكن استخدامها أيضًا مستقلة.
- تطبيقات عينة من NRF52840/NRF52832-DK ، LaunchPads CC13XX/26XX ، ATMEL SAMD20 ، Windows-PC وغيرها (الوثائق PDF: JESFS.PDF)
- سهل الاستخدام مع واجهة برمجة التطبيقات البديهية:
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 و windows
- V1.5 (NRF52) NRF52840 PORT
- V1.51 (NRF52) NRF52840 يدعم النوم/الاستيقاظ العميق (النوم العميق مع RTC النشط والاحتفاظ بالذاكرة الكاملة <3UA)
- تمت إضافة v1.6 'fs_disk_check ()': فحص قرص دقيق
- V1.61 (NRF52) مستحضرات التجميل المصدر وخفض ساعة SPIM الافتراضية إلى 16 ميجا هرتز على NRF52840 (الموصى بها 32 ميجا هرتز فقط بدون SoftDevice)
- تمت إضافة V1.7 (NRF52) لـ U-BLOX NINA-B3
- V1.8 أضيفت الوقت مع "!" و UART-RX-ERROR
- 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 (تكوين I/O للوحدة UNA-B112-Mode)
- v2.30 (NRF52) أضيفت طباعة معرف الفلاش للتحليل في JESFS_MAIN.C
- V2.54 (nrf52) أضيفت "tb_get_runtime () 'في 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_-Functions Global
- v2.72 JESFS_HL.C (ملف v1.91)
باستخدام JESFS-Blackbox-Demo
مسجل رحلة للاستخدام المنزلي
تعمل العديد من الأجهزة التقنية الموثوقة لسنوات وسنوات ولا أحد يهتم بها. ولكن إذا فشلوا ، فهناك دائمًا السؤال: ما الخطأ الذي حدث؟
هذا هو حيث يمكن أن تصبح JESFS مفيدة للغاية.
اقرأ المزيد: Blackbox_eval.pdf
الأجهزة
تم اختبار بعض رقائق الفلاش التسلسلية
نطاق الجهد العريض (1.6 فولت-3.6 فولت) والاستعداد المتطرف للغاية:
- Macronix MX25R-Series (MX25RXX)
- Gigadevices GD25W-Series (GD25WD80C ، GD25WQ64E ، ...)
استخدم مع NRF52-CPUS:


استخدم مع CC13xx/26xx-Cpus:

التثبيت (ل CPU NRF52):
بنيت مع SES (v6.22a ( )) و SDK 17.1.0 ( : تتطلب الإصدارات اللاحقة من SES إعدادات المشروع المتغيرة !!!)
قم بتعيين Macro $ SDK_ROOT حيث يمكن العثور على SDK في SES -> الأدوات -> الخيارات -> البناء: على سبيل المثال: "وحدات الماكروز العالمية": "SDK_ROOT = C: Nordic nrf5_sdk_17.1.0_ddde560"
قم بتعيين Macro من النظام الأساسي مع I/O-Pins (انظر tb_tools.h)
إصلاح مشكلة اختياريا مع nrf_clock () (انظر Docu tb_tools_nrf52.c/.h)