آموزش میکروکنترلر STM32F4 قسمت یازدهم : سمافور و موتکس

blog
۱۳۹۸-۰۳-۱۲
4 دقیقه

در قسمت دهم آموزش میکروکنترلر STM32F4 به سیستم عامل زمان واقعی (RTOS) و مبحث Thread پرداختیم. در این قسمت از آموزش میکروکنترلر STM32F4 به ادامه RTOS  و مباحث سمافور و موتکس می‌پردازیم. با سیسوگ همراه باشید.

 

سمافور

یکی از ساده ترین مفاهیم سیستم عامل سمافور (Semaphore) است. ممکن است شما منابعی داشته باشید که چند قسمت از سیستم شما تمایل به استفاده از آنها در یک زمان را داشته باشند. برای مثال، ممکن است چند بخش از برنامه شما بخواهند داده‌ای را از رم بخوانند یا در آن بنویسند. یک راه این است که محدودیتی نداشته باشید و به همه اجازه بدهید که هر بار می‌خواهند از رم استفاده کنند. ولی اگر برنامه شما دارای تابع‌های زیادی باشد و تعداد دسترسی‌ها به رم بیش از اندازه شود به احتمال زیاد باس داده و آدرس که به رم متصل هستند نمی‌توانند به همه این درخواست‌ها برسند. در اینجا می‌توانید برای حل مشکل و جلوگیری از قفل شدن سیستم یا کند شدن آن، محدودیتی روی تعداد درخواست‌هایی که رم می‌تواند بپذیرد قرار دهید. این مقدار در واقع توسط سمافور تعیین می‌شود.

 

سمافور semaphore

 

با یک سمافور دسترسی به یک گروه از وسایل جانبی مشابه، مدیریت می‌شود. تعداد منابع موجود، در پارامتر تابع osSemaphoreCreate  بیان می‌شود. هر بار با تابع osSemaphoreWait  یک token می‌گیرید و از شماره سمافور، یک عدد کم می‌شود. وقتی شماره سمافور، به صفر رسید، دیگر token نمی توان گرفت. برای آزاد کردن سمافور هم، از تابع osSemaphoreRelease استفاده می‌شود. این تابع شماره سمافور را یک عدد افزایش می‌دهد. در نهایت تابع osSemaphoreDelete نیز آن را پاک می‌کند.

تابع‌های تعریف شده

 

توابع semaphore

 

ماکروهای تعریف شده

 

ماکروهای semaphore

 

برنامه نمونه زیر طرز کار این سمافور را نشان می‌دهد. دو ریسمان در رقابت برای کسب token هستند. سمافور تک token است (تابع osSemaphoreCreate یک token برای سمافور ساخته است.) Thread اول هر سه میلی ثانیه بررسی می‌کند که آیا سمافور token دارد یا خیر. به مدت 1 میلی ثانیه نیز منتظر می‌ماند تا token را بگیرد. ولی Thread دوم که اولویت زیادی ندارد، همواره منتظر می‌ماند تا هر وقت که بلیتی در دسترس بود آن را بگیرد.

 

 

موتکس

موتکس (Mutex) برای هم آهنگی اجرای Thread ها به کار می رود. گاهی یک منبع، فقط باید هر بار، توسط یک Thread دستکاری شود. برای نمونه قسمتی از حافظه که به LCD نگاشته می‌شود. به نوعی، موتکس یک سمافور با تنها یک token است.

 

موتکس Mutex

تابع‌های تعریف شده

 

توابع mutex

 

ماکروهای تعریف شده

 

ماکروهای mutex

 

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

 

 

در قسمت دوازدهم آموزش میکروکنترلر STM32F4 به ابزارهای ارتباطی بین Thread ها خواهیم پرداخت. با سیسوگ همراه باشید.

اطلاعات
1
0
لینک و اشتراک
profile

ه. مرادمند

متخصص الکترونیک

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

profile
علي رضا گفت :
۱۳۹۹-۰۳-۱۰ ۱۱:۳۱

سلام و عرض ادب
ممنون از اين همه مهرباني ..
مي خواستم بدونم چرا در تابع
void WaitMutex (void)
از osMutexCreate به جاي osMutexWait استفاده كرده است؟
خيلي ممنون

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله