اطلاعیه

Collapse
No announcement yet.

سیستم مولتی تسکینگ

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

    سیستم مولتی تسکینگ

    با سلام

    اساتید محترم در مورد پیاده سازی سیستم عامل برای multi tasking) avr) اطلاعاتی در اختیار دارند که بنده رو راهنمائی بفرمایند

    خودم هیچ گونه اطلاعاتی در این زمینه متاسفانه ندارم :redface:

    ممنون

    http://www.ecapic.ir/image/ECA-090927112544.png

    #2
    پاسخ : سیستم مولتی تسکینگ

    سلام....
    نرم افزار هایی در این رابطه نوشته شدند که قابلیت Multi Programing را به میکروکنترلر میدهد (مثل UC-OS) اما برای یک میکروکنترلر 8 بیتی 16MH انتظار زیادی نباید داشت.
    از نظر تکنیکی اساس این نرم افزارها بدین صورت است که با استفاده از یک تایمر ایجاد وقفه های متوالی نموده و با هر وقفه ادرس شروع کد برنامه جدید را از یک ارایه (یا صف) روی رجیستر Z لود کرده و با اجرای دستور (ijmp یا icall) کنترل به برنامه جدید داده میشود. در نتیجا برای ایجاد هر برنامه جدید میبایست ادرس شروع کد (یا تابع) را در ارایه (یا صف) مربوط به برنامه ها اضافه کرد .اما نکات زیر را در نظر بگیرید.
    multi programing هنگامی اهمیت می یابد که قرار باشد به صورت Dynamic برنامه برای اجرا اضافه یا حذف شود نه بر روی میکروکنترلری که کد ان بر روی حافظه FLASH و الزاما ثابت باشد.در این موارد عموما میتوان همین کار(multi programing) را بدون نیاز به چنین کدی و با سربار اضافی بسیار کمتر شبیه سازی کرد.
    برنامه هایی از این دست عموما هنگام تعویض برنامه میبایست تمامی رجیسترهای working و ادرس جاری برنامه قبلی و رجیسترهای مهم دیگر را در پشته یا پشته نرم افزاری (بسته به کامپایلر) ذخیره کنند در نتیجه علاوه بر زمان نسبتا زیاد تلف شده قسمتی از RAM نیز به این کار اختصاص می یابد.
    اجرای موازی(به ظاهر موازی) برنامه ها هنگامی به درستی انجام میذیرد که تعداد برنامه ها و زمان اجرای انها و سرعت پردازنده متناسب با هم تنظیم شود این در حالی است که برای AVR اگر برش زمانی اجرای برنامه کم باشد اکثر زمان با عملیات Text Swith (تعویض متن) اختصاص می یابد و اگر این زمان زیاد باشد پردازش موازی نخواهیم داشت (حتی هنگامی که برش زمانی برای هر برنامه قابل تنظیم باشد) تنها زمانی به درستی میتوان این کار را انجام داد که برنامه ها زمانبر نباشند.


    Qt - A cross-platform application and UI framework

    با کامپایلرهای قدرتمند GCC در Linux و MinGw در Windows

    دیدگاه


      #3
      پاسخ : سیستم مولتی تسکینگ

      سلام استاد تشکر بابت توضیحاتتون :smile:
      اطلاعات بیشتری در مورد راه اندازی این سیستم در محیط بسکام یا کدویژن میتونید در اختیار بنده بذارید؟
      اگر واستون امکان داره لطفا مرجع یا مثالی معرفی بفرمائید
      واقعا ممنون :redface:

      http://www.ecapic.ir/image/ECA-090927112544.png

      دیدگاه


        #4
        پاسخ : سیستم مولتی تسکینگ

        سلام
        من یک نمونه برنامه مولتی تسکینگ نوشتم به همین روش که فرمودید.
        اما به تازگی فهمیدم که میشه runtime با همین روش مولتی تسکینگ به میکرو کد اضافه یا حذف کنیم و بصورت داینامیک بگیم واسه این وقفه یا ... دیگه فاکشن 1 را اجرا نکن و بیا مثلا
        فانکشن 2 را اجرا کن.
        اما سوال من اینجاست: ما وقتی کد اضافه میکنیم به فلش اضافه میکنیم و بصورت ران تایم چطوری میتونیم کد اضافه یا حذف کنیم؟ خیلی برام مبهمه . ما روی فلش کدهای هگز مینویسیم درسته؟
        پس چطوری موقعی که میکرو داره کار میکنه ما میتونیم ران تایم کد بهش اضافه یا حذف کنیم. میشه این قسمت را بیشتر توضیح بدید؟ این حافظه بوت لودر چیه؟ ربطی به اون نداره؟
        ممنون میشم جواب بدید

        دیدگاه


          #5
          پاسخ : سیستم مولتی تسکینگ

          نوشته اصلی توسط hne573
          اما سوال من اینجاست: ما وقتی کد اضافه میکنیم به فلش اضافه میکنیم و بصورت ران تایم چطوری میتونیم کد اضافه یا حذف کنیم؟ خیلی برام مبهمه . ما روی فلش کدهای هگز مینویسیم درسته؟
          پس چطوری موقعی که میکرو داره کار میکنه ما میتونیم ران تایم کد بهش اضافه یا حذف کنیم. میشه این قسمت را بیشتر توضیح بدید؟ این حافظه بوت لودر چیه؟ ربطی به اون نداره؟
          ممنون میشم جواب بدید
          سلام .......
          Boot Loader یک قسمت از حافظه Flash ه که میتونی در این قسمت کدی بنویسی که قسمت Application رو برنامه ریزی مجدد کنی نمونه اون رو روی گوشی های موبایل و سیستم هایی که قابلیت Upgrade یا Update دارن (مثل رسیورها) میتونی ببینی. :biggrin:
          سوال متداولی که ممکنه مطرح بشه...
          ایا بدون این قسمت (مثلا با فرض داشتن یک سیستم هوشمند) میشه هر چند وقت یک بار میکرو خودش کد ماشین جدید تولید کنه و قسمتی از برنامه رو Update کنه؟
          خیر در AVR عموما از دو دستور برای نوشتن و خواندن در حافظه Flash استفاده میشه (LPM (Load Program Memory برای خواندن و ( SPM (Store Program Memory برای نوشتن.
          LPM در هر قسمتی از Flash قابل دستیابی است اما SPM در قسمت Application کار نمیکنه .
          طریقه استفادش هم اینطوریه که با شروع برنامه از قسمت Application با برقراری یک شرط خاص (مثلا بافر سریال پر باشه یا یه پین از میکرو 0 بشه ...) به قسمت Boot Loader میریم و حافظه FLASH رو برنامه ریزی مجدد میکنیم. حالا شما چه ارتباطی بین این دو موضوع پیدا کردید ؟ :eek: اگه برنامه میکرو عوض بشه تمام داستانها عوض میشه دیگه ! :mrgreen:

          نوشته اصلی توسط hne573
          اما به تازگی فهمیدم که میشه runtime با همین روش مولتی تسکینگ به میکرو کد اضافه یا حذف کنیم
          خیر اضافه یا حذف کدی که در حافظه Flash موجوده مثل این میشه که تو یه برنامه عادی (توی حلقه) با برقراری یه شرط خاص یه تابع رو اضافه تر اجرا کنی (چون به هر حال شما با برقراری یا عدم برقراری یک
          شرط خاص میخوای Task مورد نظر رو اضافه یا حذف کنی)

          نوشته اصلی توسط hne573
          و بصورت داینامیک بگیم واسه این وقفه یا ... دیگه فاکشن 1 را اجرا نکن و بیا مثلا فانکشن 2 را اجرا کن.
          در مورد وقفه ها میدونیم که ادرس های جدول بردار وقفه تو AVR ثابته یعنی ادرسی که قراره موقع وقفه به اون ادرس بره ثابته اما با رفتن به روتین وقفه میشه تصمیم گرفت که چه کدی اجرا بشه و با حالت عادی هیچ تفاوتی نمیکنه.


          نوشته اصلی توسط hne573
          پس چطوری موقعی که میکرو داره کار میکنه ما میتونیم ران تایم کد بهش اضافه یا حذف کنیم؟
          ما کدی به حافظه FLASH همونطور که توضیح دادم اضافه یا حذف نمیکنیم بلکه ادرس شروع یک بلاک کد (تابع) رو (کدی که تو حافظه Flash موجوده) به صف TASK ها اضافه یا حذف میکنیم. :mrgreen:


          Qt - A cross-platform application and UI framework

          با کامپایلرهای قدرتمند GCC در Linux و MinGw در Windows

          دیدگاه


            #6
            پاسخ : سیستم مولتی تسکینگ

            نوشته اصلی توسط سیما نیکخواهی
            سلام استاد تشکر بابت توضیحاتتون :smile:
            اطلاعات بیشتری در مورد راه اندازی این سیستم در محیط بسکام یا کدویژن میتونید در اختیار بنده بذارید؟
            اگر واستون امکان داره لطفا مرجع یا مثالی معرفی بفرمائید
            واقعا ممنون :redface:
            سلام ....
            خواهش میکنم قابلی نداشت :icon_razz:
            بسکام که بیخیال با کدویژن فکر نکنم بتونید امادشو پیدا کنید اما دو پورت برای IAR و AVRGCC ارائه شده از این سایت میتونید پورت AVRGCC رو دانلود کنید.
            در مورد راه اندازی خودش یه مثال Test داره و توضیحاتی هم تو این سایت ارائه شده. :mrgreen:
            موفق باشید :biggrin:


            Qt - A cross-platform application and UI framework

            با کامپایلرهای قدرتمند GCC در Linux و MinGw در Windows

            دیدگاه

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