AVR, Cute, توصیه شده, مقاله

چرا کدویژن نه!

Why not Codevition چرا کدویژن نه

اگر اسم AVR را شنیده باشید ، قطعا اسم کدویژن را هم شنیده اید ، کدویژن یکی از محبوب ترین و شناخته شده ترین کامپایلرهای AVR است که در ایران مورد استفاده قرار می گیرد ، به نحوی که هر کسی قصد استفاده از میکروکنترلر AVR را داشته است ، حتما اسم آن را شنیده است و چه بسا آن را نصب و از آن استفاده کرده است. اما چه چیزی این کامپایلر را تا این حد از معروفیت رسانده است.
نخستن نکته کلیدی در ماجرای معروفیت کدویژن این است که ما در ایران قانون کپی رایت را رعایت نمی کنیم و به راحتی میتوانیم از نسخه قفل شکسته این نرم افزار تجاری استفاده کنیم ، و این خود یکی از اصلی ترین عواملی است که باعث معروفیت این کامپایلر شده است. شاید اگر مجبور بودید برای استفاده از این نرم افزار 200 یورو یا حدود 1 میلیون تومان پول پرداخت کنید ، آن وقت دیگر این نرم افزار را به چشم یک نرم افزار رایج نگاه نمی کردید همانطور که واقعا نرم افزار معروفی نیست.

همانطور که در آمار بالا مشاهده می کنید بیشترین بازدیدهای صورت گرفته از سایت نرم افزار (hpinfotech.ro
) از ایران بوده است که نشان دهنده میزان محبوبیت این نرم افزار در ایران و البته فقط ایران است.

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

بله قطعا این قابلیت جذابیت ویژه ای برای افراد مبتدی و حتی حرفه ای دارد ، وقتی که براحتی و با چند کلیک درگاه SPI یا UART یا I2C را پیکربندی می کنید بدون این که درگیر رجیسترها و بیت ها شده باشید ، در نگاه اول این فرایند بسیار فریبنده است و آدم خیال می کند که شر رجیسترها و دست کاری بیت ها راحت شده است اما ، واقعیت چیز دیگری است ، چرا که تجربه ثابت کرده است در مسیر توسعه برنامه نیاز خواهید داشت که با تک تک بیت ها دست و پنجه نرم کنید و کدویزارد کمکی به شما نمی کند.

نرم افزار های جانبی زیادی به صورت رایگان منشتر شده اند که کار پیکر بندی اولیه را انجام می دهند مثل AVRWiz

اما دو نقص اساسی داشته اند ، اول این که تمام پیکربندی ها رو به صورت جامع و متمرکز انجام نمی دهند و یا این که از تمام خانواده AVR پشتیبانی نمی کنند. و البته این که خروجی تولید شده بیشتر منطبق بر کامپایلر رایگان و قدرتمند GCC است. همین عوامل باعث عدم استقبال کاربرهای ایرانی از این نوع نرم افزارها شده است.

از دیگر موارد محبوبیت کامپایلر کدویژن وجود کتابخانه های آماده آن است که کاربر را در راه اندازی دستگاه های کناری یاری می کنید مثلا برای راه اندازی یک ال سی دی کارکتری جز این که کاربر در کدویزارد چند کلیک کند و پیکر بندی اولیه را انجام دهد ، کار دیگری لازم نیست و خود کدویژن کتابخانه مربوطه رو در برنامه صدا میزند و کار پیکر بندی را برای شما انجام می دهد.

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

اولین و مهم ترین مساله ، این است که کدویژن ساختار یک کامپایلر استاندارد را دارا نمی باشد و از آن پشتیبانی نمی کند. در یک کامپایلر استاندارد ابتدا فایل ها به صورت مجزا به فایل آبجکت تبدیل می شوند و بعد از آن با استفاده از یک دستورالعمل به هم لینک می شوند و فایل خروجی برنامه حاصل می شود

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

مساله مهم بعدی ، همانطور که در سایت خود کدویژن به آن اشاره شده است ، عدم پشتیبانی کامل از زبان C است.

