اطلاعیه

Collapse
No announcement yet.

تعریف متغیر در KEIL or IAR

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

    تعریف متغیر در KEIL or IAR

    سلام من میخوام یه متغیر تو حافظه فلش تعریف کنم باید چیکار کنم کمک کنید :angry: (با IAR EWARM V6.10 کار میکنم)
    C or C++ language

    #2
    پاسخ : تعریف متغیر در KEIL or IAR

    پاسخ ندادن به این تاپیک دو علت داره
    یا کلا کسی بلد نیست
    یا اگه بلده رو نمیکنه؟

    دیدگاه


      #3
      پاسخ : تعریف متغیر در KEIL or IAR

      نمیدونم اینطوریه یا نه برای IAR:
      int __flash x;
      آرم هم ایپرام نداره :icon_razz:

      دیدگاه


        #4
        پاسخ : تعریف متغیر در KEIL or IAR

        نوشته اصلی توسط شهریار رجب زاده
        آرم هم ایپرام نداره :icon_razz:
        آره ببخشید شهریار آقا میدونم EEPROM نداره اون یه خطا لپی بود اون بالا چشم حتما تصحیحش می کنم خلاصه شرمنده

        اون روشیم که گفتید کردم ارور میده اصلا همچین چیزی رو نمیشناسه آیا باید چیزی رو include کنم؟
        خیلی خیلی ممنون از پاسختون

        دیدگاه


          #5
          پاسخ : تعریف متغیر در KEIL or IAR

          سلام
          فکر کنم این جواب کارت رو بده.
          کد:
          const char i=0;

          دیدگاه


            #6
            پاسخ : تعریف متغیر در KEIL or IAR

            سلام ممنون از پاسختون
            ولی حامد آقا فکر کنم این فقط یه متغیرو از نوع Read only تعریف میکنه (درسته یا اشتباه میکنم) من می خوام یه متغیر A[] = {0x45,0x23,0x21,0x67,...};//char که حاوی 1024 عدد است در حافظه فلش میکرو ذخیره کنم من از IAR EWARM V6.10 استفاده می کنم ممنون میشم راهنماییم کنید
            با تشکر.

            دیدگاه


              #7
              پاسخ : تعریف متغیر در KEIL or IAR

              بخدا نیاز دارم یکی کمک کنه ممنون!

              دیدگاه


                #8
                پاسخ : تعریف متغیر در KEIL or IAR

                سلام
                const را می توانید قبل تعریف آرایه بیارید و با این کار آرایه را در حافظه فلش تعریف می کنید و فقط خواندنی می شود. الان من 4 تا عکس برای glcd را به همین روش در IAR برای میکرو تعریف کردم و آنها را با یک تاخیر کوچک بر روی glcd نمایش دادم مشکلی هم نداشت.
                کد:
                const unsigned char A[1024]={1,2,3,4,5,...};

                دیدگاه


                  #9
                  پاسخ : تعریف متغیر در KEIL or IAR

                  ببخشید معادل store global constants in FLASH MEMORY در IAR کجاست (آیا اصلا همچین گزینه ای داره یا خود کامپایلر متغیر های دارای const رو درون فلش قرار میده)
                  مثلا تو کد ویژن config project>C compiler>code generation

                  دیدگاه


                    #10
                    پاسخ : تعریف متغیر در KEIL or IAR

                    سلام
                    تو مسیری که نرم افزار IAR را نصب کردی یک فایل doc هست درون آن یک pdf به نام EWARM_DevelopmentGuide.ENU هست در اون اگر بگردی پیدا می کنید که گفته متغییر های const در ROM ذخیره می شود. خوب در مورد میکروکنترلرها منظور همون فلش میکرو هست. من با تستی که برای ذخیره عکس ها در میکرو برای glcd کردم مطمئنم که با const در حافظه فلش ذخیره می شود.

                    دیدگاه


                      #11
                      پاسخ : تعریف متغیر در KEIL or IAR

                      متغیر های عمومی در هر کامپایلری و هر محیطی دو نوع هستن. دارای مقدار اولیه و بدون اون. متغیر هایی که دارای مقدار اولیه نیستن در ابتدای کار برنامه قبل از اجرای main با صفر پر میشوند. اشاره گر ها با null (که همون مقدار عددی صفر رو داره). ولی مقادیر اولیه متغیر ها در این فاز از داخل محدوده غیر قابل از دست رفتنی (در محیط های میکرو کنترلری از داخل ناحیه فلش) به داخل ram کپی میشوند. اما اگر متغیر تعریف شده ذاتا قابل تغییر نباشد (مثل موقعی که از const یا flash__ استفاده میکنیم) بر خلاف تصور ما که انتظار داریم در ram قرار داشته باشند به ناحیه غیر فرار یعنی flash تعلق دارند.
                      بنا براین وقتی آرایه ای با مقادیر اولیه تعریف میکنیم این آرایه در ram و مقادیر اولیه اون در فلش وجود دارند. ولی آرایه ای که const تعریف شده قاعدتا نبایستی موجودیتی در ram سیستم پیدا کند.

                      دیدگاه


                        #12
                        پاسخ : تعریف متغیر در KEIL or IAR

                        دیدگاه

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