سلام
مدتیه که میکروکنترلرهای مبتنی بر پردازنده آرم بین ما ایرانی ها خیلی رایج شده و میشه گفت به زودی جای avr های هشت بیتی رو میگیره. هرچند یکم دیر اتفاق افتاد...
این میکروکنترلرها مجهز به پردازنده های ARM با کارایی نسبتا بالا هستن. البته ما این عملکرد خوب رو بیشتر به فرکانس کلاک می شناسیم. اما آیا ما تونستیم اونطور که باید از این قدرت میکروکنترلرهای آرم استفاده کنیم؟
چند وقت پیش تاپیکی باز شده بود که چرا فرکانس PIO میکروهای AT91SAM7S/X اینقدر پایینه؟ چه فایده ای داره فرکانس کلاک (و سرعت پردازش پردازنده) بالا باشه اما باس پریفرال با سرعت بالا نداشته باشه و ... دوستان هم جواب های خوبی دادن و مبکروهای دیگه ای هم معرفی شد مخصوص این کار...
اما پس این میکروها چی؟ پردازنده با فرکانس کلاک بالا رو واسه بالابردن کلاس میکرو گذاشتن؟
تو یه پروژه نسبتا حرفه ای و صنعتی، مسئله انجام یکی دو تا وظیفه (task) که نیست. وقتی قرار باشه میکرو تعداد زیادی سنسور و actuator (محرک) رو کنترل کنه، مسئله کارایی خودش رو نشون میده. اینجا به قدرت پردازش بالا نیاز داریم که بتونیم همزمان همه تسک ها رو فعال نگه داریم. پروژه ای رو درنظر بگیرین که قراره از 70 تا سنسور اطلاعات بگیریم پردازش کنیم و به 30 تا actuator فرمان بدیم. (یه پروژه صنعتی نسبتا ساده!!) میکروهای ARM بخاطر فرکانس بالا می تونن گزینه خوبی باشن. اما نوشتن همچین برنامه ای کار ساده ایه؟ توجه کنید که قرار نیست یه حلقه بنویسیم و شروع کنیم یکی یکی سنسورها رو بخونیم و اون لابه لا توابعی رو صدا کنیم و همه چی به خوبی و خوشی...
هر کدوم شرایط خاص خودشون رو دارن. مسئله زمان بندی تسک ها مطرح میشه. بعضا باید همزمان اجرا بشن و نتایح در یک زمان آماده باشه. ممکنه تسک ها رو هم تاثیر داشته باشن. مسئله وابستگی داده ها هست. اشتراک منابع. مسئله اولویت بندی. خیلی از تسک ها ممکنه مدتی کاری واسه انجام دادن نداشته باشن و یا منتظر یک رویداد باشن. با توجه به منابع محدودی که واسه وقفه داریم عملا نمیشه تو یه حلقه معمولی همچین برنامه نوشت و همه تسک ها رو کنترل کرد. اگرم اینطوری سیستم رو پیدا کنیم، مطمئنا به نصف اون کارایی که میشد برسیم نرسیدیم و این میکرو با قدرت پردازش بالا نتونسته کمک خاصی بهمون بکنه.
اینجاست که پای سیستم عامل (به مخصوص از نوع بی درنگ یا realtime) تو طراحی مون باز میشه. با وجود یک سیستم عامل می تونیم همه این تسک ها رو جدا از هم بدون هیچ نگرانی بنویسیم. سیستم عامل با توجه به طراحی ما، مدیریت اجرای تسک ها رو به عهده می گیره. اجرای همزمان تعداد زیاد تسک بدون ایجاد اختلال در عملکرد سیستم، احتیاج به فرکانس کلاک و کارایی بالا داره و اینجاست که میکروکنترلرهای ARM خودشون رو نشون میدن. ساده بگم مثل اینه که 20 تا mega16 رو بذارین کنار هم (با کمی کم لطفی!).
سیستم عامل مزایای دیگه ای هم داره. امکان تقسیم ساده وظایف در پروژه و انجام پروژه بصورت گروهی. ساده شدن عملیات خطایابی با تست تسک ها. امکان گسترش سیستم در مراحل بعد و خیلی دیگه بیشتر از این مجالش نیست!!
به امید خدا تو این تاپیک می خوام نحوه استفاده از سیستم عامل RTX رو بنویسم. تا از این به بعد همه تو پروژه هامون از این سیستم عامل استفاده کنیم و کارامون حرفه ای تر بشه. سیستم عامل های دیگه هم هست. هرکی تونست سیستم عامل های دیگه ای راه بندازه بیاد معرفی کنه. RTX نسبتا خیلی ساده و کتابخونه های خوبی داره. پشتیباتی از شبکه CAN (اینو خودم راه انداختم که بعد از بحث سیستم عامل درموردش مفصل میگم). TCPnet. پشتیبانی از حافظه های FLASH (نمی دونم دقیقا منظورش چیه!). خوبی این کتابخونه ها اینه که بدون درگیرشدن با رجیسترها و مهمتر اینکه با پشتیبانی از امکانات realtime میشه برنامه نویسی کرد.
از اونجایی که می ترسیدم نتونم ادامه بدم و نکنه که شرمنده بشم، تا چندتا پست بعد مطالب رو آماده کردم و کم کم بعد از ویرایش میذارم. خواهشا پست اضافه ندین. اگرم سوالی دارین نپرسین! شوخی کردم بپرسین. اما بذارین چندتا پست بذارم بعد... می خوام بعدها که کسی وارد تاپیک شد بفهمه موضوع جدی دنبال شده و بی تفاوت از کنارش نگذره.
مدتیه که میکروکنترلرهای مبتنی بر پردازنده آرم بین ما ایرانی ها خیلی رایج شده و میشه گفت به زودی جای avr های هشت بیتی رو میگیره. هرچند یکم دیر اتفاق افتاد...
این میکروکنترلرها مجهز به پردازنده های ARM با کارایی نسبتا بالا هستن. البته ما این عملکرد خوب رو بیشتر به فرکانس کلاک می شناسیم. اما آیا ما تونستیم اونطور که باید از این قدرت میکروکنترلرهای آرم استفاده کنیم؟
چند وقت پیش تاپیکی باز شده بود که چرا فرکانس PIO میکروهای AT91SAM7S/X اینقدر پایینه؟ چه فایده ای داره فرکانس کلاک (و سرعت پردازش پردازنده) بالا باشه اما باس پریفرال با سرعت بالا نداشته باشه و ... دوستان هم جواب های خوبی دادن و مبکروهای دیگه ای هم معرفی شد مخصوص این کار...
اما پس این میکروها چی؟ پردازنده با فرکانس کلاک بالا رو واسه بالابردن کلاس میکرو گذاشتن؟
تو یه پروژه نسبتا حرفه ای و صنعتی، مسئله انجام یکی دو تا وظیفه (task) که نیست. وقتی قرار باشه میکرو تعداد زیادی سنسور و actuator (محرک) رو کنترل کنه، مسئله کارایی خودش رو نشون میده. اینجا به قدرت پردازش بالا نیاز داریم که بتونیم همزمان همه تسک ها رو فعال نگه داریم. پروژه ای رو درنظر بگیرین که قراره از 70 تا سنسور اطلاعات بگیریم پردازش کنیم و به 30 تا actuator فرمان بدیم. (یه پروژه صنعتی نسبتا ساده!!) میکروهای ARM بخاطر فرکانس بالا می تونن گزینه خوبی باشن. اما نوشتن همچین برنامه ای کار ساده ایه؟ توجه کنید که قرار نیست یه حلقه بنویسیم و شروع کنیم یکی یکی سنسورها رو بخونیم و اون لابه لا توابعی رو صدا کنیم و همه چی به خوبی و خوشی...
هر کدوم شرایط خاص خودشون رو دارن. مسئله زمان بندی تسک ها مطرح میشه. بعضا باید همزمان اجرا بشن و نتایح در یک زمان آماده باشه. ممکنه تسک ها رو هم تاثیر داشته باشن. مسئله وابستگی داده ها هست. اشتراک منابع. مسئله اولویت بندی. خیلی از تسک ها ممکنه مدتی کاری واسه انجام دادن نداشته باشن و یا منتظر یک رویداد باشن. با توجه به منابع محدودی که واسه وقفه داریم عملا نمیشه تو یه حلقه معمولی همچین برنامه نوشت و همه تسک ها رو کنترل کرد. اگرم اینطوری سیستم رو پیدا کنیم، مطمئنا به نصف اون کارایی که میشد برسیم نرسیدیم و این میکرو با قدرت پردازش بالا نتونسته کمک خاصی بهمون بکنه.
اینجاست که پای سیستم عامل (به مخصوص از نوع بی درنگ یا realtime) تو طراحی مون باز میشه. با وجود یک سیستم عامل می تونیم همه این تسک ها رو جدا از هم بدون هیچ نگرانی بنویسیم. سیستم عامل با توجه به طراحی ما، مدیریت اجرای تسک ها رو به عهده می گیره. اجرای همزمان تعداد زیاد تسک بدون ایجاد اختلال در عملکرد سیستم، احتیاج به فرکانس کلاک و کارایی بالا داره و اینجاست که میکروکنترلرهای ARM خودشون رو نشون میدن. ساده بگم مثل اینه که 20 تا mega16 رو بذارین کنار هم (با کمی کم لطفی!).
سیستم عامل مزایای دیگه ای هم داره. امکان تقسیم ساده وظایف در پروژه و انجام پروژه بصورت گروهی. ساده شدن عملیات خطایابی با تست تسک ها. امکان گسترش سیستم در مراحل بعد و خیلی دیگه بیشتر از این مجالش نیست!!
به امید خدا تو این تاپیک می خوام نحوه استفاده از سیستم عامل RTX رو بنویسم. تا از این به بعد همه تو پروژه هامون از این سیستم عامل استفاده کنیم و کارامون حرفه ای تر بشه. سیستم عامل های دیگه هم هست. هرکی تونست سیستم عامل های دیگه ای راه بندازه بیاد معرفی کنه. RTX نسبتا خیلی ساده و کتابخونه های خوبی داره. پشتیباتی از شبکه CAN (اینو خودم راه انداختم که بعد از بحث سیستم عامل درموردش مفصل میگم). TCPnet. پشتیبانی از حافظه های FLASH (نمی دونم دقیقا منظورش چیه!). خوبی این کتابخونه ها اینه که بدون درگیرشدن با رجیسترها و مهمتر اینکه با پشتیبانی از امکانات realtime میشه برنامه نویسی کرد.
از اونجایی که می ترسیدم نتونم ادامه بدم و نکنه که شرمنده بشم، تا چندتا پست بعد مطالب رو آماده کردم و کم کم بعد از ویرایش میذارم. خواهشا پست اضافه ندین. اگرم سوالی دارین نپرسین! شوخی کردم بپرسین. اما بذارین چندتا پست بذارم بعد... می خوام بعدها که کسی وارد تاپیک شد بفهمه موضوع جدی دنبال شده و بی تفاوت از کنارش نگذره.
دیدگاه