تنظیمات فایل کانفیگ:
فایل config که به پروژه اضافه کردین رو تو محیط uVision باز کنید. پایین ادیتور روی Configuration Wizard کلیک کنید. اینطوری می تونین بدون درگیر شدن با کدها، تنظیمات رو اتجام بدین.
در بخش Task configuration ، جلوی Number of concurrent running tasks باید تعداد تسک ها مشخص بشه.
قسمت Task Stack size مربوط به حافظه استک اختصاص داده شده به هر تسک هست و هر چه برنامه بزرگتر شه باید این مقدارو بیشتر کنید(با توجه به پروژتون و در واقع باید تست کنید بهینه ترین حالت رو پیدا کنید --> اگه کمتر از نیاز برنامه باشه RTX هنگ می کنه) اگر در مورد خود Stack سوالی هست بپرسین پیشتر توضیح بدم.
در بخش Tick Timer Configuration تنظیمات زمانی انجام میشه. کرنل نیاز به یک سخت افزار تایمر داره که دائم طی بازه زمانی مشخصی توسط اون تایمر صدا زده بشه تا مدیریت تسک ها و اعمال سیستم عامل رو انجام بده. تایمر با وقفه دادن مکرر در فاصله زمانی مشخصی که تعیین می کنیم، اصطلاحا Tick رو ایجاد میکنه و با هر Tick تابع مدیریت سیستم صدا زده میشه. زمان مشخص شده برای Tick خیلی مهمه. تمام توابع سیستم عاملی که به نوعی با زمان در ارتباط هستن، با ضریبی از زمان Tick کار میکنن.
در قسمت Hardware timer می تونین یکی از تایمرها رو انتخاب کنید. جلوی Timer clock value باید فرکانس کلاکی که به تایمر وارد میشه رو تعیین کنید. Timer tick value مدت زمان Tickرو تعیین میکنه. مثلا 10000 میکرو ثانیه (10 میلی ثانیه).
در بخش System configuration اگه گزینه Round Robin task switching انتخاب شده باشه، طبق الگوریتم Round Robin، تسک ها بصورت چرخشی سوییچ میشن. جلوی Round Robin timout باید مشخص کنید که به هر تسک به اندازه چند Tick فرصت پردازش داده بشه. مثلا اگه 5 باشه، و زمان هر Tick هم 10 میلی ثانیه باشه، به هر تسک در هر بار 50 میلی ثانیه فرصت پردازش داده خواهد شد. این همون قطعه زمانی که تو پست مربوط به multitask و scheduler گفتم. همونطور که می بینید scheduler یکی از همون قسمت هایی که با Tick کار میکنه.
هرچقدر زمان Tick کمتر باشه، سیستم عامل با دقت و سرعت بیشتری کار میکنه. اما به همون اندازه که زمان Tick رو کم می کنید، توابع سیستم عاملی بیشتر صدا زده میشن، میزان بیشتری از زمان پردازش رو سیستم عامل میگیره. تو هلپ کیل پیشنهاد کرده زمان Tick بین 1 تا 100 میلی ثانیه باشه. بستگی به سخت افزار و میکرویی که استفاده میکنین داره...
اگه Round Robin رو غیر فعال کنین، جابجایی تسک ها بصورت خودکار (در اون بازه زمانی مشخص) انجام نمیشه و فقط دستورات مدیریتی که تو تسک ها می نویسین روند اجرا رو مشخص میکنه.