چگونه یک مهندس امبدد سیستم(سامانه ی نهفته) شویم؟(2)

پست قبلی تا اونجا پیش رفت که یک برد آماده برای کار داریم که قراره براش برنامه بنویسیم برناممون رو روی میکروکنترلرمون پروگرام کنیم. این بخش کلی حالت ممکن داره که من روی همش تسلط ندارم، شما رو هم سردرگم میکنه. پس یه کلیت از ابزار های این دو کار میگیم و بعدها در هر بخش عمیق‌تر میشیم.* برای شروع به برنامه نویسی امبدد نیاز به دانش در مورد زبان زیبای C دارید. :)سی یک زبان برنامه‌نویسی از نوع همه‌منظوره، کامپایل‌شونده، سطح میانی، ساخت‌یافته، دستوری و روندگرا می‌باشد که در سال ۱۹۷۲ توسط دنیس ریچی در آزمایشگاه‌های بل ساخته شد. سی رایج ترین زبان برای میکروکنترلرهاست . اما این روزها کامپایلر های ++C و حتی پایتون هم وجود دارد که بتوان خروجی متناسب با درک ماشین از آن گرفت. زبان اسمبلی هم که یک زبان سطح پایین وقابل ترجمه به زبان ماشین است اما به دلیل پیچیده بودن فقط در موارد خاصی کاربرد دارد.نکته: ممکنه با توجه به پروژه به هر کدومشون نیاز پیدا کنید و هیچ کدوم به دیگری برتر نیست. برای نوشتن برنامه‌ها به یک محیط نوشتار و یک مفسر زبان C نیاز دارید که میتونید اون ها رو به صورت مجزا یا در قالب یک IDE (محیط توسعه یکپارچه) روی کامپیوترتون نصب کنید.آی‌دی‌ای، عبارت است از محیطی عمدتاً گرافیکی که تمام یا شماری از ابزارهای لازم برای توسعهٔ نرم‌افزار (بخش‌هایی یا تمام زنجیره ابزار توسعه) را خود دارد. در آی‌دی‌ای دسترسی به ابزارها و اعمال آن‌ها در پروژهٔ جاری تسهیل شده‌است.امکاناتی که به‌طور معمول در آی‌دی‌ای‌ها وجود دارد:ویرایش و نوشتن کد به‌صورت پیشرفته با استفاده از امکانات پیشنهاد دهنده اتوماتیک که با نوشتن حرف اول یک دستور نام کامل دستورهایی که وجود دارد، فهرست می‌شود.نمایش کدها به صورت رنگی.کمک به رفع عیب‌های نرم‌افزار و حل مشکلات آن (Debug)** نهایتاً برای پروگرام کردن(اپلود برنامه بر روی میکروکنترلر) نیاز به یک پروگرامر متناسب با میکروکنترلرتون دارید که میتونه قیمتی بین ۳۰ هزار تومان تا ۷ میلیون تومان داشته باشه(که به وقتش همه رو معرفی میکنیم). و نرم‌افزار رابط این پروگرامر(که این نرم‌افزار هم میتونه با همون سیستم IDE شما یکپارچه باشه تا سرعت تست و دیباگ شما رو بیشتر کنه). اگرشما تازه کار هستید به احتمال بالا رفتید سراغ میکروکنترلر های AVR و ایولویشن برد های آماده در بازار ، که صدر نشین اونها arduino uno ست با یک میکرو به نام AVR ATMEGA328P :اردوینو Uno معمولاً اکثر مهندسان عزیز برای برنامه نویسی برد های اردوینو از IDE مخصوص خود اردوینو استفاده میکنن ولی واقعاً مزخرفه و برای هر کامپایل و پروگرام کردن باید کلی اعصاب خوردی بکشید تازه از همون امکانات اولیه و عمومی یک IDE که اول این مقاله گفتیم بی نصیبه! خب پیشنهاد من چیه؟ به نظر من سعی کنید یک IDE متن باز و جنرال انتخاب کنید ، باهاش دوست شید و به زیر و بمش آشنا بشید و تا جایی که ممکنه از افزونه های اون IDE استفاده کنید تا بتونید با اون برای میکروکنترلر های مختلف برنامه بنویسید.arduino IDEانتخاب اول من eclipse ست! برای میکرو های AVR , STM32 افزونه های بسیار خوبی داره و میتونید برای برد های اردینو هم از اون استفاده کنید. چند وقتی هست که از VS code هم خوشم اومده.یکی از نوشته های بعدی میتونه مقایسه این دوتا عزیز باشه!eclipse IDE از خوبی‌های کار کردن با IDE هایی که بالا گفتم این هست که برای همه سیستم عامل ها موجوده. ولی اگر صرفاً از ویندوز استفاده میکنید . Codevision برای تازه کارها بد نیست. چون از یک ویزارد(رابط گرافیکی با درک ساده تر) برای تنظیمات اولیه پریفرال های میکرو استفاده میکنه. ولی از اونجایی که از کامپایلر محبوب GCC استفاده نمیکنه کلی ضدحال داره و برای کار حرفه‌ای مناسب نیست.codeVision wizardبرنامه AtmelStudio هم یک IDE صرفاً برای سیستم عامل ویندوزه که رابط کاربری بسیار خوبی داره و برای میکرو کنترلرهای ARM شرکت اتمل هم میتونید ازش استفاده کنید.(که البته پیشنهاد من کار کردن با هر دو درکنار همه. نمیشه انکار کرد Codevision دارای یک wizard کارامده.)نکته: من ادمهای زیادی میشناسم که هنوز دارن از codeVision استفاده میکنن و ازش پول درمیارن و من هم بارها از سمت کارفرما ها اجبار شدم که باهاش کار کنم.ابزار ها فقط ابزار هستند ، سرشون دعوا نکنید.و البته اگر میخواید یه نوشته خوب در مقایسه ویژگی این دوتا بخونید این مطلب رو یه نگاه بندازید!برای میکروکنترلر های ARM شرکت STM یا ATMEL و یا میکروهای PIC یا سایر ای سی های برنامه پذیر IDE های دیگری مختص خودشان وجود دارد و به مرور از آن‌ها نیز صحبت میکنیم.IDE listو اما مبحث پروگرامر!! اگر تازه کار هستید و صرفاً میخواید به عنوان شناخت مسیر با ابزار ها کار کنید، خوبی برد های اردوینو همین موضوعه که نیاز به پروگرامر نداره. برد های اردوینو با یک بوت لودر(یک برنامه واسط که قبلاً روی میکروکنترلر شما ریخته شده) و IDE خود اردوینو در کامپیوتر شما میتونه پروگرام بشه.اما اگر میخواهید حرفه‌ای تر کار کنید، میتونید برای هر میکروکنترلری که یادگیری اونو شروع میکنید یک پروگرامر بخرید ،برای AVR و STM پروگرامر های ارزانی در بازار وجود داره.به عنوان مثال برای AVR از پروگرامر های MKII یا STK با قیمتی بین 30 تا 80 هزار تومن استفاده کنید.MKII programmerدر پست های بعدی حتماً PCB , firmware برای MKII رو براتون میزارم تا اگه دوست داشتید برای خودتون بسازید، ولی اگه کسی الان نیازش داره یه ایمیل بزنه تا براش ارسال کنم. اما اگر قرار است با تعداد بیشتر و متنوع تری از ای سی های برنامه پذیر کار کنید و نگرانی مالی ندارید میتوانید از پروگرامر های TNM استفاده کنید.این پروگرامر قیمت چند میلیونی دارد و میتونه گستره زیادی از میکروکنترلر ها و DSP و FPGA ها رو پروگرام کنه ، حتی میتونید باهاش eeprom ها و CPLD ها رو هم پروگرام کنید و شما رو از شر تنوع سخت افزارهای پروگرامینگ رها کنه.TNM5000یک بحث دیگه از این چند قسمتی مونده و اون معرفی ابزار ها و نیازهای دیباگ و سیمولینکه!درباب این بخش بهتون بگم که برید C و ++C رو جدی یاد بگیرید و با هر چی بلدید شروع به نوشتن کنید و هیچ وقت از یادگرفتن چیزای جدید درموردش دست نکشید . این دریا ته نداره :)