اطلاعیه

Collapse
No announcement yet.

سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #46
    پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

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

    دیدگاه


      #47
      پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

      نوشته اصلی توسط meh1011
      اگه تسک دوم اولویت 2 داشته باشه و تسک اول اولویت 1 داشته باشه. و توی تسک ها یه حلقه for که cpu رو مشغول کنه گذاشتیم واسه درست کردن تاخیر. حالا سوال من اینه تسک دوم که اولویتش بیشتره همیشه توی حلقه for میمونه و پایه پورت رو یک میکنه وحالا کی میره به تسک اول؟؟!!
      یا یجور دیگه بگم یه تسک با اولویت بالا کی تموم میشه و اجازه میده که تسک های با اولویت پایین تر شروع به کار کنن؟ در حالی که یه حلقهfor داره و همیشه آماده اجراست
      نشد دیگه !! تاپیک رو کامل نخوندی!!
      تا وقتی تسکی با اولویت بالا پردازشی برای احرا داشته باشه تسک های با اولویت پایین تر اجرا نمیشن. مگه اینکه این تسک تموم بشه و خودش رو حذف کنه(با توابعی که گفته شد) یا اینکه اعلام کنه قعلا کاری برای انجام دادن نداره. مثلا بخواد کاری رو بعد از یه تاخیر اینجا بده. برای ایجاد تاخیر نباید از حلقه استفاده کرد. سیستم عامل توابع ایجاد تاخیر داره. با این توابع سیستم عامل می فهمه که اون تسک برای مدتی پردازش نداره و میره سراغ تسک های دیگه. این پست : http://www.eca.ir/forum2/index.php?topic=49501.msg258848#msg258848
      یا اینکه تسک باید منتظر اتفاق رویدادی بمونه و بعد پردازش هاش رو ادامه بده. وقتی منتظر رویداد باشه، تسک های دیگه اجرا میشن. این پست : http://www.eca.ir/forum2/index.php?topic=49501.msg259789#msg259789
      یا اینکه منتظر دریافت پیام و اطلاعاتی از تسک دیگه، گرفتن کنترل یه منبع (با سمافور) باشه. یادم نمیاد توابع اینا رو گفته باشم. خودتون تو هلپ کیل ببینین.
      نوشته اصلی توسط meh1011
      سوال دیگم اینه که وقتی اینتراپت اتفاق میفته تکلیف چیه؟ کدوم مهم تره؟ آیا اینتراپت هم جز تسک ها باید بگیریم؟ اگه آره چجوری اون تسکو فقط زمانی که اینتراپت اتفاق افتاده انجام بده؟ مرسی
      هرموقع وقفه ای پیش بیاد، میکرو میره سراغ روتین وقفه. نکته مهم اینه که نباید تو روتین وقفه معطل کنین. بهتره هرکاری که قراره با اون وقفه انجام بشه رو به عهده یه تسک جدا بذارین. تنها کاری که تو اون وقفه باید بکنین اینه که اجرای اون تسک رو فعال کنید. توابع سیستم عاملی که تو روتین وقفه می تونین استفاده کنین جدا تعریف شدن. اولشون isr دارن.
      مثل isr_evt_set بجای os_evt_set
      پست مربوط به رویدادها رو بخونین متوجه می شین. کافیه تو روتین وقفه از تابع os_evt_set استفاده کنین و تسک اولویت بالا مربوط به این وقفه رو فعال کنین.
      تابع isr_tsk_get با ID مشخص میکنه توی کدوم تسک وقفه اتفاق افتاده.
      توابع دیگه ای هم هست که هنوز در موردشون بحث نشده
      isr_sem_send که در ارتباط با سمافورهاست. بحث مهمیه که فعلا به عهده خودتون...
      isr_mbx_send در اتباط با پیام ها ...
      https://www.linkedin.com/in/mohammadhosseini69

      http://zakhar.blog.ir

      دیدگاه


        #48
        پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

        بابا خیلی دمت گرم :applause:
        اما برای سوال اولم متوجه عرضم نشدید البته من بد گفتم. بزارید مثال بزنم:
        تسک زیر
        __task void task2(void)
        {
        int i = 0;
        while(1){
        for (i = 0; i < 0x8ffff; i++);//process

        *AT91C_PIOB_ODSR ^= (1 << 1); //led2
        }
        }
        فرضا تسک اولویتش 2 هست بقیه تسکها 1
        حالا این تسک حلقه for داره که همیشه cpuرو مشغول میکنه همین که حلقه تموم بشه پای ال ای دی 1 میکنه بازم بر میگرده اول حلقه ی همین تسک اینجا دیگه از توابع تاخیر استفاده نکردیم که، من منظورم اینه که این تسک کی تموم میشه؟؟؟ بازم ممنون که با حوصله جواب میدید :smile:

        دیدگاه


          #49
          پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

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

          http://zakhar.blog.ir

          دیدگاه


            #50
            پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

            ای ول منم همینو میگم اما من با میکرو امتحان کردم تسک اولم اجرا میشد
            ledمخصوص تسک اولم روشن میشد!!!!!!!!!!!!

            دیدگاه


              #51
              پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

              کد برنامت رو کامل بذار
              https://www.linkedin.com/in/mohammadhosseini69

              http://zakhar.blog.ir

              دیدگاه


                #52
                پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                همون برنامه صفحه اول همین موضوع رو کپی کردم تو کیل تنها تغیری که دادم تسک 2رو بهش اولویت 2 دادم تسک 1 همون اولویت 1

                دیدگاه


                  #53
                  پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                  ای خداا هر بار به یه مشکل بر میخورم مجله نویز 8 یه مثال داره به اسم rtx sample کامپایلش که میکنم پیام زیر رو میده
                  RTX_example1.axf: Error: L6218E: Undefined symbol os_stk_overflow (referred from rt_hal.o).
                  Target not created
                  این دیگه چیه؟؟ :angry:

                  دیدگاه


                    #54
                    پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                    نوشته اصلی توسط meh1011
                    همون برنامه صفحه اول همین موضوع رو کپی کردم تو کیل تنها تغیری که دادم تسک 2رو بهش اولویت 2 دادم تسک 1 همون اولویت 1
                    کدوم پست؟ اگه تسک 2 تو تسک 1 تعریف شده احتمال داره تسک 1 رو تا پایان قطعه زمانیش ادامه بده. که البته نباید اینطور باشه و این می تونه یه نقص واسه سیستم عال realtime باشه! کد تسک 1 رو بصورت چشمک زن بنویس و دوباره تست کن. اینطوری معلوم میشه تسک1 داره اجرا میشه یا نه.

                    نوشته اصلی توسط meh1011
                    ای خداا هر بار به یه مشکل بر میخورم مجله نویز 8 یه مثال داره به اسم rtx sample کامپایلش که میکنم پیام زیر رو میده
                    RTX_example1.axf: Error: L6218E: Undefined symbol os_stk_overflow (referred from rt_hal.o).
                    Target not created
                    این دیگه چیه؟؟ :angry:
                    در جریان مجله نویز نیستم
                    https://www.linkedin.com/in/mohammadhosseini69

                    http://zakhar.blog.ir

                    دیدگاه


                      #55
                      پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                      با سلام به آقای حسینی گل.

                      دو تا مسئله:

                      1- اولا راجع به os_stk_overflow یک سری به اینجا بزنین. چون نمیدونم که کدوم ورژن رو استفاده میکنین. اما مشخصا این تابع در لایبرری مربوطه وجود نداره. بخاطر همین در فاز لینک کردن خطا پیش میاد.
                      http://www.keil.com/support/docs/3483.htm

                      2- البته این مسئله ربطی به RTX نداره اما من باب اطلاعتون بد نیست بدونین که بعضی مواقع مثل همین موردی که ذکر خیرش گذشت:
                      این تسک اینطوری هیچ وقت تموم نمیشه. هیچ راهی هم برای توقفش پیش بینی نشده بنابراین سیستم عامل هیچ وقت زمان پردازشی به تسک های اولویت 1 نمیده.
                      در سیستم عاملی مثل ویندوز باعث عدم اجرای یک تسک نمیشه. چون چیزی داریم بنام priority boost. با استفاده از این امکان یک تسک با اولویت پایین وقتی در شرایط اینچنینی قرار میگیره که نمیتونه از پس یک تسک با اولویت یخده بالاتر بر بیاد؛ اولویتش بطور داینامیک و موقت اینقدر بالا میره که کم کم شانس اجرا رو بدست بیاره و بعد از یکبار اجرا دوباره از نو شروع میکنه. البته تعداد این افزایش یا کاهشها محدوده. و اگر اشتباه نکنم حداکثر 2 تا بالا و پایین میره.

                      (مردم از بس اظهار فضل نکردم! :mrgreen

                      دیدگاه


                        #56
                        پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                        دست همتون درد نکنه اما آقا رضا متوجه نشدم باید چیکار کنم که این پیغام خطا نیاد ورزن کیلمم 401 هستش

                        دیدگاه


                          #57
                          پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                          ولله بیشتر بنظر میرسه که لایبرری با ورژنی که با سورس تون تطبیق نداره دارین استفاده میکنین. ولی احتمالا اینجوری درست میشه:
                          یک روال مثل این بنویسین:


                          کد:
                          void os_stk_overflow(void)
                          {
                          
                          }


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

                          ضمنا توی این آدرس چیزایی گفته:
                          http://www.keil.com/support/docs/3501.htm

                          و ایضا:
                          http://www.keil.com/support/man/docs/rlarm/rlarm_ar_cfgerrfunc.htm

                          ولی فکر کنم راحتترینش همون کدیه که بالا عرض کردم.

                          دیدگاه


                            #58
                            پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                            ایول فهمیدممممم :applause:
                            فایل ضمیمه ای که توی نویز 8 گذاشته شده فایل RTX_Conf_SAM7X.C مخصوص ورژن کیل مخصوص نویسنده این برنامه بوده من باید RTX_Conf_SAM7X.C کیل خودمو ADD میکردم به برنامه.
                            آقا رضا ممنون

                            دیدگاه


                              #59
                              پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                              با سلام و خسته نباشید.
                              آقا رضا ، آقای حسینی و دوستانی که در زمینه سیستم عامل برای آرم خبره هستید اگه میشه مطالبی یا منابعی رو بهم معرفی کنید که بخونم ممنون

                              دیدگاه


                                #60
                                پاسخ : سیستم عامل بی درنگ RTX برای ARM7/9 و Cortex-M

                                درسته که RTX برای آرم نوشته شده اما تئوری کار بین همه سیستم عاملها مشترکه. اگر جایی فرقی هست بیشتر بخاطر وجود محدودیتهای خاصی در سیستم یا سلیقه برنامه نویسش هست. و نه تفاوت ساختاری سیستم عاملها. بنا براین هر کتاب سیستم عاملی بدرد تون میخوره که دید کلی و کاملی از یک سیستم عامل خوب داشته باشین. بعد میتونین روی محدودیت ها و جزئیات RTX دقیق بشین.

                                دیدگاه

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