آنچه یاد خواهید گرفت:
ماژولهای قابل استفاده مجدد در Embedded C با APIهای شفاف و رفتار قابل پیشبینی طراحی کنید.
یک گردشکار تست مبتنی بر میزبان را با Unity و Ceedling راهاندازی کنید.
تست های واحد برای کد Embedded C را روی میزبان بنویسید و اجرا کنید.
کامپوننت های اصلی embedded مانند ring buffer، صف و event dispatcher را پیادهسازی کنید.
سیستمهای embedded را با استفاده از طراحی رویدادمحور و ماشینهای استیت مبتنی بر جدول ساختاردهی کنید.
ماژولها را در یک سیستم کامل رویدادمحور با یک حلقه کاربردی در حال اجرا یکپارچه کنید.
سیستمهای قطعی را با استفاده از تخصیص حافظه ایستا بسازید.
رفتار را اعتبارسنجی کرده و استیتهای مرزی را از طریق تست واحد دقیق مدیریت کنید.
این الگوها را در موارد استفاده واقعی embedded مانند درایورها، لاگ کردن و سیستمهای ارتباطی به کار ببرید.
پیشنیازهای دوره
تسلط اولیه بر برنامهنویسی C (توابع، اشارهگرها، structs)
آشنایی با مفاهیم سیستمهای embedded (مانند وقفهها، peripherals یا ساختار firmware)
تجربه کار با فایلهای header/source و کد C ماژولار
توضیحات دوره
بیشتر سیستمهای embedded ساده شروع میشوند، اما به سرعت تست پذیری، مقیاسپذیری و نگهداری آنها دشوارتر میشود.
این دوره بر حل این مشکل با ساخت ماژولهای قابل استفاده مجدد در Embedded C و اعتبارسنجی آنها با تست واحد مبتنی بر میزبان تمرکز دارد.
این دوره درباره چیست؟
شما مجموعهای از کامپوننت های کاربردی embedded را میسازید و میبینید که چگونه در یک سیستم تمیز و رویدادمحور در کنار هم قرار میگیرند.
تمرکز بر این موارد است:
طراحی قابل استفاده مجدد
رفتار قابل پیشبینی
اعتبارسنجی صحیح
تمام تست ها روی میزبان و با استفاده از Unity و Ceedling انجام میشوند، بنابراین میتوانید منطق firmware را بدون سختافزار اعتبارسنجی کنید.
چه چیزی خواهید ساخت
در طول دوره، با بلوکهای سازنده اصلی embedded کار خواهید کرد، از جمله:
کمکابزارهای بیت و فیلد رجیستر
ring buffer (قطعی، ایمن برای جریان)
صف با اندازه ثابت (بدون تخصیص پویا)
event dispatcher (مسیریابی از شناسه به handler)
ماشین استیت متناهی مبتنی بر جدول
سیستم کوچک یکپارچه رویدادمحور
هر ماژول:
به صورت ایستا تخصیص داده شده است.
قطعی است
با استیتهای مرزی تست شده است.
برای استفاده مجدد طراحی شده است.
رویکرد تست
هر کامپوننت با تست های واحد روی میزبان تأیید میشود.
این شامل موارد زیر است:
اعتبارسنجی رفتار عادی
مدیریت استیتهای مرزی
تست شرایط خطا
تأیید یکپارچگی بین کامپوننت ها
همچنین تستهای مبتنی بر سناریوی کاربرد و جریانهای سطح سیستم را خواهید دید تا مشخص شود هر بخش در یک برنامه کاربردی چگونه رفتار میکند.
این دوره چه تفاوتی دارد؟
این یک دوره کدنویسی «همراه با تایپ کردن» نیست.
تمرکز بر این موارد است:
درک پیادهسازیهای واقعی
تست صحیح رفتار
مشاهده چگونگی تعامل کامپوننت ها در یک سیستم
هدف فقط نوشتن کد نیست، بلکه ساخت کامپوننت است که بتوانید دوباره از آنها استفاده کنید و به آنها اعتماد داشته باشید.
چرا تست مبتنی بر میزبان اهمیت دارد؟
بیشتر منطق embedded برای اعتبارسنجی به سختافزار نیاز ندارد.
با تست روی رایانه شخصی خود، میتوانید:
تکرارهای سریعتری انجام دهید.
استیتهای مرزی را زودتر شناسایی کنید.
کیفیت کد را قبل از استقرار بهبود دهید.
این گردشکار به طور گسترده در توسعه حرفهای embedded استفاده میشود و اغلب در دورههای سنتی غایب است.
در پایان چه چیزی به دست خواهید آورد؟
تا پایان این دوره، قادر خواهید بود:
ماژولهای قابل استفاده مجدد Embedded C با APIهای تمیز طراحی کنید.
firmware را با استفاده از الگوهای رویدادمحور ساختاردهی کنید.
با استفاده از Unity و Ceedling تست واحد بنویسید و اجرا کنید.
رفتار، از جمله استیتهای مرزی، را روی میزبان اعتبارسنجی کنید.
کامپوننت ها را در یک سیستم کامل و عملیاتی یکپارچه کنید.
این دوره برای چه کسانی مناسب است؟
توسعهدهندگان Embedded C که میخواهند ساختار کد، قابلیت استفاده مجدد و تستپذیری را بهبود دهند.
توسعهدهندگانی که به دنبال اعمال تست واحد روی firmware بدون اتکا به سختافزار هستند.
مهندسانی که سیستمهایی با صف، ماشین استیت یا طراحی رویدادمحور میسازند.