اطلاعیه

Collapse
No announcement yet.

آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #46
    پاسخ : سیستم عامل برای میکروکنترلر AVR

    نوشته اصلی توسط n340
    یه سوال بعد از بالا اومدن این
    سیستم
    چع میشه کرد
    توی صفحه اول فوایدش را گفتم
    http://www.eca.ir/forum2/index.php?topic=41965.msg209917#msg209917
    و صفحه دوم :
    http://www.eca.ir/forum2/index.php?topic=41965.msg210150#msg210150

    پیوست:
    فعلا از باسکام خدافظی کردم دارم سی از اول میخونم سر همین موضوع، ایشالا خوب رفتم جلو اولین پروژه اجرائی که تو ذهنمه را با همین روش اجرا میکنم میزارم تو سایت.
    آن دم که مرا می زده بر خاک سپارید زیر کفنم خمره ای از باده گذارید
    تا در سفر دوزخ از این باده بنوشم
    آنلحظه که با دوزخیان کنم ملاقات یک خمره شراب ارغوان برم به سوغات
    هرقدر که در خاک ننوشیدم از این باده صافی ، بنشینم و با دوزخیان کنم تلافی

    دیدگاه


      #47
      پاسخ : سیستم عامل برای میکروکنترلر AVR

      من تعریفم اینه که سیستم عامل دارای چند تا تسک هست که میتونه با هم اجرا کنه یه قسمت از این یه قسمت از اون یکی دیگه فقط مشکلم اینه که چجوری از این تسک میرند تسک دیگه مشکل من فعلا همینه

      دیدگاه


        #48
        آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

        سلام
        اخیرا جناب joker بحث سیستم عامل برای avr رو مطرح کرده بود. اما متاسفانه مورد استقبال قرار نگرفت و انگار به نتیجه نرسید.
        چند وقتیه که منم افتادم دنبال بحث realtime. به این نتیجه رسیدم بهترین نقطه شروع می تونه یه سیستم عامل realtime برای معماری ساده ای مثل avr باشه. نشستم 3 روز کامل سایت FreeRTOS.org رو خوندم. (انقدر جالب بود که اصلا متوجه گذشت زمان نمی شدم!) بعد از کلی مطالعه تونستم مطالب مختلف رو به هم ربط بدم. خلاصه FreeRTOS پا داد و روی avr پورت شد…
        FreeRTOS یه سیستم عامل بلادرنگ اپن سورس که برای پردازنده ها و کامپایلرهای زیادی پورت شده. از این سیستم عامل ها تو اینترنت زیاده. با یکی که آشنا بشیم، راه انداختن بقیه کار سختی نیست. برنامه بعدی من اینه که از avr بکشم بیرون، روی arm7 پورت کنم. بعد برم سراغ سیستم عامل های پیشرفته تر (و شایدم arm9...(
        اما تصمیم گرفتم فعلا یه مدت وقت بذارم و مطالبی که یاد گرفتم رو اینجا share کنم. البته بعید نیست اوایل طرفدار کم داشته باشه. سعی می کنم مطالب مفهومی و پایه ای باشه که خوب جا بیافته...
        مباحثی که درنظر دارم به ترتیب مطرح کنم:
        multi tasking
        realtime
        خلاصه نحوه عملکرد سیستم عامل و جابجای taskها (با نمونه کدهای gcc برای avr)
        مفاهیم تعامل با سیستم عامل مثل task ، co-routine ، queue ، semaphore ، mutex و ...
        پیاده سازی سیستم عامل روی atmega32
        بررسی توابع API سیستم عامل
        منبع حرفام سایت FreeRTOS.org

        یکم پیش نیازهایی مثل ساختمان داده و معماری کامپیوتر نیاز داره. البته خیلی هم مهم نیست. منم این ترم معماری دارم. درس هایی مثل سیستم عامل و بلادرنگ و از این چیزام پاس نکردم. بقول دکتر جمشیدی ممکنه دری وری بگم. بخاطر همین از اساتید انجمن مثل آقای طراح و آقا رضا درخواست همراهی میکنم تا اگه احیانا دری وری گفتم اصلاح کنن.
        ضمنا من یکم سرم شلوغه و از درسام عقب افتادم. برای اینکه تاپیک روند خوبی داشته باشه، استقبال شما رو می طلبه...
        https://www.linkedin.com/in/mohammadhosseini69

        http://zakhar.blog.ir

        دیدگاه


          #49
          پاسخ : آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

          پایتیم خراب
          فقط اگه بتونی از اول توضیح بدی عالیه
          هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
          بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
          میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

          تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

          دیدگاه


            #50
            پاسخ : آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

            سلام

            من با AVR کار نکردم ولی یکی از دموهایی که داخل سایت freeRTOS.org بود رو یه تغییراتی دادم تا بتونم روی LPC2378 اجراش بکنم برنامه اش رو دیروز نوشتم تو شبیه سازی کار کرده ولی هنوز به طور عملی تستش نکردم.

            به هر حال خیلی از ایجاد این تاپیک خوشحال شدم و من هم آمادگی خودم رو برای همکاری اعلام می کنم.
            موفق باشید.

            دیدگاه


              #51
              پاسخ : آشنایی با سیستم عامل های بلادرنگ – برر

              یه کاری کردم خودم توش موندم! امروز تماما داشتم به این فکر میکردم که تاپیک باز کردم هیچی ننوشتم! معضل کمبود وقت ...به کمکتون احتیاج دارم!

              از اینجا شروع کنیم که اصلا چرا سیستم عامل؟ به چه دردی میخوره؟
              اولین بحثی که مطرح میشه Multitasking یا "عملکرد چند وظیفه ای". multitasking یعنی اینکه بتونیم چند کار رو همزمان انجام بدیم. مثل اینکه تو ویندوز چند برنامه همزمان در حال اجرا هستن. کرنل (kernel) هسته اصلی هر سیستم عامل که این امکان رو برای سیستم عامل فراهم میکنه چند برنامه رو با هم اجرا کنه. به هر کدوم از این برنامه های جدا از هم میگیم task . به سیستم عاملی که بتونه چند task رو همزمان اجرا کنه میگیم قابلیت multitasking داره. multitasking این امکان رو به ما میده که برنامه ها یا پروژه های پیچیده رو به چند task ساده تبدیل کنیم که مدیریت و تغییر هرکدوم شون خیلی راحتره. تست پروژه با ارزیابی هر تسک راحتره میشیه. امکان تیمی کار کردن روی پروژه خیلی راحت با تقسیم تسک ها بین افراد میسر میشه. و از همه مهمتر اینکه درگیر مسائل زمان بندی و اجرای متوالی قسمت های مختلف نمی شیم. این مسئولیت رو سیستم عامل به عهده میگیره. اگه یکم درگیر پروژه های سنگین بشین می بینید که تو برنامه خودتون گم میشین و شاید اصلا نشه همه وظایف تعریف شده رو اجرا کرد...
              پردازنده های مرسوم که ما می شناسیم،تنها قابلبت اجرای یک دستور العمل رو در هر زمان دارن. یعنی فقط یک تسک. اما سیستم عامل با جابجایی سریع تسک ها به ظاهر نشون میده که همه درحال اجرا هستن. پس امکان اجرای همرمان تسک ها، با جابجایی سریع اونا برای پردازنده ایجاد میشه.

              scheduler یا زمانبند قسمتی از kernel که تصمیم میگیره در هر لحظه از زمان کدوم تسک باید اجرا بشه. scheduler میتونه یه task رو به حالت معلق (suspend) در بیاره و درعوض تسک دیگه ای رو اجرا کنه. الگوریتم یه سیستم عامل multitask (نه realtime) اینه که به هر تسک میزان زمان پردازش برابر بده و اصطلاحا زمان پردازنده رو عادلانه(fairly) بین تسک ها تقسیم کنه.
              این جابجایی تسک ها بدون اختیار هر تسک توسط scheduler انجام میشه. غیر از این، هر تسک هم میتونه خودش رو به حالت معلق در بیاره. فرض کنید یه task بخواد تاخیر ایجاد کنه. مثلا هر 100 میلی ثانیه اجرا بشه. تو این زمان تاخیر، خود تسک اعلام میکنه که عملیاتی برای پردازش نداره و زمان پردازش پردازنده در اختیار تسک دیگه ای قرار میگیره. حالت دیگه اینه که task بخواد با یکی از منابع یا امکانات جانبی (peripheral) پردازنده (مثل پورت سریال) کار کنه، که اگه توسط تسک دیگه ای اشغال باشه، باید خودش رو مسدود (block) کنه و منتظر بمونه تا اون منبع آزاد بشه. در این حالت زمانی برای پردازش به این task داده نمیشه. (block و suspend با هم تفاوت دارن. فعلا در این مورد چیزی نمیگم. فقط به اصطلاحاتی که میگم توجه کنید که بعد درگیرشون می شیم...). حالت های دیگه ای هم هست که یه task خودش رو block میکنه. مثلا منتظر یه وقفه خارجی باشه و ...
              به دیاگرام زیر توجه کنید :

              در زمان 1 تسک 1 در حال اجراست
              در زمان 2 کرنل تسک 1 رو suspend میکنه و در عوض اجرای تسک 2 رو ادامه میده (زمان3)
              تسک 2 در زمان اجرای خودش (زمان4) یکی از امکانات جانبی (peripheral) رو در احتیار خودش میگیره که با اون کار کنه.
              در زمان 5 کرنل تسک 2 رو suspend میکنه و تسک 3 رو ادامه میده(زمان6). توجه کنید که تسک هایی که suspend شدن، کارشون تموم نشده. کرنل داره تسک ها رو سریع پشت هم جابجا میکنه که همزمان همه اجرا بشن.
              تسک 3 می خواد با همون peripheral تسک 2 کار کنه. اما چون این peripheral در اختیار تسک 2 هست، تسک 3 خودش رو block میکنه (زمان 7). بنابراین دوباره تسک 1 ادامه داده میشه (زمان8) و این روند تکرار میشه تا جایی که تسک 2 دست از سر اون peripheral برداره (زمان9).
              زمان بعدی که تسک 3 اجرا بشه (زمان10) اون peripheral مشغول نیست و تسک 3 میتونه باهاش کار کنه. همونطور که می بینید تسک 3 به اندازه تسک های دیگه زمان اجرا از کرنل گرفته...

              فعلا تا همینجا باشه... اگه سوالی هست بپرسین...
              https://www.linkedin.com/in/mohammadhosseini69

              http://zakhar.blog.ir

              دیدگاه


                #52
                پاسخ : آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

                Context Switching
                پست قبل در مورد multitasking و جابجایی تسک ها بحث شد. اما آیا جابجایی تسک ها برای کرنل به همین راحتیه که مثلا 1 میلی ثانیه تسک 1 رو اجرا کنه و 1 میلی ثانیه تسک 2... و هیچ شرایطی رو درنظر نگیره؟
                می دونیم که هر تسک قراره مثل یه برنامه مستقل عمل کنه و تمام منابع پردازنده رو بکار میگیره. به مجموع این منابع (رجیسترها، استک و...) میگیم context.
                تصور کنید چندتا تسک همزمان می خوان احرا بشن. یه تسک مدتی از پردازنده زمان گرفته و اجرا شده. کرنل جلوی این تسک رو میگیره و زمان پردازش رو در اختیار تسک دیگه ای قرار میده. هر کدوم از این تسک ها با رجیسترها و منابع دیگه پردازنده کار میکنن. حالا مشکل چیه؟ تسک قبلی میخواد ادامه پیدا کنه. اما آیا اطلاعات رجیسترها و منابع دیگه برای این تسک تغییر نکرده(توسط تسک بعدی)؟ شاید با این مثال مسئله روشن تر بشه. تسکی داریم که می خواد دو تا مقدار رو تو دو تا رجیستر بنویسه و با هم جمع کنه. به شکل زیر توجه کنید :

                فرض کنید دو دستور اول اجرا شدن (بارگذاری رجیسترها). قبل از اجرای دستور سوم (جمع دو رجیستر) تسک توسط کرنل suspend میشه تا زمان پردازش در اختیار تسک دیگه ای قرار بگیره. حالا اگه این تسک پاش رو از گلیمش درازتر کنه و مقادیر این دو رجیستر رو تغییر بده، بعد از برگشت به تسک قبلی، جمع دو رجیستر مقدار درستی نیست!
                خلاصه اینکه هر تسک، یه برنامه مستقل که بدون توجه به تسک های دیگه میخواد کار خودش بکنه و نمی تونه هیچ گونه مزاحمتی وسط اجرای کدهاش رو تشخیص بده. کرنل سیستم عامل که می خواد تسک ها رو جابجا کنه نسبت به محتویات منابع برای هر تسک مسئوله. یعنی موقع برگشت به هر تسک باید همون مقادیر زمان suspend رو بازیابی کنه.
                بنابراین برای جابجایی تسک، زمان suspend، کرنل سیستم عامل، context تسک رو ذخیره (save) و هنگام بازگشت برای ادامه اون تسک، context رو بازیابی (restore) میکنه. به این عملیات Context Switching گفته میشه که به زودی بیشتر بررسی میکنیم...
                https://www.linkedin.com/in/mohammadhosseini69

                http://zakhar.blog.ir

                دیدگاه


                  #53
                  پاسخ : آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

                  یه مدیر خیر پیدا بشه این تاپیکها را ادغام کنه که بروبچ که میخوان شروع کنن راحت باشن.
                  http://www.eca.ir/forum2/index.php?topic=41965.0
                  آن دم که مرا می زده بر خاک سپارید زیر کفنم خمره ای از باده گذارید
                  تا در سفر دوزخ از این باده بنوشم
                  آنلحظه که با دوزخیان کنم ملاقات یک خمره شراب ارغوان برم به سوغات
                  هرقدر که در خاک ننوشیدم از این باده صافی ، بنشینم و با دوزخیان کنم تلافی

                  دیدگاه


                    #54
                    پاسخ : آشنایی با سیستم عامل های بلادرنگ – برر

                    نه نباید ادغام میکردین!! میخواستم مطالب تاپیک از پایه شروع بشه تا ...
                    اینطوری که بهم ریخت! بحث هایی که تو تاپیک قبلی پیش اومده بیشتر سردرگم کننده و پراکنده...
                    میذاشتین وقتی به مراحل پیاده سازی رسیدیم از مطالب مفید تاپیک قبلی هم استفاده می کردیم.
                    https://www.linkedin.com/in/mohammadhosseini69

                    http://zakhar.blog.ir

                    دیدگاه


                      #55
                      پاسخ : آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

                      RTOS : Real Time Operating System
                      سیستم های realtime برای پاسخ به رویدادهایی طراحی میشن که این رویدادها برای دریافت پاسخ، اصطلاحا یک ضرب العجل (deadline) دارن. یعنی تو زمان مشخصی حتما باید بهشون پاسخ داده بشه. برای این سیستم ها زمان انجام عمل مورد نظر دقیقا قابل محاسبه هست و نباید از بازه ای که محاسبه میشه تجاوز کنه.
                      بعد از multitasking خصوصیت بعدی یک سیستم عامل، realtime بودن. اساس کار scheduler سیستم عامل realtime مشابه multitasking اما با هدف متفاوت. هدف scheduler بلادرنگ اینه که deadline رو درنظر بگیره , تا قبل از اتمام فرصت مورد نظر برای یک تسک، عملیات تسک رو کامل کنه.
                      اینکار چطور ممکن میشه؟
                      خیلی ساده! برنامه نویس باید برای هر تسک یک اولویت (Priority) تعیین کنه. scheduler همیشه زمان پردازش رو به تسک با اولویت بالاتر میده و تا وقتی تسک با اولویت بالاتر آماده برای اجرا باشه، تسک اولویت پایین تر هیچ زمان پردازشی نمیگیره. در صورتی هم که چند تسک با اولویت برابر آماده اجرا باشن، زمان پردازش بینشون تقسیم میشه.
                      وقتی چندتا تسک با اولویت برابر تعریف میکنیم. زمان پردازش بینشون تقسیم میشه و سرعت اجرای هر کدوم نسبت به زمانی که به تنهایی اجرا بشن کم میشه. فرض کنید تسکی داریم که 500 میلی ثانیه طول میکشه اجرا بشه (به تنهایی) و تو پروژه ای که داریم هم حتما باید 500 میلی ثانیه باشه نه بیشتر. بنابراین به این تسک نسبت به بقیه تسک ها یک اولویت بالاتر میدیم و اینطوری مطمئنیم که در زمان اجرای این تسک، هیچ پردازش دیگه ای نداریم و تو همون 500 میلی ثانیه انجام میشه.
                      با یه مثال ادامه میدیم. سیستم Realtime فرض کنید که از یه کی پد و یه lcd تشکیل شده. سیستم باید نسبت به کلید زده شده فیدبک مناسبی داشته باشه و تو زمان مشخصی عکس العمل خودش رو lcd نشون بده . اگه این زمان رو 100 میلی ثانیه فرض کنیم، هر پاسخی (عملیات پردازش کلید و نمایش روی lcd) بین 0 تا 100 قابل قبوله. میشه این برنامه رو در قالب یه تسک نوشت : vKeyHandlerTask

                      void vKeyHandlerTask( void *pvParameters )
                      {
                      // Key handling is a continuous process and as such the task
                      // is implemented using an infinite loop (as most real time
                      // tasks are).
                      for( ;; )
                      {
                      [Suspend waiting for a key press]
                      [Process the key press]
                      }
                      }

                      فرض کنید این سیستم عملیات کنترلی روی یه ورودی فیلتر شده انجام میده. ورودی باید نمونه برداری (sample). فیلتر و سپس کنترل انجام بشه. عملیات کنترل باید هر 2 میلی ثانیه صورت بگیره و ورودی هم برای عملیات فیلتر باید دقیقا 0.5 میلی ثانیه پایدار بمونه. (عملیات فیلتر باید 0.5 میلی ثانیه بطور مداوم اجرا بشه). این برنامه رو هم به شکل یه تسک مجرا می نویسیم: vControlTask

                      void vControlTask( void *pvParameters )
                      {
                      for( ;; )
                      {
                      [Suspend waiting for 2ms since the start of the previous
                      cycle]
                      [Sample the input]
                      [Filter the sampled input]
                      [Perform control algorithm]
                      [Output result]
                      }
                      }

                      برنامه نویس باید به vControlTask اولویت بالاتری بده. برای اینکه deadline برای یه تسک کنترلی اهمیت بیشتری داره. اگه تسک کنترلی تو زمان موزد نظر اجرا نشه، نتیجه خیلی بدتری داره نسبت به اینکه پاسخ به کلید زده شده به موقع داده نشه. ضمنا وسط عملیات فیلتر نباید پردازش دیگه ای صورت بگیره. چون اگه از 0.5 میلی ثانیه بیشتر بشه نمونه درستی از ورودی نداریم.
                      ادامه پست بعد...
                      https://www.linkedin.com/in/mohammadhosseini69

                      http://zakhar.blog.ir

                      دیدگاه


                        #56
                        پاسخ : آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

                        دیاگرام زیر نحوه زمان بندی تسک ها در سیستم عامل Realtime رو نشون میده:

                        RTOS تسکی به نام idle task با کمترین اولویت میسازه. زمانی که هیچ تسکی برای اجرا نباشه، idle task اجرا میشه و نشونه زنده بودن RTOS.
                        درزمان شروع هیچ تسکی برای اجرا نداریم. vControlTask منتظر زمان درست شروع عملیات کنترل هست تا یک سیکل کنترلی رو اجرا کنه و vKeyHandlerTask هم منتظر یک کلید ... بنابراین زمان پردازش به idle task داده میشه.
                        در زمان t1 یک کلید زده میشه و vKeyHandlerTask که اولویت بالاتری از idle task داره اجرا میشه. در زمان t2 عملیات پردازش کلید و نمایش روی lcd تموم میشه و vKeyHandlerTask خودش رو suspend میکنه تا منتظر کلید دیگه ای بمونه. از این زمان دوباره idle task اجرا میشه.
                        در زمان t3 رویداد تایمر اعلام میکنه زمان انجام یک عملیات کنترلی رسیده و vControlTask به عنوان تسک با بالاترین اولویت اجرا میشه.
                        بین زمان t3 و t4 که vControlTask در حال اجراست، کلیدی زده میشه (فلش آبی بین t3 و t4). در این زمان vKeyHandlerTask آماده اجراست، اما چون اولویت پایین تری از تسک کنترلی داره، نمی تونه زمان پردازشی از scheduler بگیره و منتظر میمونه تا اجرای تسک با اولویت بالاتر تموم بشه.
                        در زمان t4 اجرای vControlTask کامل شده و باید منتظر رویداد بعدی تایمر باشه. بنابراین خودش رو suspend میکنه و vKeyHandlerTask به عنوان تسک قابل اجرا با بالاترین اولویت از scheduler زمان پردازش رو میگیره تا به کلید زده شده پاسخ داده بشه.
                        در زمان t5 عملیات پردازش کلید تموم شده و vKeyHandlerTask خودش رو suspend میکنه. تسکی برای اجرا نیست. پس idle task اجرا میشه.
                        بین زمان t5 تا t6 یک رویداد تایمر اتفاق می افته و عملیات کنترلی انجام میشه.
                        در زمان t6 کلیدی زده میشه. اما قبل از اتمام اجرای vKeyHandlerTask تایمر اعلام می کنه زمان اجرای تسک کنترل رسیده(t7). در این زمان هر دو تسک قابل اجرا هستن. چون vControlTask اولویت بالاتری داره، vKeyHandlerTask قبل از پایان عملیاتش، suspend میشه و زمان پردازش در اختیار vKeyHandlerTask قرار میگیره.
                        در زمان t8 پردازش تسک کنترل تموم میشه و خودش رو suspend میکنه تا زمان سیکل کنترلی بعد. در این زمان vKeyHandlerTask میتونه ادامه پیدا کنه تا پردازش کلید هم کامل بشه.


                        فکر میکنم پست بعدی دیگه مقدمات تموم بشه... سوالی بود بپرسین
                        https://www.linkedin.com/in/mohammadhosseini69

                        http://zakhar.blog.ir

                        دیدگاه


                          #57
                          پاسخ : آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

                          منم سعی میکنم با استفاده از ریسورسهای کتاب آموزشی FreeRTOS فایلهای gif Animation توضیحات جناب حسینی را زیر پستهای ایشون اضافه کنم برای درک مطلب بهتر.

                          روی فایل کلیک کنید تا به صورت انیمیشن نمایش داده بشن.
                          فایل اول نحوه عملکرد کلی تقسیم وظایف توسط cpu هست
                          و فایل دوم در مورد عملکرد idle task هست که اقای حسینی پست بالا توضیح دادند
                          فایل های پیوست شده
                          آن دم که مرا می زده بر خاک سپارید زیر کفنم خمره ای از باده گذارید
                          تا در سفر دوزخ از این باده بنوشم
                          آنلحظه که با دوزخیان کنم ملاقات یک خمره شراب ارغوان برم به سوغات
                          هرقدر که در خاک ننوشیدم از این باده صافی ، بنشینم و با دوزخیان کنم تلافی

                          دیدگاه


                            #58
                            پاسخ : آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS


                            joker جان فایل دوم فقط یه عکس! نباید مثل اولی انیمیشن باشه؟ (یا من سر در نمیارم میخواد چی بگه)
                            https://www.linkedin.com/in/mohammadhosseini69

                            http://zakhar.blog.ir

                            دیدگاه


                              #59
                              پاسخ : آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

                              انگار پلود کردم تبدیل شده به یک عکس
                              حالا روی هاست خودم پلود میکنم ، یه باره 3 تا همزمان میزارم
                              حجم هرکدوم حدود 100 تا195 کیلوبایت بیشتر نیست.

                              http://www.ALT.ir/os/film_10.gif

                              http://www.ALT.ir/os/film_11.gif

                              http://www.ALT.ir/os/film_12.gif


                              پیوست : مدیر خیری که زحمت ادغام کشیدن ،اگه امکانش هست زحمت پاکسازی تاپیک را هم بکشن دیگه ببخشین اینقدر زحمت میدیم
                              آن دم که مرا می زده بر خاک سپارید زیر کفنم خمره ای از باده گذارید
                              تا در سفر دوزخ از این باده بنوشم
                              آنلحظه که با دوزخیان کنم ملاقات یک خمره شراب ارغوان برم به سوغات
                              هرقدر که در خاک ننوشیدم از این باده صافی ، بنشینم و با دوزخیان کنم تلافی

                              دیدگاه


                                #60
                                پاسخ : آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS

                                تاپیک به این باحالی دیگه چرا فعالیتی نمیکنه؟ ما منتظریم :agree:
                                من دوتا سوال دارم و درست متوجه نشدم.
                                اولیش اینکه اگه دوتا تسک بخوان با یکی از اینترفیس ها مثل SPI کار کنند چطور میشه؟ تمام تنظیمات و دیتا دریافتی که به هم میریزه....
                                دوم هم اینکه چطور میشه فهمید که هر تسک به چند بایت برای استک نیاز داره!!!
                                [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                                دیدگاه

                                لطفا صبر کنید...
                                X