فقط با ANSI C هماهنگی دارد نه این که آن را به صورت کامل پشتیبانی می کند ، همانطور که می دانید خود ANSI C اولین ورژن استاندرد زبان C است که در سال 1972 استاندارد سازی شد. بعد ها ورژن های کاملتری از زبان سی ارائه شد مثل C98,C90,C95,C99,C11 که کدویژن هیچ کدام از آنها را پشتیبانی نمی کند. پس در واقع وقتی که از کدویژن استفاده میکنید شما مجبور هستید از نسخه اولیه زبان C بهره ببرید که همین امر باعث میشه خیلی از کتابخانه های آماده موجود برای شما غیر قابل استفاده شوند.
در واقع کدویژن از تمام قابلیت های زبان ANSI C هم استفاده نمی کند ، به عنوان مثال شما در کدویژن قادر به تعریف اشاره گر به یک فانکشن نیستید(البته شاید در نسخه های جدید اضافه شده باشد).

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

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

و البته مسائل خوب و بد دیگری که در خصوص این نرم افزار وجود دارد ، که مجال پرداختن به همه آنها از حوصله این مقاله خارج است ، و ما فقط سعی در بررسی نکات مهم و کلیدی آن داشتیم.
سوالی که همچنان باقی می ماند این است که اگر کدویژن نه ، پس از چه جایگزینی میتوانیم استفاده کنیم، پاسخ این سوال مهم را در مقاله ” کامپایلر Codevisionavr در مقابل کامپایلر GCC و مقایسه تخصصی آنها ” خواهیم داد.

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

26 دیدگاه در “چرا کدویژن نه!

  1. هادی گفت:

    سلام . دوست عزیز لطف کنید این مقاله رو با مقاله آردینو یا avr مقایسه کنید. به راحتی متوجه میشوید که این دو مقاله استدلال های همدیگرو نقض میکنن. این استدلال هایی رو که بر علیه کد ویژن استفاده کردین دقیقا بد علیه آردینو هم صدق میکنه. بلاخره برای طراحی باید درگیر جزییات بشیم یا نه؟!

    1. Zeus . گفت:

      بستگی به خودون داره
      تا چه لولی میخواید طراحی انجام بدید ؟ چطور میخواید پشتیبانی انجام بدید و خیلی از این سوالات هستند که جواب شما رو مشخص میکنند.

  2. علی گفت:

    با عرض سلام
    اگر شد یه مطلب بنویسد برای اینکه تو چه وقتی هایی بهتره از avr استفاده کنیم و خیلی هم عالی میشه اگه چند تا مثال عملی بزنید.

    1. Zeus . گفت:

      سلام
      این مورد خیلی میتونه وسیع باشه و هیچ پیش فرضی وچود نداره براش – خیلی پارامتر ها درگیر اون هستند و به شخصه میگم با هر ابزاری که راحت هستید بهتره با همون کارتون رو جلو ببرید چون بهش مسلط هستید و بهتر می تونید مشکلاتش رو حل کنید.

  3. میر میکائیل گفت:

    سلام
    واقعا وقت گذاشتن برای این سیستم سوزوندم عمر خودتون و خواننده ها هست. با وجود میکرو های موجود تو بازار میکرو کنترل های این خانواده دیگه جایگاه چندانی تو صنعت ندارن، بهتره بجای این آموزش ها انرژیتون رو متمرکز برای آموزش های پیشرفته و تکمیلی برای stm8 stm32 lps و… بذارید. تو نت به مقدار بسیار بسیار کافی مطلب برای یاد گیری مفاهیم پایه هست اما مطالب پیشرفته واقعا نایاب و کیمیا

    1. Zeus . گفت:

      سلام ؛ با نظر شما موافق نیستم به دو دلیل !
      مهم ترین دلیل اینه که همه مخاطب های سایت که آدم های حرفه ای نیستند ؛
      دلیل دوم این که برای این که بتونید حرفه ای بشید اول باید یه طراح عادی باشید ! پس شروع لازمه
      و اما این که میگید میکروکنترلر های پیشرفته توی بازار هست ؛ بله میکروکنترلر های خوبی الان توی بازار هست ؛ ولی واقعا افزادی که کار می کننده چقدر درک نسبت به عملکرد یک میکروکنترلر دارند ؟ در ضمن هنوز جاهایی میشه مثال زد که میکروکنترلر های دیگه توان رقابت با AVR رو ندارند ؛ عجیبه ولی واقعیه

      1. میر میکائیل گفت:

        کاملا نظرتون رو قبول دارم
        اما شاید حرفمو بد بیان کردم
        منظور من اینه که کسی که میخواد تازه شروع کنه واقعا درگیر اینجور چیزا نباید بشه
        درست avr خیلی قابلیت ها داره و کسی منکرش نمیتونه بشه اما امروزه بازار جوری که دیگه قبولش نمیکنن(مشتری ها) مثلا شهری که من هستم برای چراغ چشمک زن هم FPGA میخوان در صورتی که با یه تاینی هم حل میشه بالاخره بازار الان جوری که میل به avr کم شده
        دلایلشم اکثرا میکرو های ارزون تر با قابلیت بیشتر و همچنین avr های وارداتی بشدت بیکیفیت و فیک تو بازار و مسیله این نسبت به هزینه(وقت انرژی و پول) چی کسب میکنم
        در هر صورت من صفحه شما رو مرتب پیگیری میکنم با این که چند سالی دارم arm کار میکنم اما از مطالبتون استفاده میکنم و سعی دارم استاندارد تر بشم
        ممنون، موفق باشید

        1. Zeus . گفت:

          خواهش میکنم ؛ دوست عزیز
          بله متاسفانه خیلی از سفارش دهنده ها به نظر طراح اعتماد ندارند و فکر میکنند که هرچه چیپ قویتری بگذارند کار بهتر انجام میشه در صورتی که چنین نیست ؛ کی کاش نظر طراح مثل نظر پزشک دارای مقبولیت بود ؛ اون موقع خیلی از مشکلات حل میشد.

          1. mahdi گفت:

            با سلام در اینجور مواقع فقط کار رو تحویل بدید در مورد جزعیات نیازی به توضیح نیست چون باعث درد سر میشه به این صورت که کلمات قوی و ضعیف که مثلا ما به میکروکنترلرها میگیم معانیه دیگری در ذهن کسی که اصلا اطلاعی از میکروکنترلرها نداره ایجاد میکنه .برای حمل یک کیسه شن یک چهار چرخ کافیه گرفتن تریلی 18 چرخ هزینه اضافیه .

  4. هاشم زاده گفت:

    در این دوران که هر روز یه میکروی جدید با قابلیت های بیشتر وارد بازار میشه هیچ دلیلی نداره که کاربر ذهن و وقت خودش رو درگیر این مسائل هر دمبیل بکنه- البته اصول میکرو و نحوه کار رو باید بدونه ولی اینکه رجیستر ها رو یاد بگیره خیلی مضحکه!
    شما فقط برنامه ای بنویس که کار کنه والسلام
    هر طوری دوست داری بنویس

    1. Zeus . گفت:

      موافقم که لازم نیست ذهنون رو درگیر یادگیری مسائلی کنید که توی یک پروژه بزرگ شاید یک دهم کار باشه در ضمن هر موقع لازم شد میشه به یوزر منوال مراجعه کرد ؛ توضیح دادم توی متن !
      پیشنهاد میکنم مقاله کامپایلر Codevisionavr در مقابل کامپایلر GCC و مقایسه تخصصی آنها رو مطالعه کنید ؛ در ضمن اگر دیدگاهتون اینه که فقط کافیه برنامه کار کنه ؛ چرا از بیس کام استفاده نمیکنید خیلی هم راحت تره ؟!
      جواب خیلی ساده است ؛ خیلی از کارها رو اصلا بیس کام قابلیت اجراشون رو نداره ؛ همین برای کدویژن هم به خوبی صادقه

    2. احسان گفت:

      این حرف رو کسی میزنه که پروژه های درست و درمون انجام نداده باشه وگر نه وقتی بحث سر ساخت بورد هایی میشه که قراره تیراژ بالا انجام بشه 100 تومن هم هزینه زیادی هست اینجاست که فرق یه مهندس که فقط برنامه مینویسه که کار کنه با مهندسی که رجیستر ها رو از بر هیت و جزئیات رو دقیق میدونه و میتونه برنامه بهینه و دقیق بنویسه مشخص میشه
      اوایل که stm رو کار می‌کردم با hal کار می‌کردم و کیوب ولی کم کم رجیستری رو شروع کردم چون یه پروژه ساخته بودم با میکرو f103c8t وقتی کد رو تو کیوب جنریت میکردم و ب ون هیچ کاری تو کیل کامپایل میکردم 70 درصد فلش و 50 درصد رم همون موقع پر میشد دیگه نمیشد خودم کد بنویسم اگر فقط قرار بود برنامه بنویسم که کار کنه باید میکرو رده بالاتر با حداقل 50 درصد قیمت بیشتر میخریدم ولی وقتی رجیستری کار کردم مشکلم حل شد

      1. Zeus . گفت:

        متشکر برای توضیح خوبتون

  5. Saeed0047 گفت:

    خسته نباشید.
    کی قسمت بعدی رو قرار میدید؟من الان دچار سردرگمی شدم چون تا حالا از کدویژن استفاده میکردم.
    اگه میشه زودتر مقاله بعدی رو قرار بدید.

    1. Zeus . گفت:

      سلام دوست عزیز ؛ قبلا مقاله رو منتشر کردیم ؛ مقاله زیر رو مطالعه بفرمایید
      کامپایلر Codevisionavr در مقابل کامپایلر GCC و مقایسه تخصصی آنها

  6. mohsen گفت:

    سلام قرار بود ی آموزش درباره جایگزینی gcc به جای کدویژن بزارید

    1. Zeus . گفت:

      بله ، هنوز هم توی لیست کارها هست و به زودی انشالله منتشر خواهیم کرد.

  7. علی گفت:

    سلام عزیز
    ممنون از مطالب بسیلر جالب و اموزنده تون
    لطفا کامپایلر جایگزین را معرفی کنید

  8. علی گفت:

    سلام عزیز
    ممنون از مطالب بسیلر جالب و اموزندهتون
    لطفا کامپایلر جایگزین را معرفی کنید

    1. Zeus . گفت:

      کامپایلر پیشنهادی ما GCC است که در حال آماده سازی آموزش آن هستیم.

  9. Master گفت:

    تازه سایت رسمی hpinfotech خودش گفته که تمام کسانی که با روش کرک از کدویژن استفاده کد هاشون دستکاری میشه البته از ورژن 1.35 به بعد.

    1. Zeus . گفت:

      هرچیزی امکان داره
      چون معلوم نیست دقیقا چه اتفاقی بعد از کرک کردن می افته

  10. محمد گفت:

    سلام خسته نباشید .. لطفا علاوه بر معرفی یک کامپایلر مناسب ..کامپایلر اتمل استدیو رو هم بررسی کنید…; ممنون

    1. Zeus . گفت:

      سلام دوست عزیز
      انشالله به زودی بهترین کامپایلر ممکن رو برای انواع دیواس ها معرفی میکنیم
      اتمل استویو در واقع یک IDE است که خود از یک کامپایلر اپن سورس استفاده می کند.

  11. امیر رضا کرامتی گفت:

    درود.
    خواهش میکنم درباره کامپایلر جایگزینی که شما پیشمهاد میکنید ازش بجای codevision استفاده کنیم ، مقاله چاپ کنید.
    سپاس.

    1. Zeus . گفت:

      بله خواهش میکنم ، در حال آماده سازی مطلب در خصوص کامپایلر جایگزین هستیم ، کامپایلر پیشنهادی ما GCC است
      به زودی مطلب مربوطه به همراه آموزش نحوه کار با این کامپایلر رو منتشر میکنم.