فایل سیستم در STM32

در این مقاله قصد داریم به بررسی و پیاده سازی فایل سیستم FAT32 بر روی حافظه های SD CARD بپردازیم.

قبل از آن لازم است توضیحی در خصوص کارت های حافظه و نحوه ارتباط با آنها و لازمه پیاده سازی فایل سیستم بر روی آنها توضیحی دهم.

حافظه های فلش هم اکنون یکی از رایج ترین حافظه ها در جهان می باشند که به صورت های مختلف هم چون DataFlash,NandFlash,SD CARD در دسترس می باشند.

در این مقاله تمرکز اصلی ما بر روی حافظه های SD CARD می باشد که دارای حجم های بسیار متنوعی می باشند و به فراوانی در دسترس هستند.

این کارت های حافظه از یک سخت افزار جهت تبادل اطلاعات استفاده میکنند که در داخل خود دارای یک پردازنده برای ارتباط با دنیای خارج از یک طرف و ارتباط با حافظه داخلی میکرو از طرف دیگر هستند.

در شکل بالا پین های خروجی حافظه SD نمایش داده شده است ( اطلاعات بیشتر از کارت های حافظه )

همانظور که در شکل بالا مشخص است حافظه SD دارای 8 پین می باشد که دوپین آن مربوط به تغذیه 3.3 ولتی بوده و ما بقی پین ها مربوط به دو روش ارتباط با SD کارت می باشد.

روش اول ارتباط 4 سیمه یا SPI می باشد (اطلاعات بیشتر از SPI)

در این روش داده ها به صورت سریال و تک بیتی ارسال و دریافت میگردد و از انجایی که بیشتر میکروکنترلر ها دارای این پروتکل ارتباطی هستند روش مناسبی برای میکروکنترلر های کوچک و ارزان قیمت برای ارتباط با حافظه می باشد.

روش دوم ارتباط SDIO

در این روش برای افرایش سرعت خواندن و نوشتن بر روی حافظه 4 خط داده در نظر گرفته شده است که باعث افزایش چشمگیر سرعت ارتباطی با حافظه شده است ولی از این حالت ارتباطی اغلب میکروکنترلر های ARM پشتیبانی میکنند وحتی در میکروکنترلر های ARM STM32 هم تمامی آنها از این مد ارتباطی پشتیبانی نمیکنند.

در برد آموزشی STM32F107 گروه نامینیک حافظه با استفاده از مد SPI به میکروکنترلر متصل شده است.

کارت حافظه دارای خانه هایی به نام سکتور می باشد که با توجه به حجم کارت حافظه تعداد سکتورها مشخص میشود.

هر سکتور دارای 512 بایت می باشد که اطلاعات در این خانه ها ذخیره میشوند و در مجموع کارت حافظه دارای یک سری سکتور با آدرس مشخص و دادهایی است که در آنها ذخیره شده است می باشد.

با راه اندازی واحد SPI و داشتن یک درایور ساده برای ارتباط با حافظه ها به راحتی میتوانید بر روی سکتورهای کارت حافظه بخوانید و بنویسید.(راه اندازی واحد SPI برای ارتباط با SD , راه اندازی درایور مورد نیاز برای توشتن و خواندن سکتورها)

پس از اینکه قادر به برقراری ارتباط با حافظه شدیم این سوال مطرح میشود که این انبوه عظیمی از سکتورها را به چه شکل نظم داده و دسترسی به اطلاعات ذخیره شده را مرتب و منظم نماییم.البته اگر ما همیشه یک فایل برای ذخیره سازی داشته باشیم شاید مشکل کمی داشته باشیم ولی مشکل زمانی بزرگ میشود که تعداد فایل ها زیاد شده و بایستی ساز و کاری برای نظم دهی به آنها پیدا نماییم.

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

فایل سیستم علاوه بر اینکه در نظم دهی فایل ها برای ما بسیار موثر واقع میشود یک سیستم استاندارد و یکپارچه برای انتقال فایل ها از سیستمی به سیستمی دیگر را فراهم میسازد به این صورت که زمانی شما فایل را در کارت حافظه در سیستم عامل ویندوز ایجاد میکنید به راحتی میتوانید دادهای همان فایل را در سیستمی دیگر مثلا در میکرو STM32 نیز در دسترس داشته باشید.

