STM32, ARM, توصیه شده, کتابخانه, معرفی, مقاله های سیسوگ, میکروکنترلر

کار با ایسی های حافظه در STM32 با littleFS (بخش دوم)

کار با ایسی های حافظه در STM32 با littleFS (بخش دوم)

در بخش قبل به معرفی Spi Flash و کاربرد هایش پرداختیم همچنین با راه اندازی و نحوه ارتباط با آن اشنا شدیم همچنین به صورت کوتاه به lfs و مزیت آن نسبت به بقیه fileSystem ها پرداختیم. در این بخش کار با ایسی های حافظه در STM32 با littleFS را آموزش داده و با کانفیگ و راه اندازی آن آشنا می‌شویم.

 

کتابخانه LittleFS

ابتدا کتابخانه littleFS را دانلود کنید، سورس فایل‌ها و هدر آن را به پروژه اضافه کنید.

در فایل lfs_util.h  قابلیت های lfs مانند تصویر زیر تنظیم کنید.

کار با ایسی های حافظه در STM32 با littleFS (بخش دوم)

  • LFS_YES_TRACE  فعال کردن TRACE برای دیباگ کردن
  • LFS_NO_MALLOC  غیر فعال کردن استفاده از حافظه پویا

 

استراکچرها و بافرهای littleFS

 

آرایه‌ها برای نوشتن و خواندن در فایل‌ها

 

ایجاد ارتباط بین توابع spi flash و littleFS

به کمک کد زیر توابعی که برای w25q نوشتیم را به lfs معرفی می‌کنیم.

اگر به جای w25q قصد داشتید از Fhash داخلی میکرو (یا spiFlash دیگری) استفاده کنید، کافی است توابع erase, read, write مربوطه را قرار دهید.

کانفیگ کردن lfs

  •     read_size  (سایز صفحات ایسی) = 256
  •     prog_size (سایز صفحات ایسی) = 256
  •     block_size  (سایز سکتور ایسی(تعداد بایت)) = 4096
  •     block_ count تعداد سکتور موجود در ایسی مثلا w25q16 تعداد بلاک‌ها 512 می‌باشد
  •     cache_size برابر است با read_size
  •     lookahead_size حاصل block_ count /8

 

دیباگ در littleFS

جهت استفاده از قابلیت دیباگ lfs باید تابع printf را به uart میکروکنترلر ریدایرکت کنیم  زیرا trace ها در lfs از printf استفاده می‌کنند.

کار با ایسی های حافظه در STM32 با littleFS (بخش دوم)

کار با ایسی های حافظه در STM32 با littleFS (بخش دوم)

برای اینکار ابتدا uart سخت افزاری را کانفیگ می‌کنیم.

برای ارسال یک بایت دیتا از ریجستر tdr استفاده می‌کنیم

 

نحوه ریدایرکت کردن printf در keil

در پنجره اصلی برنامه Keil، گزینه Project را انتخاب می‌کنیم و از بخش Manage زیر منو Run-Time Environment را کلیک می‌کنیم. در پنجره باز شده از زیرمنوی Compiler پارامتر STDOUT را تغییر می‌دهیم:

printf keil

سپس یک عدد template  جدید ایجاد می‌کنیم:

printf keil

کد زیر را در آن قرار میدهیم

اکنون توانسیم ریجستر trd را به printf اتصال دهیم و از قابلیت‌های آن استفاده کنیم.

 

کد تست littleFS

کد زیر را در داخل فایل main قرار دهید، و برنامه را کامپایل کنید.

اکنون در صورتی که تمام کانفیگ‌ها درست باشند، Little پیغام زیر را میدهد.

littlefs stm32 w25q

 

 نمونه کد برای خواندن فایلی که ایجاد کردیم:

 

به این صورت کار با ایسی های حافظه در STM32 با littleFS را یاد گرفتیم و تشکر ویژه ای داریم از جناب آقای مهندس کاوه رفیعی برای تهیه این سری آموزشی.

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

6 دیدگاه در “کار با ایسی های حافظه در STM32 با littleFS (بخش دوم)

  1. Avatar for J J گفت:

    با تشکر از مطلب خوبتون،
    لطفا توضیح میفرمایید که که هرکدام از تیکه هایی که فرمودین باید به کدام فایل اضافه بشه؟

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      خواهش میکنم
      اگر با دقت بیشتری بررسی کنید همه مراحل لازم در مطلب ذکر شده

  2. Avatar for نیما نیما گفت:

    باسلام و تشکر فراوان بابت مطلب و سایت خوبتون
    بنظرم بهتر باشه یک مقدار در مورد کدها توضیح هم داده بشه
    الآن فقط کاربری کتابخانه گفته شده
    مثلاً من متوجه نشدم مزیت فایل سیستم به نسبت نوشتن توابع خواندن و نوشتن بصورت مستقل چیه؟!

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام خواهش میکنم.
      نکته اول رو موافقم?
      اما در مورد نکته دوم ، توی قسمت قبل این نکات توضیح داده شده ، اون رو هم بررسی کردید ؟!
      https://sisoog.com/2022/07/24/spiflash-littlefs-1/

  3. Avatar for احمد احمد گفت:

    بسیارعالی، مطلب جالبی بود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *