اطلاعیه

Collapse
No announcement yet.

WINAVR

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

    #16
    پاسخ : WINAVR

    اینکه میگن WINAVR داکیومنت نداره به چه معناست؟

    دیدگاه


      #17
      پاسخ : WINAVR

      تا منظورش از داکیومنت چی باشه . اگر منظورش رفرنس و هلپ باشه که بیخود گفته . منبع اصلیش اینترنت .
      فتو بلاگ من
      کاردستی ها :
      روبات شطرنج باز ( یادگار دوران جوانی )
      فارسی نویسی مستقیم در نمایشگر های گرافیکی
      کتابچه خود آموز زبان توصیف سخت افزار Verilog

      دیدگاه


        #18
        پاسخ : WINAVR

        سلام،

        این بحث یه سوژه ی تکراریه و محدود به فاروم های فارسی هم نمیشه، اگر جستجو کنید موارد زیادی در این مورد تو اینترنت وجود داره. با اینحال یک مسئله ی مهمی که هست اینه که بدون شک بهترین کامپایلر C برای تمام ماشین ها (8، 16 و 32 بیتی) IAR Embedded Workbench هست. حالا اینکه چرا gcc محبوب تره به خاطر مجانی بودنشه و توابع کتابخانه ای زیادی که براش وجود داره. امتیازات منحصر به فرد IAR: سازگاری کامل با ANSI C (مهترین مزیت)، سرعت اجرای بسیار بالا، سیمولاتور داخلی، پشتیبانی از برنامه نویسی شی گرا، نداشتن باگ، و ...

        این برنامه ای رو ملاحظه می کنید یک فلاشر ساده است که LED روشن یک مسیر رفت و برگشت را طی می کند، برنامه رو با کامپایلر های IAR، GCC، CodeVision، ImageCraft و BASCOM کامپایل کرده ام، سرعت اجرا را مقایسه کنید!! (فایل پروتئوس موجود است اما اگر پروگرام کنید بهتره)

        http://www.avr.ir/eca/Benchmark.rar

        کد:
        [left]// function prototype
        void wait(void);
        
        // Include definition file
        #include <ioavr.h>
        #include <inavr.h>
        
        int main( void )
        {
          unsigned char led;
        
          PORTB  = 0xFF; //Give PORTB and "led" a initial startvalue
          led   = 1;
        
          DDRB  = 0xFF; //Set PORTB as output
        
          while(1){    // Eternal loop
            PORTB = ~led;   // Invert the output since a zero means: LED on
            led <<= 1;     // Move to next LED by performing a rotate left
        
            if (!led) led = 1; // If overflow: start with led1 again
        
            wait();      // Uncomment this line for the 'Release' build...
          }
        }
        
        
        
        // *** Primitive wait() function ***
        void wait(void){
        unsigned char i,j;
        
        for(i=0;i<255;i++)
         for(j=0;j<255;j++);
        }[/left]
        There is nothing so practical as a good theory. — Kurt Lewin, 1951

        دیدگاه


          #19
          پاسخ : WINAVR

          مرسی ، تاحالا IAR رو تست نکرده بودم ولی مثله اینکه بهتر از بقیه جواب میده . باید یکم بیشتر دربارش تحقیق کنم و سعی میکنم تو این بنچمارک شرکت کنم . اما چند نکته :

          2 تا حلقه معیار خوبی برای بنچمارک نیست .
          gcc هم از استاندارد ANSI C پیروی میکنه .

          خانواده GNU GCCآ‌ هم خیلی بزرگه ، تقریبا برای همه ماشین ها و همه معماری ها و همه پردازنده ها محیط برنامه سازیش محیا شده و فقط محدود به AVR نیست )
          AVR یه عضو کوچیک از خانواده میکرو هاست ( شاید اصلا در برابر رقبا به حساب هم نیاد ) اما پردازنده های خیلی قویتر مثل AXIS ها یا NXP ها و یا ARM Based ها که بر اساس Linux Kernel کار میکنن ، سیستم عامل میانی شون با همین اعضای خانواده گنو ساخته شده . پس برای برنامه نویس ساختن برنامه gcc خوشایدند تر و در مواردی راحت تر از برنامه نویسی درمحیط دیگه ای میمونه . ( AVR که کلا از این بحث بی بهره ست ) . مثل این میمونه که شما تو لینوکس برای ویندوز برنامه بنویسی .

          GCC هم از برنامه نویسی شی گرا پشتیبانی میکنه منتها من دیگه حالو حوصلشو ندارم که برم سمت ++ ش . همین C کارمونو تا العان بخوبی راه انداخته . و تاجایی هم که حالیم میشه برای یه پردازنده ضعیف مثل AVR که حداکثر کارای بزرگی که میشه باهاش انجام داد ساخت اسباب بازی های علمی و پایان نامه و چند تا وسیله کاربردی هست ، برنامه نویسی شی گرا زیاد لازم نمیشه .

          هر وقت خواستیم بریم با یه میکرو کنترلر نسبتا قوی مثلا برنامه کنترل و فرمان یه دوربین هندیکم که کلی جنگولک بازی و این حرفارو داره و قراره که یک تیم ! برای این سیستم برنامه بنویسن اون وقت شی گرای لازمه کاره ! به اصتلاح هر وقت یه مورد Commercial پیش اومد .

          ببین یه پروژه اپن سورس چون کد باز هست باگ هاش از لحاظ صحت کارکرد سریع تر معلوم میشه تا اینکه افرادی بخوان از طریق ازمون و خطا باگ های یه کامپایلر رو پیدا کنن !


          --

          در مورد سرعت با مثالی که زدید حرف شما کاملا متین ، برای منم خیلی جالب بود . من یه لایبراری CRC16 Genration دارم که محاسبات سنگینی رو به پردازنده متحمل میشه . بزارید بگردم پیداش کنم تا این رو هم به عنوان بنچمارک بروی این چند کامپایلر تست کنیم .


          غیر از حرف های زده شده جدا خود شما از چه کامپایلری استفاده میکنید .

          بحث خوبی داره میشه اگر ادامه پیدا کنه و بقیه دوستان هم شرکت کنند .
          فتو بلاگ من
          کاردستی ها :
          روبات شطرنج باز ( یادگار دوران جوانی )
          فارسی نویسی مستقیم در نمایشگر های گرافیکی
          کتابچه خود آموز زبان توصیف سخت افزار Verilog

          دیدگاه


            #20
            پاسخ : WINAVR

            وقتی این بحث را آغاز کردم فکر نمی کردم به اینجا برسه!
            تازه جالب شده
            من با ICC و CodeVision کار می کنم و تاحالا به مشکلی بر نخوردم اما مثل اینک IAR بهتره
            از دوستانی که با IARآ‌کار کرده اند خواهش می کنم این بحث را ادامه بدند

            دیدگاه


              #21
              پاسخ : WINAVR

              نوشته اصلی توسط shankimout
              مرسی ، تاحالا IAR رو تست نکرده بودم ولی مثله اینکه بهتر از بقیه جواب میده . باید یکم بیشتر دربارش تحقیق کنم و سعی میکنم تو این بنچمارک شرکت کنم . اما چند نکته :

              2 تا حلقه معیار خوبی برای بنچمارک نیست .
              gcc هم از استاندارد ANSI C پیروی میکنه .

              خانواده GNU GCCآ‌ هم خیلی بزرگه ، تقریبا برای همه ماشین ها و همه معماری ها و همه پردازنده ها محیط برنامه سازیش محیا شده و فقط محدود به AVR نیست )
              AVR یه عضو کوچیک از خانواده میکرو هاست ( شاید اصلا در برابر رقبا به حساب هم نیاد ) اما پردازنده های خیلی قویتر مثل AXIS ها یا NXP ها و یا ARM Based ها که بر اساس Linux Kernel کار میکنن ، سیستم عامل میانی شون با همین اعضای خانواده گنو ساخته شده . پس برای برنامه نویس ساختن برنامه gcc خوشایدند تر و در مواردی راحت تر از برنامه نویسی درمحیط دیگه ای میمونه . ( AVR که کلا از این بحث بی بهره ست ) . مثل این میمونه که شما تو لینوکس برای ویندوز برنامه بنویسی .

              GCC هم از برنامه نویسی شی گرا پشتیبانی میکنه منتها من دیگه حالو حوصلشو ندارم که برم سمت ++ ش . همین C کارمونو تا العان بخوبی راه انداخته . و تاجایی هم که حالیم میشه برای یه پردازنده ضعیف مثل AVR که حداکثر کارای بزرگی که میشه باهاش انجام داد ساخت اسباب بازی های علمی و پایان نامه و چند تا وسیله کاربردی هست ، برنامه نویسی شی گرا زیاد لازم نمیشه .

              هر وقت خواستیم بریم با یه میکرو کنترلر نسبتا قوی مثلا برنامه کنترل و فرمان یه دوربین هندیکم که کلی جنگولک بازی و این حرفارو داره و قراره که یک تیم ! برای این سیستم برنامه بنویسن اون وقت شی گرای لازمه کاره ! به اصتلاح هر وقت یه مورد Commercial پیش اومد .

              ببین یه پروژه اپن سورس چون کد باز هست باگ هاش از لحاظ صحت کارکرد سریع تر معلوم میشه تا اینکه افرادی بخوان از طریق ازمون و خطا باگ های یه کامپایلر رو پیدا کنن !


              --

              در مورد سرعت با مثالی که زدید حرف شما کاملا متین ، برای منم خیلی جالب بود . من یه لایبراری CRC16 Genration دارم که محاسبات سنگینی رو به پردازنده متحمل میشه . بزارید بگردم پیداش کنم تا این رو هم به عنوان بنچمارک بروی این چند کامپایلر تست کنیم .


              غیر از حرف های زده شده جدا خود شما از چه کامپایلری استفاده میکنید .

              بحث خوبی داره میشه اگر ادامه پیدا کنه و بقیه دوستان هم شرکت کنند .
              سلام،

              اینجا رو ببینید: http://www.iar.com/index.php?show=44816_ENG&&page_anchor=http ://www.iar.com/p44816/p44816_eng.php

              اما مشکل لایسنس IAR به این راحتی حل شدنی نیست، بنابراین فعلا بهترین گزینه همین avr-gcc هست :smile:
              There is nothing so practical as a good theory. — Kurt Lewin, 1951

              دیدگاه

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