اطلاعیه

Collapse
No announcement yet.

خواندن برنامه از حافظه ی خارجی

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

    #16
    پاسخ : خواندن برنامه از حافظه ی خارجی

    حل شد. اما اگر لطف کنید و توضیحاتی هم بدین ممنون میشم.
    کد:
    #ifdef __cplusplus
    extern "C"
    {
    #endif
    	char __low_level_init()
    	{
    		PORTH_OUT = 0xF3;
    		PORTH_DIR = 0xF7;
    		PORTK_DIR = 0xFF;
    	
    		EBI_CTRL = 1;
    		
    		EBI_CS0_CTRLB = 1;
    		EBI_CS0_BASEADDR = 0;
    		EBI_CS0_CTRLA = 0;
    		
    		EBI_CS1_CTRLB = 1;
    		EBI_CS1_BASEADDR = 0;
    		EBI_CS1_CTRLA = 0;
    		
    		EBI_CS2_CTRLB = 1;
    		EBI_CS2_BASEADDR = 0;
    		EBI_CS2_CTRLA = 0;		
    		
    		EBI_CS3_CTRLB = 1;
    		EBI_CS3_BASEADDR = 0;
    		EBI_CS3_CTRLA = (0x0B<<2) | 1;		
    		return 1;
    	}
    #ifdef __cplusplus
    }
    #endif

    دیدگاه


      #17
      پاسخ : خواندن برنامه از حافظه ی خارجی

      مطابق توضیحات Manual، برای استفاده از PH4-PH7 به عنوان A16-A19 باید فقط CS3 فعال باشد که در آخرین تغییرات شما هم همین وضعیت تنظیم شده است.
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #18
        پاسخ : خواندن برنامه از حافظه ی خارجی

        نوشته اصلی توسط طراح
        هر چند خانواده AVR و XMEGA تنها قادر است دستورات را از حافظه flash اجرا کند. اما با یک تکنیک ویژه و با استفاده از دستور اسمبلی ICALL می توان مطابق اطلاعات قرار داده شده در یک حافظه خارجی، دستورات مورد نظر را در flash اجرا کرد. در این مورد پستی هم در سایت AVRFreaks قرار داده شد و مورد تائید قرار گرفت که چنین روشی کاملا ممکن است اما اشکال بزرگ آن پائین آمدن بسیار زیاد سرعت اجرای هر دستورالعمل است. مسئله دیگر این است که این روش با ایجاد یک پروسه تبدیل روی برنامه اسمبلی قابل انجام است. پس اگر برنامه به زبان های سطح بالا هم نوشته شود، بعد از بدست آوردن کد معادل اسمبلی باید توسط یک نرم افزار مفسر، کد برنامه برای ذخیره سازی در حافظه جانبی تغییر داده شود و در نهایت اطلاعات flash و mmc به تفکیک توسط این مفسر تولید شوند.
        خلاصه آنکه چنین کاری ممکن است، اما منجر به کاهش شدید سرعت موثر در اجرای برنامه می شود.
        سلام.(ببخشید که به تاپیک قدیمی پاسخ میدم ولی منم همین مشکل رو دارم)
        میشه بیشتر توضیح بدین؟(استفاده از ICALL)
        من دقیق متوجه نشدم، یعنی باید یک مفسر بنویسیم؟



        دیدگاه


          #19
          پاسخ : خواندن برنامه از حافظه ی خارجی

          برای درک بهتر نحوه استفاده احتمالی از ICALL (و EICALL) لازم است یکبار جزئیات عملکرد این دستورات را بخوبی مطالعه کنید و اگر سوالی بود مجددا آن را مطرح کنید تا توضیحات بیشتری را ارائه کنم.
          اوژن: به معنای افکننده و شکست دهنده است
          دانایی، توانایی است-Knowledge is POWER
          برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
          وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
          قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
          اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
          ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

          دیدگاه


            #20
            پاسخ : خواندن برنامه از حافظه ی خارجی

            با تشکر از پاسختون
            به جز مطالعه توضیحات ICALL ،تاپیک شما که در AVRFreaks بود رو هم پیدا کردم و تقریبا متوجه شدم.
            http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=9 5932&start=0
            اگر اشتباه نکنم ICALL به آدرسی که در رجیستر Z ذخیره شده پرش میکنه، درسته؟ پس تا جایی که من از تاپیک شما فهمیدم باید آدرس هر دستور که در MMC ذخیره شده رو در رجیستر Z ذخیره کنیم و بعد از دستور ICALL استفاده کنیم تا به آدرس دستور مورد نظر در فلش بریم و بعد از اجرا شدن دستور به وسیله دستور RET به نقطه ای که بودیم بر میگردیم. درست متوجه شدم؟

            دیدگاه


              #21
              پاسخ : خواندن برنامه از حافظه ی خارجی

              جزئیات روش در همان تاپیک سایت AVRFreaks توضیح داده شده است. به عنوان توضیح بیشتر اگر فرض کنیم انجام منظور مورد نظر با ترکیب تعداد محدودی از دستورات اسمبلی ممکن باشد، این دستورات در حافظه flash ذخیره می شوند و اطلاعات خوانده شده از mmc مشخص می کند که در هر مرحله چه مقداری در رجیستر Z قرار گیرد و از طریق اجرای ICALL کدام دستور اسمبلی (که از قبل ذخیره شده) اجرا شود.
              اوژن: به معنای افکننده و شکست دهنده است
              دانایی، توانایی است-Knowledge is POWER
              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

              دیدگاه


                #22
                پاسخ : خواندن برنامه از حافظه ی خارجی

                یک سوال،
                چگونه باید محل دستورات رو در حافظه فلش تعیین کنیم؟

                دیدگاه


                  #23
                  پاسخ : خواندن برنامه از حافظه ی خارجی

                  اما و اگر این روش مربوط به همین مورد است که باید نرم افزاری در سطح یک کامپایلر موجود باشد که کدهای اسمبلی بهینه برای انجام منظور مورد نظر و اطلاعات متناظر در mmc برای دسترسی به این دستورات اسمبلی را تولید کند.
                  اوژن: به معنای افکننده و شکست دهنده است
                  دانایی، توانایی است-Knowledge is POWER
                  برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                  وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                  قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                  اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                  ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                  دیدگاه

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