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

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

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

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

 

کتابخانه LittleFS

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

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

  • 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 استفاده می‌کنند.

برای اینکار ابتدا 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 را یاد گرفتیم و تشکر ویژه ای داریم از جناب آقای مهندس کاوه رفیعی برای تهیه این سری آموزشی.

برچسب ها

حمایت از Mahdi.h  

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

2 نفر

پــــســنــدیـده انـد

توجه

Mahdi.h  
Mahdi.h  

علاقه مند به سیستم های امبدد

دیدگاه ها

4 دیدگاه

  • نیما
    ۱۶ مرداد ۱۴۰۱

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

  • احمد
    ۱۳ مرداد ۱۴۰۱

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 10 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک