PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال نصب سیستم عامل فمتو رو میکروکنترولر avr



عرفان سلیم زاده
26th April 2012, 04:52 PM
با سلام[shaad]
من تازه کار با میکروکنترولر ها رو دارم شروع می کنم و اطلاعات زیادی ندارم
از وقتی که کار با میکرو ها رو شروع کردم گفتم دو تا کار رو پیش زمینه پروژه هام کنم
1- از حداکثر فرکانس کلاک میکرو استفاده کنم که 16 مگ هستش
2- از یک سیستم عامل جهت بهینه سازی کارکرد سخت افزار های میکرو استفاده کنم که در اینجا سیستم عامل فمتو هستش
میکرو کنترولری که دارم استفاده میکنم از خانواده مگا و 32 هستش.
فکر میکنم با انجام این دوتا میشه کار های سخت تر و پیچیده تری رو با میکرو انجام داد مثلا ساخت دستگاهای تمام اتوماتیک یا این که کار ها رو دقیق تر انجام بده.
در مورد سیستم عامل میکرو چون فمتو بهترین نوع کد نویسی رو بین بقیه داره به کم حجم ترین سیستم عامل برای میکرو ها لقب گرفته.
میخوام که در مورد نصب این سیستم عامل رو ATMEGA32 بدونم و این که برنامه نویسی میکرو چه تغییری با قبل میکنه.
اصلا به چه دردی میخوره؟

عرفان سلیم زاده
27th April 2012, 10:39 AM
یه توضیح مختصری در مورد سیستم عامل های بلادرنگ بدم.البته خواهشمندم که متن منو حتما یه تصحیح بفرمایید که شرمنده دوستان نشم.
سیستم عامل های بلادرنگ در واقع میاد سه تا کار رو انجام میده:
1- کاری میکنه که بتونیم هم زمان چند عملیات رو انجام بدیم.
2- استفاده از cpu میکرو برای انجام عملیات های دیگه در زمان های وقفه
میکرو کنترولر ها یه چیزی به نام وقفه دارند که کارش خوندن عدد از تایمر شمارنده میکرو در زمان های مورد نیاز است.
در این زمان که معمولا چند میلی ثانیه هم میرسه عملیات روی برنامه متوقف میشه تا اگر عدد مناسب تو شمارنده نشان داده شد سریع خوانده بشه تا در عملیات بکار گرفته بشه.
سیستم عامل میاد در این زمان عملیات های دیگه روی برنامه های دیگه میکرو انجام میده.در این صورت هم مورد 1 شدنیه و هم مورد 2 باعث کاهش بیکاری میکرو میشه.
3- سیستم عامل برنامه نویسی رو ساده تر میکنه چون میتونیم یک عملیات رو به چند زیر مجموعه تبدیل کنیم و همین کار حجم برنامه نویسی رو کمتر میکنه.
مرسی[golrooz]

عرفان سلیم زاده
27th April 2012, 02:02 PM
سلام
این پست رو اختصاص میدم به معرفی سیستم عامل فمتو:


ایا سیستم های نصب شده کوچک نیاز به سیستم عامل چند کاره دارند؟
ایا نمی توان صرفا همه چیز را در یک حلقه بزرگ برنامه نویسی کنید؟مطمئنا می توانبد.
اما ایا تا به حال متوجه مدت انتظار بین روشن کردن dvd player خود و اولین نشانه های راه انداری سیستم در پاسخ به دکمه (play) شده اید؟
شرط می بندیم که داخل ان سیستم عاملی وجود ندارد.فقط دارای یک حلقه (loop) بزرگ است. به راحتی میتوان این کار را به نحو بهتری انجام داد زیرا حتی برای کوچک ترین میکروکنترولر ها نیز سیستم عامل وجود دارد.
------------------------------------------------------------------------------------------------------------------
سوال بعدی این است:
ایا بهتر نیست سیستم عاملی برای خود بنویسید؟در ویکیپدیا تقریبا 100 سیستم عامل از پیش لیست شده اند اما صرف نظر ار سیستم های اختصاصی و سیستم هایی که چندان ارتقا نیافته اند، این لیست واقعا کوتاه است.احتمالا تنها سیستم عاملی که برای 8 کیلو بایت حافظه فلش و 512 بایت RAM مناسب بوده و مفید واقع می شود،سیستم عامل فمتو است.
این سیستم عامل توسط دکتر R.Vlaming MSC نوشته شده است تا سیستم عاملی چند کاره(multi task) و برای بسیاری از کاربرد های گوناگون کارامد باشد. واژه فمتو در سیستم عامل فمتو نشان می دهد که این سیستم عامل در واقع بسیار کوچک است.

اهداف
سیستم عامل فمتو یک سیستم عامل چند کاره بلادرنگ (RTOS) با طرحی نسبتا جامع می باشد.این سیستم عامل قابل انتقال بوده و در حال حاضر با 44 میکروکنترولر AVR متعلق به ATMEL سازگار می باشد.
فمتو متن باز بوده و تحت لیسانس GPLV3 می باشد.سیستم عامل فمتو از جنبه های گوناگونی متفاوت با دیگر سیستم عامل ها می باشد.
نخست این که برای RAM و حافظه فلش بسیار مقرون به صرفه است و تنها چیزی که واقعا به ان نیاز دارید کامپایل کردن به داخل KERNEL است.
به عنوان مثال میتوانید 8 TASK مستقل روشن و خاموش شدن led را در یک بایت از فلش و فقط 47 بایت از ram اجرا کنید. یا می توانید ارتباطاتی را به صورت سری و توسط یک برنامه واسط انجام داده و 8 task دیگر را بر روی ATtiny861 راه اندازی کنید (8 بایت فلش ، 512 بایت ram ).
ما(مجله الکتور) معتقدیم سیستم عامل فمتو کوچک ترین سیستم عامل روی زمین است که کد ان نیز به خوبی نوشته شده است.
----------------------------------------
چرا سیستم عامل چند کاره را باید مورد استفاده قرار داد؟
اغلب هنگامی که یک میکرو کنترولر کاری را انجام میدهد،در یک حلقه نامحدود منتشر می ماند تا این که اتفاقی روی می دهد،مثلا پیش از که عملی مانند روشن یا خاموش شدن لامپ انجام گیرد دکمه ای فشار داده می شود.
forever do
}
wait for yellow button to pressed;l
invert yellow light state;l
{

اکنون فرض کنین که دو دکمه و دو لامپ دارید. برنامه زیر به خوبی عمل نخواهد کرد.(ایا میتوانید ببینید چرا؟)



forever do
wait for yellow button to pressed;l}
invert yellow light state;l
wait for blue button to be pressed;l
invert blue light state;l
{

بنابراین باید کاری مانند زیر انجام دهید:


forever do
}
wait for yellow or blue button to be pressed;l
if button ws yellow then invert yellow light state;l
if button was blue then invert blue light state;l
{
اما اگر بتوانیم از دو حلقه ای که به صورت موازی اجرا می شوند استفاده کنیم بسیار ساده تر نخواهد بود؟
forever do
}
wait for yellow button to be pressed;l
invert yellow light state;l
{
forever do
}
wait for blue button to be pressed;l
invert blue light state;l
{

کد مذکور اساس کار سیستم عامل چند کاره(multi tasking os) است.ما میتوانید یک یا چند task را که به طور همزمان اجرا می شوند،داشته باشید که این امکان را برای شما فراهم می اورد که پیچیدگی برنامه را کاهش دهید.
-------------------------------------------------------------------
(شرح ایده و طرح سیستم عامل های بلادرنگ به صورت کلی)
http://www.uc-njavan.ir/images/nq3ad1xxajlxpvx2o6st.jpg
شکل 1 فلوچارت یک سیستم عامل چند کاره نمونه را نشان می دهد.
پس از انجام چند تنظیم در سیستم(به عنوان مثال تایمر های avr) زمان بندی همه چیز را سازماندهی می کند.زمانبندی، لیست تمامی task ها را در اختیار داشته و یکی از انها را جهت اجرا انتخاب می کند.این که کدام task به عنوان task بعدی باید اغاز شود بستگی به اولویت انها دارد.(task های مهمتر مقدم ترند) و در صورتی که اولویت ها برابر باشند، task هایی که هنوز اجرا نشده اند انتخاب می شوند.این نوبت گردشی (round robin) نام دارد.
هنگامی که یک task انتخاب شودف فضای لازم برای این task ذخیره می شود و اجرا برنامه از نقطه ای که پیش از این task انتخاب شده متوقف شده بود، مجددا اغاز می شود.
معنی این جمله که "محتوی ذخیره می شود"چیست؟اجرای برنامه چیزی بیش از دستکاری بیت رجیستر های cpu و حافظه نمی باشد.
هنگامی که اجرای برنامه پس از مدتی وقفه مجددا از سر گرفته می شود، رجیستر هایی که با ان کار می کردند ، حداقل باید حاوی همان مقادیری باشند که پیش از وقفه بودند.
بنابراین "ذخیره محتوی" این اطمینان را به وجود می اورد که رجیستر های کارکرد منظم cpu یعنی رجیستر وضعیت و شمارشگر برنامه در فضای خاصی از حافظه ذخیره شده اند که در ان، برنامه ادرس بازگشت و متغییر های موقتی یعنی پشته (stack) را ذخیره می کند.
خود اشاره گر پشته باید در محلی ثابت خیره شود.درست پیش از پایان وقفه، مقادیر رجیستر از پشته دوباره بازخوانی شده و در محل اصلی خود نوته می شود. به این عمل "بازگرداندن محتوی" می گویند.
اگر ذخیره ی محتوی و باز گرداندن ان به درستی انجام گیرد برنامه هیچ گاه متوجه وقفه ان نمی شود. هنگامی که task برای مدتی اجرا می شود، os مجددا از طریق ایجاد وقفه در task که معمولا به وسیله وقفه ی تایمر انجام می دهد، ان را کنترل می کند و به اصطلاح وقفه ی tick نامیده می شود. بلافاصله پس از وقفه، محتوی task ذخیره شده و وضعیت ان تثبیت می شود.
اکنون بلوکی به نام سوییچ که در شکل 2 نشان داده ایم می رسیم.
این فرایند pre-emption نامیده می شود زیرا task نمیتواند این وفقه را رد کند.بلوک کنترل task (حافظه ای که تمامی اطلاعات مربوط به task را نگه میدارد) به روز شده و زمان بند ، task جدیدی را برای اجرا انتخاب می کند. اگر task برای راه اندازی اماده نباشد، در صورتی که همهی انها منتظر رویدادی باشند، زمان بند task غیر فعال را که کاری انجام نمیدهد انتخاب می کند.
وقوع این امر محتمل است که task می خواهد تابعی را که سیستم عامل را کنترل میکند فرا خواند یا task میخواهد با دیگر task ها ارتباط برقرار نماید،بنابر این ممکن است چند تابع هم زمانی را فرا خواندو در چنین مواردی task دیگری نیاز به اجرا نداته و ممکن است زمان باقیمانده اجرا را برای دیگر task ها نشان دهد.
اکنون که تعویض task به صورت اختیاری است( سیستم های عامل مشترک مذکور بر این اساس به تنهایی عمل می کنند).

طبق ان چه که بحث شد، ذخیره و بازگردانی محتوی،این اطمینان را به وجود می اورد که محیط task که اجازه دارد،برای محیط خود یکسان باشد.اما بقیه حافظه چه می شود؟
یا درواقع رجیستر های دستگاه جانبی؟ معمولا به دلیل این که task ها هیچ گاه ان را مورد استفاده قرار نمی دهند، چندان مهم به شمار نمی رود و برای قسمتی که task مورد استفاده قرار میدهد،اغلب تنها قسمتی است task انرا مورد استفاده قرار می دهد بنابراین وقتی که task فعال نیست،از این قسمت استفاده نمی شود.ان چه که باقی می ماند، رجیستر هایی هستند که به وسیله ی بیش از یک task به کار برده می شوندو این امر چگون سازماندهی می شود؟
ظاهرا سازماندهی ان به عهده ی شماست. درست است که os برخی از ابزار های سنکرون کردن و دستگاهای مخابره با پرچم را به کار می برد تا کار ها را اندکی اسان تر نماید اما ما که کاربر هستید باید مراقب باشید. اگر مراقب نباشید کار ها همواره به بن بست می رسند.
مطالب ذکر شده راجع به تمامی انچه که برای طراحی یک سیستم عامل چند کاره pre-emption اجرا شده توسط کلاک وجود دارد، می باشد. البته خارج از این مقاله ، انواع متعددی از طرح های جالب دیگری وجود دارد اما این پیشینه برای بحث در مورد سیستم عامل فمتو کافی خواهد بود.
---------------------------------------------------------------------------------------------------------
http://www.uc-njavan.ir/images/ekuuqxlufhubdh5y8bx.jpg
ویژگی سیستم عامل فمتو
در شکل 2 طرح کلی os که بر گرفته از شکل 1 است را می بینید اما متوجه بلاک های جدید زیادی نیز می شوید.نخست تنظیم سیستم را با boothook کلی انجام میدهیم.هر task دارای یک hook فرمت می باشد و در جایی قرار داده شده اند که شما میتوانید توابع معمول را به مقدار دهی اولیه اضافه کنید.
سیستم مرکزی بلاک حاوی بی از چند ابزار می باشد. بررسی وقایع مراتب رویداد های احتمالی است که ممکن است شما اغازگر انها باشید.
این اعمال به کار برده می شوند تا سریعا task را پس از وقفه یا دیگر task ها را اغاز نمایند. در نتیجه نگهداری فایل ، task های احتمالی را که منتر اتمام عمل نوشتن هستند را از حالت مسدود خارج میکند.
Watch dog برای task هایی مورد ازمایش قرار می گیرد که دیگر پاسخ نمی دهند یا ممکن است نیاز به شروع مجدد داشته باشند.این امر جهت بررسی این که ایا یک مسیر ارتباطی همچنان مشغول است،مفید بوده و نیاز به بررسی های بی شمار مدت زمان وقفه را از طریق برنامه بر طرف می نماید و نهایتا زمان بند task را در پی طرح ساده ی نوبت گردشی اولویت بندی شده انتخاب می کند.
سیستم علاوه بر شروع یک task عادی می تواند در حات غیر فعالی قرار ***د که یک task نیست بلکه یک حالت ذخیره توان در فضای سیستم عامل می باشد.
همچنین سیستم میتواند در حالت sleep قرار گیرد( در صورتی که از سوی سخت افزار پشتیبانی شود.)این عمل حالت خاصی از خاموش کردن تغذیه متعلق به تراشه است که وقفه ی تیک(tick) را شامل می شود.
درست مانند سیستم عامل عمومی، task ها میتوانند تو سط وقفه ی تیک یا سوییچ دستی متوقف شوند. اما برخلاف سیستم عامل عمومی،برخلاف سیستم عامل عمومی ، فراخوانی کنترول های سیستم عامل فمتو در فضایی از سیستم عامل برای اکثر توابع اتفاق می افتند،بنابراین ابتدا سوییچ دستی را اعمال می کند، سپس از ان فرایند اجرا انجام می شود.
در این روش پشته ی task برای این فرایند ها به کار برده نشده است،بنابراین اندازه پشته ی task می تواند کوچک تر باشد.
در سیستم عامل فمتو اکثر پیام هایی که مستقیما تغییر محتوی را اعمال می کنند، XXXtask نامیده شده و ممکن است فقط داخل یک task مورد استفاده قرار گیرند.
علاوه بر این پیام هایی کلی نیز وجود دارند که با ژن XXX اغاز می شوند و ممکن است این ژن از داخل task ها و نیز از راه سرویس های وقفه فرا خوانی شده باشند.
انها سبب اعمال تغییر محتوی نمی شوند و در همان فضایی اجرا می شوند که از انجا فراخوانی شده اند و معمولا بسیار سریع هستند.
سیستم عامل فمتو هر انچه را که شما برای یک ارتباط درون task ایمن نیاز دارید، فراهم می اورد.این امر زمانی اهمیت پیدا می کند که دو task ( یا بیشتر) باید داده های را تقسیم کرده یا به رجیستر یکسانی دسترسی داشته باشند.در نتیجه Mutexe ها ، ردیف داده و محل های تجمع (rendevous) کاملا پشتیبانی می شوند.در اینجا امکان تحلیل عمیق تر این مفاهیم پیشرفته وجود ندارد اما به عنوان یک کاربر بالقوه سیستم عامل فمتو بهتر است بدانید ابزار های لازم جهت درک این موضوع به صورت مناسب در دسترس هستند.
------------------------------------------------------------------------------
منابع:elektor 2010
http://www.femtoos.org
به نقل از مجله نویز ماهنامه تخصصی برق و الکترونیک ECA / سال اول/ شماره 6 / اسفند 1389

عرفان سلیم زاده
19th July 2012, 11:02 AM
برای پورت کردن سیستم عامل فمتو دو نکته رو مد نظر قرار بدین:
1- در هر ورژنی از سیستم عامل فمتو که می گیرید دارای یک فایل تکست "مرا بخوانید!" است.ان را مطالعه کنین.
2- هر ورژنی از سیستم عامل نرم افزار ها و وسایل خودش رو برای پورت شدن احتیاج داره پس انها را تامین کنین
موفق باشین

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

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