اطلاعیه

Collapse
No announcement yet.

کامپایلر IAR

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

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

    سلام خسته نباشید.
    من یه برنامه دارم مینویسم با atmega128 و یک رم 64 کیلویی .
    یک بافر 52 کیلویی میخوام اما میگه array is too large .
    مدل حافظه هم small هست. رم خارجی رو هم فعال کردم .
    بدون اینکه رم خارجی رو هم فعال کنم هم تست کردم البته با این روش :
    __no_init char Buffer[54100U] @0x2000;

    چه راهی پیشنهاد میکنید؟

    دیدگاه


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

      نوشته اصلی توسط امیر . م
      سلام خسته نباشید.
      من یه برنامه دارم مینویسم با atmega128 و یک رم 64 کیلویی .
      یک بافر 52 کیلویی میخوام اما میگه array is too large .
      مدل حافظه هم small هست. رم خارجی رو هم فعال کردم .
      بدون اینکه رم خارجی رو هم فعال کنم هم تست کردم البته با این روش :
      __no_init char Buffer[54100U] @0x2000;

      چه راهی پیشنهاد میکنید؟
      حافظه مورد نظرتون رو به صورت آرایه تعریف نکنید، سعی کنید از پوینتر استفاده کنید و با malloc اون مقدار 52 کیلو رو اختصاص بدید به پوینتر.

      اسمایل، تومورو ویل بی وُرس

      دیدگاه


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

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

        دیدگاه


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

          جناب طراح ارادت داریم قربان.
          از اونجایی که مدلهای حافظه ای که IAR برای atmega128 میتونه بیاره tiny , small هست ، پس یه بافر بیشتر از 32 کیلو اصلا نمیتونیم بیاریم. درسته؟
          در جدول شماره 7 بعد از 32 کیلو 8 مگ هست !
          این برای IAR یک عیب به شمار نمیاد ؟؟؟ !!!! یا اینکه من دارم اشتباه میگم.

          من قبلا این کد رو تو کدویژن زده بودم. اما کدویژن احمق یه بار بالا میومد یه بار نمیومد . حالا که با IAR کدش رو زدم خیلی stable شده و میدونم که اگر بعد از کامپایل شدن بالا اومد ، دیگه بالا میاد و اگر نیومد بالا نمیاد. و این خیلی خوبه .

          حالا راه حل چیه ؟ چکار کنم که که یه بافر 52 کیلویی داشته باشم؟

          دیدگاه


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

            درباره این مشکل در avr-gcc در تاپیک زیر بحث شده است:

            http://www.avrfreaks.net/index.php?n...ic&t=58517

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

            دیدگاه


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

              جناب طراح ممنون .
              من اومدم یک بافر با سایز 32 کیلو تعریف کردم ، بلا فاصله بعدش یک بافر 20 کیلویی تعریف کردم و برنامه رو اصلا تغییری ندادم و ایندکس بافر اولم تا 52 کیلو هم میره .
              فعلا تو کوتاه مدت مشکلی پیش نیومد باید ببینم تو دراز مدت وضعیت همینطور میمونه یا نه !!!

              البته این یک کار غیر اخلاقی و غیر اصولی هست. میدونم. اما چاره ای نداشتم. :nice:

              دیدگاه


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

                من میخوام یه هدر برای LCD بنویسم ولی نمیدونم چجوری این کار رو بکنم + نمیدونم برای تعریف پایه ها از چه مکانیسمی استفاده کنم
                الآن توابع آماده هست

                دیدگاه


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

                  با سلام
                  من تازه کار با کامپایلر iar رو شروع کردم ،البته فقط برای کار با سری مگا.
                  چند تا سوال داشتم ممنون میشم پاسخ بدید :
                  1.فایل هگز تولیدی توسط نرم افزار همون .d90 هست ؛ از کجا باید حجم اش رو متوجه شد، از روی مقدار حجم خود فایل؟
                  2. اینکه حجم این فایل .d90 همان حجم اشغال شده از حافظه فلش میباشد؟
                  3.اگر جواب دو سوال بالا بله هست یعنی این برنامه که نوشتم و حجم فایل .d90 اش شده 10 کیلو بایت رو نمیشه توی مگا 8 ریخت ؟
                  البته این رو هم بگم که Optimizations رو روی حالت high گذاشتم اما فرقی نکرد!؟؟
                  این برنامه هست:

                  #include <ioavr.h>
                  #include <intrinsics.h>
                  unsigned char i;
                  void main( void )
                  {
                  DDRA=0XFF;
                  TCCR1B=0X02;
                  TIMSK=0x04;
                  __enable_interrupt();
                  while(1){
                  if(i==100)PORTA=!PORTA,i=0;
                  };
                  }
                  #pragma vector= TIMER1_OVF_vect

                  __interrupt void TIMER1_OVF(void)
                  {
                  /*FOR BASE TIME : 5000us*/
                  TCNT1=0xec78;
                  i++;
                  }


                  4.فایل .map در کجا ذخیره میشه ، من نمی تونم پیداش کنم ؟

                  دیدگاه


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

                    آقا یک چیزایی فهمیدم !
                    من اول توی محیط دیباگ کار میکردم ، نگو این محیط برای ایجاد فایلهای دیباگ برای دیباگ کردن بوسیله avr studio هست ، حالا امدم کرکره رو روی releases گذاشتم و تنظیمات رو از اول انجام دادم و دوباره کامپایل و میک کردم که فایلهای هگز رو در مسیر : Release\Exe ایجاد کرد اما باز یک سوال دیگه اینجا سه فایل تولید شده کدومش رو باید توی میکرو دانلود کنم ، حجم یکیشون 2 کیلو بایت بدون پسوند و دو تای دیگه 1 کیلو بایت با پسوند های _datd و _ eeprom

                    مشکل 4 ام هم همچنان برقراره ، فایل .map رو نمی تونم پیدا کنم !؟؟

                    دیدگاه


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

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

                      تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

                      دیدگاه


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

                        نوشته اصلی توسط شهریار رجب زاده
                        من میخوام یه هدر برای LCD بنویسم ولی نمیدونم چجوری این کار رو بکنم + نمیدونم برای تعریف پایه ها از چه مکانیسمی استفاده کنم
                        الآن توابع آماده هست
                        کتابخانه ای برای LCD کاراکتری در همین تاپیک قرار داده شده که می توانید برای روش تعریف پایه ها به فایل lcd_0.h در کتابخانه مراجعه کنید.

                        نوشته اصلی توسط mojtaba_led
                        من اول توی محیط دیباگ کار میکردم ، نگو این محیط برای ایجاد فایلهای دیباگ برای دیباگ کردن بوسیله avr studio هست ، حالا امدم کرکره رو روی releases گذاشتم و تنظیمات رو از اول انجام دادم و دوباره کامپایل و میک کردم که فایلهای هگز رو در مسیر : Release\Exe ایجاد کرد
                        در محیط debug هم می توان فایل hex تولید کرد که در پست زیر توضیح داده شده است:

                        http://www.eca.ir/forum2/index.php?t...6265#msg276265

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

                        دیدگاه


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

                          در flash میکروکنترلر باید فایل با پسوند hex برنامه ریزی شود. فایل map در صورتی که تولید آن از طریق تنظیمات انجام شود، در فولدر List قرار می گیرد.
                          اما پسوند هر سه تاشون HEX هست :


                          آموزش آقای نحوی رو خوندم اما در مورد تنظیمات فایل MAP چیزی ذکر نکرده بودند ، ممنون میشم راهنماییم کنید

                          دیدگاه


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

                            نوشته اصلی توسط mojtaba_led
                            اما پسوند هر سه تاشون HEX هست :


                            آموزش آقای نحوی رو خوندم اما در مورد تنظیمات فایل MAP چیزی ذکر نکرده بودند ، ممنون میشم راهنماییم کنید
                            شما میتونید اولی رو بریزید توی فلش میکروکنترلر
                            اگر هم با ایپرام کاری انجام دادید مثلا متغیر در این فضا تعریف کرده و آن را مقدار دهی کردید فایل ایپرام را درون ایپرام میکرو بریزید
                            نوشته اصلی توسط طراح
                            کتابخانه ای برای LCD کاراکتری در همین تاپیک قرار داده شده که می توانید برای روش تعریف پایه ها به فایل lcd_0.h در کتابخانه مراجعه کنید.
                            اون رو هم دیده بودم
                            منظورم پیاده سازی روشیه برای اینکه توی برنامه اون پایه ها رو مشخص کنیم
                            اگر میشه روش هدر نویسی در IAR رو هم بگید

                            دیدگاه


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

                              نوشته اصلی توسط mojtaba_led
                              آموزش آقای نحوی رو خوندم اما در مورد تنظیمات فایل MAP چیزی ذکر نکرده بودند ، ممنون میشم راهنماییم کنید
                              نمیدونم اینه منظورتون یا نه ولی پسوندش انگار map هست
                              project-->option-->linker-->list
                              اونجا همه چیز هست بعد کامپایل میکنید و فایل ساخته میشه

                              دیدگاه


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

                                نوشته اصلی توسط شهریار رجب زاده
                                منظورم پیاده سازی روشیه برای اینکه توی برنامه اون پایه ها رو مشخص کنیم
                                اگر میشه روش هدر نویسی در IAR رو هم بگید
                                شما نام پایه ها را در یک فایل header بر حسب سخت افزار define می کنید و در توابع هم از نام های تعریف شده استفاده می کنید که در صورت تغییر سخت افزار، تنها همان تعریف اولیه تغییر خواهد کرد و متن توابع به قوت خود باقی خواهد ماند. اگر منظور دیگری دارید بصورت مشخص تر و با ذکر مثال سوال کنید. اگر منظور از نوشتن header روش نوشتن فایل های با پسوند h باشد که در این فایل ها در ابتدا محافظ فایل و سپس include های لازم و define ها و prototype توابع نوشته می شود و متن توابع و تعریف متغیرها در فایل همنام و با پسوند c قرار داده می شود.

                                در مورد 3 فایل با پسوند hex که در وضعیت release ایجاد می شود، یک فایل با نام ساده برای برنامه ریزی در flash و فایل با پسوند eeprom_ برای برنامه ریزی در eeprom تولید می شود. اما یک فایل سوم با پسوند data_ هم وجود دارد که مطابق توضیحات نه چندان واضح iar برای شرایطی تولید می شود که بخشی از فضای حافظه ram در اختیار یک حافظه غیر فرار قرار داده شود. شرایطی که برای تحقق چنین وضعیتی در خانواده avr قابل تصور است در زمانی است که در شماره هایی مانند mega128، در فضای ram خارجی مثلا یک eprom قرار داده شود و اطلاعات در زمان مقتضی از روی آن خوانده شود. به همین دلیل ظاهرا یک کپی از محتویات مقادیر اولیه فضای data در فایل جداگانه ای ذخیره می شود تا در صورت تحقق چنین شرایطی از آن برای برنامه ریزی اولیه استفاده شود.
                                اوژن: به معنای افکننده و شکست دهنده است
                                دانایی، توانایی است-Knowledge is POWER
                                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                                دیدگاه

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