اطلاعیه

Collapse
No announcement yet.

Multi tasking...

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

    #31
    پاسخ : Multi tasking...

    مگه نباید SP رو بخونم ببینم اتسک کجاس ؟ :mrgreen:

    دیدگاه


      #32
      پاسخ : Multi tasking...

      اومدم پاسخ بدم جاش تشکر کردم.
      درسته. SP به آخر استک اشاره میکنه.
      [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

      دیدگاه


        #33
        پاسخ : Multi tasking...

        می خواستی نزنی

        SP ادرس اخر اتسک رو نشون میده ؟

        SP=0x01 این جوری که روش نوشته میشه oo:

        دیدگاه


          #34
          پاسخ : Multi tasking...

          یکم در مورد ماهیت استک بخونی سوالات حل میشن:
          http://en.wikipedia.org/wiki/Stack_%...t_data_type%29
          رو استک هم چیزی نمینوسیم.روی اشاره گرش مینویسیم.محتوای استک با push و pop زیاد و کم میشه.
          [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

          دیدگاه


            #35
            پاسخ : Multi tasking...

            قبلا ARM بلد نبوم الان فهمیدم ریجستر چیه

            به فرض ما همه ی ریجستر هایی که مربوط به برنامه میشن که کجا بوده رو ذخیر کردیم برای تسک دوم کجا ذخیر کنیم EEPROM SRAM

            دیدگاه


              #36
              پاسخ : Multi tasking...

              با سلام
              تاریخ آخرین ارسال رو دیدید؟
              حالا که این تاپیک بالا اومد اجازه بدید این دو تا تاپیک رو هم معرفی کنم.
              موضوع: آشنایی با سیستم عامل های بلادرنگ – بررسی نحوه عملکرد و پورت کردن FreeRTOS
              نحوه کار کرنل های مولتی تسک

              [glow=black,2,300]بردی جالب با سیستم عاملی جالب !!![/glow]

              دیدگاه


                #37
                پاسخ : Multi tasking...

                هنوز کاربر ها این تایپ هستن :mrgreen: :mrgreen:

                آخرین زمان فعالیت :
                دیروز ساعت 18:56:30

                دیدگاه


                  #38
                  پاسخ : Multi tasking...

                  نوشته اصلی توسط erfan m
                  قبلا ARM بلد نبوم الان فهمیدم ریجستر چیه

                  به فرض ما همه ی ریجستر هایی که مربوط به برنامه میشن که کجا بوده رو ذخیر کردیم برای تسک دوم کجا ذخیر کنیم EEPROM SRAM
                  EEPROM که نمیتونه این تعداد نوشتن رو تحمل کنه که! کاربرد حافظه ها رو بررسی کنید.....
                  [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                  دیدگاه


                    #39
                    پاسخ : Multi tasking...

                    اگه توی sram که قرار چیز های دیگه باشن flash که هیچی پس کجا ذخیره میشه

                    دیدگاه


                      #40
                      پاسخ : Multi tasking...

                      نوشته اصلی توسط erfan m
                      اگه توی sram که قرار چیز های دیگه باشن flash که هیچی پس کجا ذخیره میشه
                      نفهمیدم منظورت رو.
                      کلا دیتا های تسک ها (از استک تا....) باید روی رم باشه!
                      [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                      دیدگاه


                        #41
                        پاسخ : Multi tasking...

                        نوشته اصلی توسط shahinbahari نمایش پست ها
                        امروزه با گسترده تر شدن کاربرد میکرو کنترلر ها وسنگین تر شدن محاسبات نیاز به پردازش های موازی بیشتر و بیشتر میشه.سیستم عامل ها قابلیت های مختلفی رو برای کاربر ایجاد میکنند که یکی از پر کاربرد ترین اون ها چند پردازشی بودن اوناست.درک این موضوع که پردازنده ما در لحظه قادر به انجام یک دستور است ولی سیستم عامل ها چند پردازش رو هم زمان انجام میدن در نگاه اول سخت به نظر میاد.یه توضیح مختصری در باره این موضوع برای دوستانی که اطلاعاتشون در این مورد کم هست میدم:
                        در مالتی تسکینگ در اصل ما چند کار رو با هم انجام نمیدیم . در هر لحظه بخشی از هر کار رو انجام میدیم که اگه در کل نگاه کنیم به نظر میرسه همه ی کار ها با هم انجام شده.از نظر اینکه هسته ی سیستم عامل زمان پردازنده رو چطور بین تسک های مختلف تقسیم کنه و چطور با اولویت ها برخورد کنه,سیستم عامل ها عملکرد مختلفی پیدا میکنند و هر کدوم برای یه جا مناسبه. ساده ترین حالت اینه که زمان رو بین همه ی تسک ها تقسیم کنیم و اگه اولویت تسکی بالا تر بود زمان بیشتری به اون بدیم. به این عکس نگاه کنید. ما 2 تسک تعریف کردیم که در هر کدوم وضعیت دو پایه مختلف رو تغییر میدیم.همین طور که تو شکل مشخصه هسته سیستم زمان انجام رو به طور مساوی بین این دو تسک تقسیم کرده.

                        حالا اگه بیایم اولویت ها رو تغییر بدیم.میبینیم که زمان داده شده به هر تسک(تسک های ما تغییر وضعیت 2پین بود) تغییر میکنه و تسک با اولویت بالا تر زمان بیشتری میگیره.2 عکس زیر از یه برنامه گرفته شده تنها فرق بین اون ها تغییر اولویت هست که تو عکس معلومه:


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


                        تو برنامه ای که در پایین گزاشتم دقیقا کار های بالا صورت میگیره.
                        تو کتابخونه ی برنامه از تایمر صفر برای ایجاد وقفه تعویض تسک استفاده شده. این کتابخونه بیشتر جنبه آموزشی داره و اگر برای پروژه ای دنبال هسته ی سیستم عامل میگردید از هسته هایی مثل FREE RTOS و RTX (keil) و... استفاده کنید.چون یه سیستم عامل کامل نیاز به یه سری امکانات دیگه هم داره که تو اینجا نیومده و از طرفی نوشتن اون ها هم زیاد عقلانی نیست چون زمان و انرژی زیادی نیاز داره!
                        توضیح کامل در مورد سیستم عامل ها رو در کتاب real time operation system بخونید.این کتاب رو قبلا تو همن سایت گزاشته بودند. دوستان مطالب زیادی در مورد آموزش سیستم عامل ها قرار دادند و توضیحات جامعی هم گزاشتند که من دیگه به دلیل تکراری بودن اون ها رو نیاوردم. پیشنهاد میکنم اون تاپیک ها رو حتما بخونید تا دید بهتری نسبت به سیستم عامل ها داشته باشید.....
                        http://www.4shared.com/rar/ws9aYx0S/MULTITASKING_ON_AVR_3.html
                        سلام مهندس من کل نت رو گشتم نتونستم جوابم رو بگیرم اگر کمکم کنید خیلی ممنون میشم

                        به مثال من توجه کنید سوالم رو به شکل مثال بیان میکنم

                        تایمر 0 سر ریز میکنه و برنامه رو به تسک 1 میفرستیم تایمر دوباره سرریز میکنه و ( برنامه ما تو تسک 1 تا آخر اجرا نشده سی پی یو میاد به تابع وقفه و به تسک 2 ما میره

                        وضعیت تسک 1 ما به چه صورت ذخیره میشه که مثلا تا دستور x رفته بودیم یا مثلا تو حلقه وایل فلا بودیم ؟

                        با تشکر فراوان واقعا اگر من رو راهنمایی کنید یک دنیا ممنون میشم خیلی ذهنم رو درگیر کرده
                        I'm going to
                        RWTH Aachen
                        University

                        دیدگاه


                          #42
                          پاسخ : Multi tasking...

                          نوشته اصلی توسط Azadfalah نمایش پست ها
                          سلام مهندس من کل نت رو گشتم نتونستم جوابم رو بگیرم اگر کمکم کنید خیلی ممنون میشم

                          به مثال من توجه کنید سوالم رو به شکل مثال بیان میکنم

                          تایمر 0 سر ریز میکنه و برنامه رو به تسک 1 میفرستیم تایمر دوباره سرریز میکنه و ( برنامه ما تو تسک 1 تا آخر اجرا نشده سی پی یو میاد به تابع وقفه و به تسک 2 ما میره

                          وضعیت تسک 1 ما به چه صورت ذخیره میشه که مثلا تا دستور x رفته بودیم یا مثلا تو حلقه وایل فلا بودیم ؟

                          با تشکر فراوان واقعا اگر من رو راهنمایی کنید یک دنیا ممنون میشم خیلی ذهنم رو درگیر کرده
                          همه ی محتوای برنامه همونطور دست نخورده میمونه تا زمانی که برنامه به انتهای scope برسه و متغیر ها رو آزاد کنه.
                          فقط میمونه محتوای رجیستر ها که هر جا انشعابی ایجاد بشه، پیش از اینکه برنامه به دنباله جدید تحویل داده بشه محتوای رجیسترها رو ذخیره میکنه و در زمان بازگشت دنباله برنامه دوباره اونها رو بارگزاری میکنه. (content switching)
                          If the wind will not serve, take to the oars

                          دیدگاه

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