اطلاعیه

Collapse
No announcement yet.

چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

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

    چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

    سلام .

    امکانش هست در مورد صورت سوال راهنماییم کنید ؟؟؟ چرا هسته آرم AT91SAM7X شامل دو پروسسور مجزا هست که هر یک برای خودشون Instruction Set مجزایی دارند ...

    وظیفه هر پروسسور چی هست ؟؟؟

    #2
    پاسخ : چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

    نه اینجور نیست.
    هر کدوم یه مد کاری میکرو هستش.
    حالت 16 بیت(Tumb) و 32 بیت(normal).(واسه هدف خاصی هستش)
    من فکر کنم نیاز که کتاب ARM توی فروم رو بهتون پیشنهاد بدم تا بخونید و همه جوابهاتون رو بگیرید.


    دانلود کتاب فارسی ARM

    دیدگاه


      #3
      پاسخ : چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

      دست شما درد نکنه ...
      ممنون از راهنماییتون .

      دیدگاه


        #4
        پاسخ : چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

        سلام
        همون طور که دوستمون گفتند یک پردازنده وجود داره !
        دستورات THUMB دارای سرعت پایینتری و حجم کد پاینتری دارند ولی دستورات ARM سرعت بالاتر و حجم کد بالاتری دارند .

        معمولا کمپایل دستورات با THUMB انجام می شه تا حجم کد پایین تری تولید بشه ! ولی میشه اینکا رو بر عکس کرد و یا اصلا توی خود برنامه هم با ARM دستورات کمپایل بشن هم با THUMB

        دیدگاه


          #5
          پاسخ : چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

          سلام پیمان جان ...
          خوب ARM اومده یه هسته 32 بیتی درست کرده ... بعد به صورت پیش فرض داره از TUMB استفاده میکنه ... این کمی غیر منطقی به نظر نمیرسه ...
          شما تو پاسخی که به من دادین گفتین که کامپایل دستورات با TUMB انجام میشه ... منظور از کامپایل چی هست ???

          امکانش هست کدی رو در اختیارم بزارین ... یا تنظیماتی رو عنوان کنین تا بدونم چجوری میتونم دسورات رو با TUMB اجرا کنم ... یا با ARM ...
          فک میکنم تمام کارهایی رو که هسته َARM داره انجام میده رو TUMB نمیتونه انجام بده چون 16 بیتی هست ...

          به هر حال در صورت امکان کمی بیشتر راهنماییم کنین ...

          پیشاپیش ازتون تشکر میکنم .

          دیدگاه


            #6
            پاسخ : چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

            نوشته اصلی توسط v_ilkhani

            خوب ARM اومده یه هسته 32 بیتی درست کرده ... بعد به صورت پیش فرض داره از TUMB استفاده میکنه ... این کمی غیر منطقی به نظر نمیرسه ...
            مهمترین دلیلش سازگاری با رم های 16 بیتی ارزانقیمت ( اکثر رم های قدیمی )است . arm 7 محصول سال 1995 است فقط 20 سال با اولین میکروکنترلر فاصله داره . تازه مد 8 بیتی مخصوص جاوا هم دارد .
            تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
            داشتن عقله زيادتر از دیگر آدم ها است

            دیدگاه


              #7
              پاسخ : چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

              منظور از مد 8 بیتی مخصوص Java چی هست ؟؟؟ :surprised:

              اونجور که من در جریان هستم ... نهایتا برنامه نوشته شده تحت هر زبانی به زبان ماشین ترجمه میشود .
              این زبان شامل یک سری Instruction Code هایی هست که Low Level ترین سطح دسترسی به CPU رو شامل میشن ... و دو ردیف Instruction Set ما داریم ... که یکی مربوط به هسته آرم و دیگری مربوط به هسته TUMB شانزده بیتی میشه ...
              لیست این دستورات در صفحات 41 و 42 دیتاشیت AT91SAM7x موجود هست . این دستورات هم مستقل از زبان سطح بالایی هست که در اون کد نویسی شده ...

              البته اون جور که من در جریان هستم ... Instructio Set هایی برای پیاده سازی برخی از امکانات سیستم عامل تعریف شده اند مانند نوع داده ای Semaphore ... که حتما باید در درون سخت افزار پشتیبانی میشدند وگرنه نرم افزار به تنهایی نمیتوانست از پس پیاده سازی اون نوع الگوریتم بر بیاد ...

              امکانش هست در مورد مود 8 بیتی Java و اینکه چه تاثیری میتونه روی هسته داشته باشه کمی توضیح بدین ...

              پیشاپیش ازتون تشکر میکنم .

              دیدگاه


                #8
                پاسخ : چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

                پروسسور آرم سه حالت عملیاتی داره
                1-arm
                2-thumb
                3- Jazelle

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




                نوشته اصلی توسط v_ilkhani
                . و دو ردیف Instruction Set ما داریم ... که یکی مربوط به هسته آرم و دیگری مربوط به هسته TUMB شانزده بیتی میشه ...
                والا مطئن نیستم ولی( 99.99 درصد) دو ردیف نداریم . برای تغییر حالت مد عملیاتی cpu باید پنج بایت اول ریجستر psr که به نام m0 تا m4 معروف است باید مقدار دهی کرد . بعد این مقدار دهی همه پ کد های زیرین 16 بیتی تفسیر میشه تا تغییر دوباره ریجستر

                تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
                داشتن عقله زيادتر از دیگر آدم ها است

                دیدگاه


                  #9
                  پاسخ : چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

                  نوشته اصلی توسط v_ilkhani
                  سلام پیمان جان ...
                  خوب ARM اومده یه هسته 32 بیتی درست کرده ... بعد به صورت پیش فرض داره از TUMB استفاده میکنه ... این کمی غیر منطقی به نظر نمیرسه ...
                  شما تو پاسخی که به من دادین گفتین که کامپایل دستورات با TUMB انجام میشه ... منظور از کامپایل چی هست ???

                  امکانش هست کدی رو در اختیارم بزارین ... یا تنظیماتی رو عنوان کنین تا بدونم چجوری میتونم دسورات رو با TUMB اجرا کنم ... یا با ARM ...
                  فک میکنم تمام کارهایی رو که هسته َARM داره انجام میده رو TUMB نمیتونه انجام بده چون 16 بیتی هست ...

                  به هر حال در صورت امکان کمی بیشتر راهنماییم کنین ...

                  پیشاپیش ازتون تشکر میکنم .
                  سلام ! به به ! چه گلی چه سنبلی ! :biggrin: :biggrin:

                  پردازنده های ARM اصولا 32 بیتی طراحی شدن ولی برای منطبق شدن و بهره بردن و افزایش قدرت رقابتی در واقع قابلیت های دیگه ای هم به اون اضافه شد و این شد که امروزه نسخه های مختلفی از این پردازنده توی بازار موجوده که بعضی از اونها هم توسط کمپانی های دیگه با ترکیب یه سری واحدهای دیگه تبدیل به میکروکنترلر بر مبنای ARM شده !

                  خب حالا قابلیت اجرای دستورات 16 بیتی THUMB و 8 بیتی جاوا یکی از مزیت های این پردازنده هاست به طوریکه استفاده از دستورات 16 بیتی تا 30 درصد باعث کاهش حجم کد تولید شده توسط کمپایلر میشه !
                  دقیقا اشاره نکردید که از کدوم ARM استفاده میکنید ولی پردازنده های ARM7که با نام ARMTDMI مشهور هستند توانایی استفاده از دستورات 16 بیتی و 32 بیتی رو داره و نمیتونه با دستور 8 بیتی کار کنه ( برای فهم بیشتر به دیتاشیت پردازنده رجوع کنید)

                  منظور از کامپایل چی هست ???
                  در واقع برنامه ای که شما مینویسید از زبان سی استفاده کرده و این برنامه برای میکروکنترلر قابل فهم و اجرا نیست ! نرم افزارهایی که این برنامه ها رو به زبان قابل اجرا و فهم برای میکروکنترلر ها تبدیل می کنند اصطلاحا کمپایلر نامیده میشن مانند CODEVISION ، IAR ،KEIL و غیره

                  برای تنظیم نحوه ی کمپایل کردن بر اساس THUMB یا ARM باید به منوی تنظیمات پروژه ی کمپایلر بری ، اگه از کمپایلر IAR استفاده میکنی بگو تا من تنظیماتشو بهت بگم ! من با KEIL یا کمپایلرهای دیگه کار نکردم

                  به هر حال موفق باشید

                  دیدگاه


                    #10
                    پاسخ : چرا AT91SAM7X از دو هسته ARM32bit , Tumb16bit تشکیل شده ؟؟؟

                    باسلام
                    دوستان کامل توضیح دادند ولی خوب چیزی که بنده متوجه شدم
                    این است که امکان بهینه کردن برنامه در موقع کامپایل است
                    اینکه دستورات شما سریع تر باشه با حالت ARM 32 بیتی و اشغال فضای بیشتر
                    یا اینکه دستورات کند تر باشه 16 بیتی به حالت thumb و گرفتن فضای کمتر.
                    ----
                    بکمک کامپایلر IAR که بنده کار میکنم این امکانپذیر است :nice:
                    این امکانی برای شما است که نسبت به نوع کار شما انتخاب متفاوت رو انجام بدید

                    دیدگاه

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