فایل سیستم صرفا یک کتابخانه نرم افزاری است و هیچ ارتباطی به قابلیت حافظه SD کارت ندارد.کتابخانه های متعددی در جهان برای انجام این امر بر روی میکروکنترلر ساخته شده اند که شاید یکی از مهم ترین شرکت های پیشتاز شرکت Segger میباشد البته همه ما این شرکت با پروگرامر های معروفش با نام J-link میشناسیم.

با گشتی در Segger کتابخانه های فایل سیستم برای راه اندازی SD کارت با قابلیت های فراوان را با نام emFile پیدا میکنیم.کتابخانه ای بسیار عالی همراه با مثال های راه انداز اولیه و کلیه آموزش ها برای کار با آن.حالا زمان استفاده از این کتابخانه می باشد.متاسفانه این کتابخانه رایگان نمی باشد و هزینه ای در حدود 5000 یورو دارد(قیمت کتابخانه emFile) که حتی قبل از گرانی دلار پرداخت چنین پولی بسیار دور از ذهن بود.

پس راه چاره چیست؟

استفاده از کتابخانه متن باز

خوشبختانه برای فایل سیستم یک کتابخانه متن باز وجود دارد که تمام دنیا از آن استفاده میکنند به نام chan و ما هم  از این کتابخانه استفاده کرده ایم.

ولی سوالی که برای همه ما پیش می آید اینکه با وجود کتابخانه های متن باز چگونه کتابخانه غیر متن باز به فروش میرسند.نکته در این موضوع نهفته است که کتابخانه متن باز هیج گونه پشتیبانی نداشته و شما هستید و جستجو در نت ولی کتابخانه ای که به فروش میرسد اغلب تا زمانی که بر روی سخت افزار شما راه اندازی نشود شرکت فروشنده شما را تنها نمی گذارد علاوه بر آن همراه با فروش کتابخانه دوره آموزشی کار با کتابخانه هم گذاشته میشود.

 

حالا نوبت به پورت کردن این کتابخانه برای میکروکنترلر میشود

کتابخانه متن باز chan نیاز به 5 تابع در قسمت پایین دستی خود دارد تا شما بتوانید در لایه application از توابع این کتابخانه استفاده نمایید.

این پنج تابع شامل توابع زیر میباشند :

BEGIN INIT , Gets Disk Status, Reads Sector,Writes Sector,control operation 

با تنظیم این توابع برای هر حافظه ای با استفاده از کتابخانه متن باز chan میتوانید فایل سیستم را برای هر حافظه ای داشته باشید.

تنظیم این توابع و اضافه کردن کتابخانه های متن باز chan به خودی خود کاری دشوار و دارای پیچیدگی های خاص خود می باشد که برای میکروکنترلر STM32 با استفاده از نرم افزار CUBEMX این مهم ساده ، آسان و در دسترس شده است.

برای برد آموزشی STM32F107 گروه نامینیک ما پروژه ای را برای راحتی کار هر چه بیشتر و آشنایی با مفاهیم توضیح داده شده آماده کرده ایم.

مشاهده و دریافت پروژه این مقاله

مشاهده فایل main برنامه

مشاهده 5 تابع پورت شده برای فایل سیستم

 

در این مثال یک فایل TXT با نام STM32.TXT ایجاده شده و سپس یک متن در داخل آن نوشته میشود و سپس فایل بسته شده و مجدد باز میشود و متن داخل فایل خوانده میشود.

در صورتی که حافظه SD را از داخل برد آموزشی برداشته و آن را داخل سیستم کامپیوتری خود قرار دهید فایل ساخته شده و متن داخل آن را میتوانید مشاهده نمایید.

راه اندازی فایل سیستم ا استفاده از کتابخانه های RL-ARM نرم افزار KEIL

برای شروع کار با میکروکنترلر های محبوب STM32 میتوانید از آموزش های نامینیک شروع نمایید.

آموزش ARM به روش ST

 

 

 

مقالات

نظر بدهید

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

-- بارگیری کد امنیتی --

مطلب قبلی
فایل سیستم در STM32
مطلب بعدی
آموزش ميكروكنترلر ARM به روش ST