اطلاعیه

Collapse
No announcement yet.

code vision یا iar ؟

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

    code vision یا iar ؟

    سلام
    من قبلا از code vision استفاده می کردم ولی بنا به دلایلی اخیر مجبور شدم از iar استفاده کنم .
    با وجود اینکه فکر می کردم از code vision خیلی قویتر باشد اما فکر میکنم خیلی مزایای آنرا هم ندارد مثلا wizard کدویژن به هر کسی در هر حالی کمک کرده؟
    پرگرمرهایی که خود code vision دارد ؟
    edito بهتر به نظر من ( مثلا امکان جمع کردن و بسته دیدن یک تابع برای دسترسی به سایر توابع ؟ و ....
    من اشتباه می کنم یا iar ؟

    #2
    پاسخ : code vision یا iar ؟

    نوشته اصلی توسط داریوش عباسی
    با وجود اینکه فکر می کردم از code vision خیلی قویتر باشد اما فکر میکنم خیلی مزایای آنرا هم ندارد مثلا wizard کدویژن به هر کسی در هر حالی کمک کرده؟
    سلام .......
    100 درصد اما قرار نیست که کدویژن را تحریم کنید شما برای مقدار دهی اولیه به رجیسترها باهر زبان (حتی اسمبلی) و هر کامپایلری میتونید از codewizard استفاده کنید (به راحتی هر چه تمامتر فقط کپی کنید)

    اما در مورد کامپایلرهای C (تا اونجاییکه من اطلاع دارم):


    IAR از نظر استفاده بهینه از رجیسترهای Working (به جای RAM) و موارد Optimize کردن کد به مراتب از کدویژن بهتر عمل میکند
    مثلا برای پاس دادن متتغیر ها به توابع کدویژن تنها یک راه را در پیش میگیرد و ان هم Software Stack هست (حتی اگر تمام 32 رجیستر بلا استفاده باشند)
    خیلی ها گول حجم کد پایین تولید شده در کدویژن را میخورند مثلا هنگامی که در کدویژن Optimize رو روی size بزاری کامپایلر میاد و از خودش تابع میسازه (این توابع با نام Subopt00 در انتهای خروجی اسمبلی میتونید ببینید) مثلا 2 خط کد بصورت مشابه و بعد از اون تکرار شده


    کد:
    porta=0x12;
    spi(0x18);
    ....
    porta=0x12;
    spi(0x18);
    این دو خط رو یه تابع میکنه و 2 بار فراخونی میکنه . تنها برای 2 بایت یا 4 بایت FLASH از زمان اجرای همون کد رو به نزدیک 2 برابر افزایش میده. oo:
    در کل چیزی که مسلمه اینه که از یه هسته هوشمند انعطاف پذیر برخوردار نیست این موارد در IAR خیلی کمتره
    و اما در مورد GCC : از اونجاییکه یه کامپایلر رایگان متن باز بوده به سرعت توسعه پیدا کرده و از هسته کاملا هوشمند برخورداره در مورد AVR-GCC هم این موارد به وضوح قابل مشاهده است با تحلیل کد عملیات اضافی رو حذف کرده و ساده ترین راه رو انتخاب میکنه برای اینکه مساله روشن تر بشه کد زیر رو با IAR یا کدویژن کامپایل کنید


    کد:
    #include<iom8.h>
    
    /*.............. */
    unsigned char MyFunc(unsigned char);
    
    
    int main( void )
    {
     MyFunc(12);
     return 0;
    }
    
    unsigned char MyFunc(unsigned char c)
    {
     unsigned char i=2,j=3;
     i=j;
     for(i=0;i<10;i++);
      j=123;
      
     return 1;
    }

    من با IAR کامپایل کردم (کدویژن الان نصب نداشتم) حالا فایل خروجی اسمبلی برنامه رو باز کنید (تو کدویژن .asm و تو S90 IAR .)
    خروجی توابع main , myfunc


    کد:
        RSEG CODE:CODE:NOROOT(1)
    main:
        SUBI  R28, 1
        LDI   R16, 12
        ST   Y, R16
        MOV   R16, R28
        RCALL  MyFunc
        LDI   R16, 0
        LDI   R17, 0
        SUBI  R28, 255
        RET
    
        RSEG CODE:CODE:NOROOT(1)
    MyFunc:
        LDI   R16, 2
        LDI   R17, 3
        MOV   R16, R17
        LDI   R16, 0
        RJMP  ??MyFunc_0
    ??MyFunc_1:
        INC   R16
    ??MyFunc_0:
        CPI   R16, 10
        BRCS  ??MyFunc_1
        LDI   R17, 123
        LDI   R16, 1
        RET

    اما اگه تو AVR-GCC همینو (فقط با تغییر هدر به <avr/io.h> کامپایل کنید دلیل هوشمندی این کامپایلر قدرتمند رو میفهمید)
    خروجی فایل LSS (فقط 2 تابع main , myfunc)


    کد:
    		<MyFunc>:
    		ldi	r24, 0x01	; 1
    		ldi	r25, 0x00	; 0
    		ret
    
    		<main>:
    		ldi	r24, 0x00	; 0
    		ldi	r25, 0x00	; 0
    		ret

    همانطور که ملاحظه مبکنید از اونجاییکه توی تابع myfunc هیچ عمل خاص و بدرد بخوری صورت نمیگیرد این تابع فقط مقدار 1 را برگشت میدهد و چون از توی تابع main هیچگونه تاثیری ندارد حتی فراخوانی ان از تابع main حذف گردیده است :agree:


    Qt - A cross-platform application and UI framework

    با کامپایلرهای قدرتمند GCC در Linux و MinGw در Windows

    دیدگاه


      #3
      پاسخ : code vision یا iar ؟

      می تونید یه لینکی برای دانلود iar avr بزارید >
      کار باهاش که سخت نیست ؟
      ممنون

      دیدگاه


        #4
        پاسخ : code vision یا iar ؟

        نوشته اصلی توسط آرمین
        می تونید یه لینکی برای دانلود iar avr بزارید >
        کار باهاش که سخت نیست ؟
        ممنون
        http://rs375.rapidshare.com/files/127041901/ewavr511b_full.part1.rar
        http://rs110.rapidshare.com/files/127041812/ewavr511b_full.part2.rar


        Qt - A cross-platform application and UI framework

        با کامپایلرهای قدرتمند GCC در Linux و MinGw در Windows

        دیدگاه


          #5
          پاسخ : code vision یا iar ؟

          ای کاش یه آموزش نصبش رو هم می دادید
          ممنون میشم

          دیدگاه

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