اطلاعیه

Collapse
No announcement yet.

کامپایلر IAR

Collapse
این موضوع برجسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : کامپایلر IAR

    با سلام به همه دوستان عزیز.
    من چند وقت پیش IAR ورژن 6.21 رو دانلود کردم.تو About نوشته :
    IAR Embedded Workbench for Atmel AVR version 6.21.1
    IAR Embedded Workbench common components version 6.5.9.2707

    تو ورژنهای قبلی تو فایل map آخرش مقدار تقریبی CSTACK و RSTACK رو میزد، اما تو این ورژن هرچقدر تنظیمات خروجی رو تغییر دادم نمیزنه.
    از دوستان کسی هست که به این مشکل برخورد کرده باشه یا نه؟
    این هم فایل پروژه (البته بدون سورس) :rolleyes:
    http://ul.to/5g694aa0

    دیدگاه


      پاسخ : کامپایلر IAR

      نوشته اصلی توسط طراح
      بارها بر این نکته تاکید شده که در مواردی مانند امثال این سوال، نمونه کد خود را بصورت کامل قرار دهید و با این روش طرح سوال و بدون در اختیار قرار دادن کدی که منجر به این اشکال شده، امکان پاسخگویی صحیح فراهم نمی شود.
      سلام.وقتی کد پرو÷ه ی ov7670 (همونی که جناب طراح روی سایتشون گذاشتن) رو rebuild all می کنم (بدون تغییر در برنامه ) ارور بالا رو را برای فایل هدر font میده.دلیلش نمیدونم چیه؟

      دیدگاه


        پاسخ : کامپایلر IAR

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

        دیدگاه


          پاسخ : کامپایلر IAR

          سلام به همه ی دوستان.در برنامه ی زیر قراره با لبه پایین رونده ی PC1 یک داده ی دلخواه از طریق پورت سریال ارسال بشه(تنظیمات اولیه ی یوزارت در برنامه ی MAIN انجام شده و از نظر تنظیمات اولیه مشکلی نداره) و این روند همیشه تکرار بشه.داخل وقفه ی خارجی 0 از وقفه ی یوزارت استفاده کردم ولی برنامه کار نکرد.(هیچ داده ای روی پورت سریال قرار نگرفت.).اگه ممکنه راهنماییم کنید اشکالشو بفهمم.ببخشید وقتتونو میگیرم.
          کد:
          #include "int.h"
          
          void I_INT0(void)
          {
           PORTC_PIN1CTRL=PORT_OPC_PULLDOWN_gc|PORT_ISC_FALLING_gc;
           PORTC_INTCTRL=PORT_INT0LVL_LO_gc;
           PORTC_INT0MASK=PIN1_bm;
           PMIC_CTRL=PMIC_LOLVLEX_bm; 
           sei(); 
          }
          
          ISR(PORTC_INT0_vect)
          {
           PORTC_INTCTRL=0;
           USARTC0_CTRLA=0X01;
          
            PMIC_CTRL=PMIC_LOLVLEX_bm; 
           sei();
          while(1);
          }	
          
          ISR(USARTC0_DRE_vect)
           {
            USARTC0_DATA=0X01;
            USARTC0_CTRLA=0X00;
            PORTC_INTCTRL=PORT_INT0LVL_LO_gc;
            sei();
            while(1);
           }

          دیدگاه


            پاسخ : کامپایلر IAR

            با سلام
            یه سوال مبتدیانه داشتم ، خیلی اذیتم کرده . با همین IAR کار میکنم .
            فرض کنید توی یه برنامه 3 تا فایل داشته باشیم
            main.c
            Foo.h
            Foo.c

            Foo.c رو به برنامه اضافه کردم
            از تابع xy ایراد نمیگیره اما از متغیر ab ایراد میگیره. من میخوام این متغیر رو هم توی Foo.c استفاده کنم و هم توی main.c . به نظر شما راه حل چیه ؟

            اینم ایراد IAR :
            Error[e27]: Entry "ab" in module KEY_7SEG ( G:\Projects\Digital_Ruler\Xmega Code\tst\Debug\Obj\KEY_7SEG.r90 ) redefined in module main ( G:\Projects\Digital_Ruler\Xmega Code\tst\Debug\obj\\main.r90
            کد:
            Main.c
            -----------
            
            #include "Foo.h"
            int main( void )
            {
             int a=xy(4,5);
             ab=2;
             return 0;
            }
            
            
            Foo.c
            ---------
            #include "Foo.h"
            void xy(int x,int y)
            {
            return x*y;
            }
            
            Foo.h
            ----------
            void xy(int x,int y);
            int ab=0;
            "در عجبم از مردمی که خود زیر شلاق ظلم و ستم زندگی می کنند و بر حسینی می گریند که آزادنه زیست" شریعتی
            در جهان روشنایی هایی وجوددارد که در عمیق ترین ظلمات نهانند.

            دیدگاه


              پاسخ : کامپایلر IAR

              با سلام
              بعد از کلی کلنجار رفتن با برنامه ، بعد از غیر فعال کردن چند متغیر از نوع eeprom این مشکل حل شد و خطا نداد. حالا برای استفاده از eeprom و درست کامپایل شدن برنامه چیکار میشه کرد؟
              ممنون
              "در عجبم از مردمی که خود زیر شلاق ظلم و ستم زندگی می کنند و بر حسینی می گریند که آزادنه زیست" شریعتی
              در جهان روشنایی هایی وجوددارد که در عمیق ترین ظلمات نهانند.

              دیدگاه


                پاسخ : کامپایلر IAR

                با سلام . طبق اونچه که بنده فهمیدم فرمت فایلهای خروجی مانند intel و motorola برای هر فضای حافظه خاص احتیاج به یک فایل جداگانه دارند . مثلا برای حافظه ایپرام احتیاج به تولید یک فایل جداگانه وجود دارد و برای حافظه فلش یک فایل جداگانه دیگر . برای ایجاد این دو فایل جداگانه از بخش project->options->linker->extra options دو خط زیر را وارد میکنیم

                -Ointel-standard,(CODE)=flash.hex
                -Ointel-standard,(XDATA)=eeprom.hex

                یکی دیگر از مواردی که باید انجام شود دستورات زیر است.
                از بخش project->options->linker->output در بخش other گزینه output format را به ubrof8 تغییر میدهیم تا در کامپایل کردن خطا نگیرد و با توجه به بخش extra options دو فایل مورد نیاز را تولید کند.

                حال بعد از کامپایل کردن بدون خطای لینکر دو فایل جداگانه داریم که میتوان آن دو را پرگرام کرد.

                اینم مرجع اصلی برای رفع مشکل
                http://supp.iar.com/Support/?note=42...=search+result
                در این صفحه یک راه حل دیگه هم عنوان کرده و اون نوشتن دستور زیر در بخش extra options می باشد .
                کد:
                 	
                
                To limit the output to flash memory Use the XLINK option -y .
                -y(CODE)
                "در عجبم از مردمی که خود زیر شلاق ظلم و ستم زندگی می کنند و بر حسینی می گریند که آزادنه زیست" شریعتی
                در جهان روشنایی هایی وجوددارد که در عمیق ترین ظلمات نهانند.

                دیدگاه


                  پاسخ : کامپایلر IAR

                  برای اینکه یک متغیر در دو یا چند فایل بصورت مشترک شناخته شود باید در یکی از آنها تعریف شود (بصورت عمومی) و در بقیه هم عنوان extern معرفی شود. در مورد فایل های hex خروجی eeprom و flash در iar هم در تاپیک زیر بصورت مفصل توضیح داده شده است:

                  http://www.eca.ir/forum2/index.php?t...4278#msg474278

                  عباراتی هم که ذکر کردید در صورتی که پروژه بصورت سازگار با Avr Studio تعریف شود، در نسخه Release بصورت خودکار در تنظیمات Extra options قرار می گیرد:

                  کد:
                  -y(CODE)
                  -Ointel-extended,(DATA)=$EXE_DIR$\$PROJ_FNAME$_data.hex
                  -Ointel-extended,(XDATA)=$EXE_DIR$\$PROJ_FNAME$_eeprom.hex
                  اوژن: به معنای افکننده و شکست دهنده است
                  دانایی، توانایی است-Knowledge is POWER
                  برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                  وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                  قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                  اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                  ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                  دیدگاه


                    پاسخ : کامپایلر IAR

                    نوشته اصلی توسط aliagha20
                    سلام به همه ی دوستان.در برنامه ی زیر قراره با لبه پایین رونده ی PC1 یک داده ی دلخواه از طریق پورت سریال ارسال بشه(تنظیمات اولیه ی یوزارت در برنامه ی MAIN انجام شده و از نظر تنظیمات اولیه مشکلی نداره) و این روند همیشه تکرار بشه.داخل وقفه ی خارجی 0 از وقفه ی یوزارت استفاده کردم ولی برنامه کار نکرد.(هیچ داده ای روی پورت سریال قرار نگرفت.).اگه ممکنه راهنماییم کنید اشکالشو بفهمم.ببخشید وقتتونو میگیرم.
                    سوال خود را با ذکر نمونه کد کامل در تاپیک زیر مطرح کنید:

                    http://www.eca.ir/forum2/index.php?topic=59580.0
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه


                      پاسخ : کامپایلر IAR

                      سلام به همه ی دوستان.یه سوال ساده داشتم.کدهایی که بااستفاده از avr studio نوشته شده, در محیط iar قابل استفاده کردن هست یا اینکه نیاز به تغییر داره؟
                      با تشکر

                      دیدگاه


                        پاسخ : کامپایلر IAR

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

                        دیدگاه


                          پاسخ : کامپایلر IAR

                          سلام
                          چه جوری میشه iar را برای c99 تنظیم کرد؟
                          آیا برای iar 6.21 کرک اومده؟

                          دیدگاه


                            پاسخ : کامپایلر IAR

                            نوشته اصلی توسط glassybox
                            چه جوری میشه iar را برای c99 تنظیم کرد؟
                            در نسخه 6.11 از مسیر Options/C-C++Compiler/Language1 می توان گزینه C99 را انتخاب کرد.
                            اوژن: به معنای افکننده و شکست دهنده است
                            دانایی، توانایی است-Knowledge is POWER
                            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                            دیدگاه


                              پاسخ : کامپایلر IAR

                              سلام
                              من وقتی تو مد دیباگ میرم iar هنگ می کنه راه حل چیه؟

                              دیدگاه


                                پاسخ : کامپایلر IAR

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

                                دیدگاه

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