اطلاعیه

Collapse
No announcement yet.

تفاوت FIQ با IRQ0 - IRQn چیه

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

    تفاوت FIQ با IRQ0 - IRQn چیه

    سلام
    تفاوت این دوتا ورودی اینتراپ چی هست
    تو اونجای که من متوجه شدم یکی اینتراپت معمولی و اون یکی سریع هستن و دیگه هرچی دیتا شیت رو خوندم چیز دیگه ای متوجه نشدم :cry:
    ممنون میشم اگه راهنمای کنین :biggrin:
    انجام پروژه های برنامه نویسی اندروید
    [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
    http://cafebazaar.ir/app/?id=com.atxdroid

    #2
    پاسخ : تفاوت FIQ با IRQ0 - IRQn چیه

    ولله من هم خیلی نمیدونم. مخصوصا اینکه چه جوری میشه از FIQ بجای IRQ استفاده کرد. اما مثل اینکه در آرم وقتی IRQ فعال میشه نسبت به موقعی که FIQ اجرا میشه یک ست متفاوت از رجیستر ها استفاده میشه که از لحاظ تعداد بیشتر ودرنتیجه سرعت اجرای کد وقفه کند تر میشه (احتمالا به خاطر push و pop کردن های بیشتر). ولی این زمان نبایستی بیشتر از یکی دو میکرو ثانیه باشه. خداییش منکه اینقده هنوز گیر نکردم.

    دیدگاه


      #3
      پاسخ : تفاوت FIQ با IRQ0 - IRQn چیه

      اگر اشتباه نکنم FIQ یه Fast Interrupt هست و وقتی AIC یه وقفه رو گزارش میده CPU هر جا که باشه میاد به این وقفه رسیدگی میکنه
      ولی بقیه IRQ ها cpu دستور جاری رو به اتمام میرسونه و بعد روال وقفه رو رسیدگی میکنه...

      دیدگاه


        #4
        پاسخ : تفاوت FIQ با IRQ0 - IRQn چیه

        ولله مجبورم کردین کلی بگردم. اما اینطوری که از مدارک موجود مخصوصا سایت شرکت ARM برمیاد:
        دو جور وقفه داریم. FIQ و IRQ. هر دوشون در حالت supervisor اجرا میشن. در حالت عادی معمولا همه فقط IRQ رو با ست کردن بیت هفتم از رجیستر cpsr فعال میکنن ولی FIQ بایستی با ست کردن بیت هشتم امکان فعال شدن پیدا کنه. از طرف دیگه چون در هنگام بروز وقفه احتیاج هست که رجیستر های پروسسور در پشته ذخیره و بعد بازیابی بشن و این خودش زمانبر هست عملا اجرای کد وقفه یک مقداری overhead داره که برای بعضی عملیات ممکنه زیاد باشه. در FIQ از اونجایی که پروسسور 8 رجیستر رزرو برای این حالت داره تعداد رجیستر هایی که نیازه ذخیره و بعد بازیابی بشن 8 تا کم میشه. بنا بر این سریعتر اجرا میشه. میتونین به سایت شرکت آرم یه سری بزنین:

        http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0301h/ch02s12s07.html

        یک سری هم به این بزنین:
        http://stackoverflow.com/questions/1119465/does-anyone-know-how-to-enable-arm-fiq

        اینم برای کار روی LPC بدرد میخوره:
        http://www.embeddedrelated.com/groups/lpc2000/show/6238.php

        دیدگاه


          #5
          پاسخ : تفاوت FIQ با IRQ0 - IRQn چیه

          بله در وقفه سریع FIQ رجیسترهای جدید R7 تا R12 مختص مد کاری FIQ وجود دارند
          ولی جالب اینه که وقتی از دستور __irq در معرفی تابع وقفه سریع، استفاده می کنیم کامپایلر باز هم از رجیسترهای اولیه R1 تا R5 استفاده می کنه.
          کسی میدونه چطور میشه به کامپایلر Keil، فرق تابع وقفه معمولی و تابع وقفه سریع رو فهماند.
          من از دستور __fiq استفاده کردم اما کامپایلر خطا میده و نمیشناسه این دستورو.

          دیدگاه

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