تکنولوژی

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

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

مراحل توسعه نرم افزار امبدد مشابه با نرم افزار “معمولی” می‌ باشد. ایجاد نرم افزار امبدد به طور کلی شامل مراحل زیر است:

  1. توسعه نیاز محصول
  2. طراحی سیستم و توسعه الگوریتم
  3. کدگذاری
  4. آزمایش

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

توسعه نیاز محصول

مشخصات محصول اغلب توسط طراحان بیان می شود که معمولاً حاوی اطلاعات کمی است که به توسعه فریمور کمک می کند. سازنده نرم افزار امبدد دارای یک سند 250 صفحه ای ناقص است که نمی توان آن را بعنوان مرجع دانست و اگر دقت لازم در نظر گرفته نشود، به راحتی منجر به اشتباه در طراحی شده، که این به نوبه خود، منجر به طولانی شدن زمان تکمیل پروژه و یا شکست کلی پروژه می شود.

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

استفاده از توضیحات رجیستر

همانطور که در بالا توضیح داده شد، توسعه دهندگان فریمور باید پیچیدگی های همه رجیستر ها، حافظه ها و همه عناصر کنترل (CPU ، MCU ، و …) را در یک پروژه درک کنند تا بتوانند تمام قسمت های سیستم را به طور موثر کنترل کنند. برای ایجاد این، توسعه دهندگان فریمور می توانند اطمینان حاصل کنند که سند مشخصات دارای توصیف مناسبی از رجیستر ها به همراه نقشه های حافظه است. همه رجیستر ها در عنصر کنترل می توانند دارای یک نام متمایز باشند که شناسایی آن ها را در اسناد آسان می کند و همه آن ها می توانند به هم پیوند داشته باشند به طوری که تبدیل به لیستی در سند شوند که نام، مکان، بلوک و آدرس هر رجیستر را ذکر می کند.

شرح وظایف

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

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

طراحی سیستم و توسعه الگوریتم

طراحی سیستم و توسعه الگوریتم

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

PIM ها

در این مرحله از توسعه محصول، توسعه دهندگان تمایل زیادی دارند که منابع پروژه را از پیوند های وب گرفته تا فرمول ها و… جمع آوری کنند. یکی از بهترین راه ها برای نگه داشتن این اطلاعات به منظور استفاده بعدی آن ها استفاده از PIM (مدیریت اطلاعات محصول) است. تعداد زیادی PIM وجود دارد، اما در اینجا برخی از آن ها را بررسی خواهیم کرد.

Evernote

Evernote

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

Evernote یک برنامه یادداشت برداری است که می توانید از هرچیزی‌ که در هر پلتفرمی وجود دارد یادداشت برداری کنید و هرموقع که می خواهید آن ها را بررسی کنید. یادداشت ها به خوبی سازماندهی شده و کاملاً قابل جستجو هستند، بنابراین همیشه آنچه را که نیاز دارید پیدا خواهید کرد.

TrunkNote

Trunk note یک برنامه یادداشت برداری مانند Wiki-link است. این یک برنامه مبتنی بر تلفن همراه است اما می تواند به راحتی با کامپیوتر نیز از طریق وای فای همگام سازی شود.

انواع دیگر PIM ها مانند Tiddlywiki و …وجود دارند.

هر یک از آن ها دارای ویژگی هایی هستند که ممکن است برای بعضی افراد جذابیت بیشتری داشته باشد. نهایتاً قبل از اینکه از یکی از آن ها استفاده کنید، آن ها را امتحان خواهید کرد.

شناخت کد موروثی

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

Doxygen

Doxygen

Doxygen  یک ابزار کاملاً قدرتمند است که به ایجاد اسناد از کد های منبع کمک می کند. این برنامه عمدتا‌‌‌ً برای کار با C ++ طراحی شده بود اما با C، پایتون و برخی از زبان های دیگر نیز کار می کند. دارای قابلیت استخراج ساختار هر کد، ارائه گراف ها و دیاگرام های وراثتی برای تجسم کد می باشد.

Graphviz

Graphviz

Graphviz  به ارائه اطلاعات ساختاری بصورت دیاگرام گراف ها و شبکه ها کمک می کند. می توان از آن در کنار Doxygen  برای درک بهتر گرافیک تولید شده توسط آن استفاده کرد.

Srecord

Srecord یک ابزار قدرتمند برای دستکاری تصاویر فریمور و تبدیل بین فرمت های مختلف یک فایل است. می توان از آن برای محاسبه و انجام CRC ها و Checksums بر روی بلوک های بایت، تصحیح خطای ایجاد شده در فایل ها و فیلتر کردن یا جابجایی بخش هایی از فایل ها در بین موارد دیگر استفاده کرد.

برخی از ابزار های دیگر که در این دسته قرار می گیرند CrystalRev و Hexplorer هستند.

توسعه الگوریتم ها

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

QFSM

QFSM

QFSM یک ابزار گرافیکی برای طراحی و شبیه سازی ماشین های حالت متناهی است. توانایی آن در شبیه سازی طرح ها باعث می شود که از سایر نرم افزار های این گروه بسیار بهتر باشد. هنگامی که در حال طراحی ماشین های حالت برای FPGA و سخت افزارهای مشابه هستید، بسیار مفید است.

Lucid chart

Lucid chart

بدون شک Lucid chart بهترین و انعطاف پذیرترین نرم افزار فلوچارت است. این برنامه مبتنی بر وب است و دارای ویژگی های تیمی است که به شما امکان می دهد باافراد دیگر با چندین دستگاه کار کنید.

Microsoft Visio

Microsoft Visio

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

Google Slides

Google Slides

یکی از موارد کلیدی در توسعه محصولات در دنیای امروز، استفاده از ابزار هایی است که به تیم ها اجازه می دهد از هر کجا که هستند به طور موثر همکاری کنند و این چیزی است کهGoogle Slides به همراه دارد. می توان از آن برای توسعه انواع نمودار ها از فلوچارت های نرم افزاری تا نمودار های سازمانی و نقشه های ذهنی استفاده کرد. این برنامه مبتنی بر ابر است و تقریباً در همه مرورگر های محبوب کار می کند.

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

کدگذاری برای فریمور امبدد

کدگذاری برای فریمور امبدد

همه مواردی که تا اینجا ذکر شده است به همینجا منتهی می شود. در دنیای SDK ها و IDE ها، انتخاب ابزار ها در این مرحله بستگی به دستگاه مورد نظر و مشخصه هایی دارد که دستگاه طبق آن ساخته می شود. به همین دلیل، من SDK ها و IDE های محبوب مانند MPLAB و… را از بحث حذف می کنم و فقط ابزار هایی که ماهیت بیشتری دارند بررسی می‌کنم.

QT (توسعه GUI)

QT (توسعه GUI)

امروزه نمایشگر ها محبوب ترین رسانه ها برای ارائه اطلاعات به کاربران هستند. SDK QT یکی از بهترین هاست و تقریبا تمامی افراد فعال در زمینه امبدد با آن آشنایی دارند. SDK QT ویژگی محبوب کشیدن و رها کردن (Drag & Drop) را فراهم میکند که توسعه برنامه های پیچیده گرافیکی (GUI) را برای دستگاه های امبدد صرف نظر از پلتفرم یا زبان برنامه نویسی آسان میکند. این اساساً استرس ناشی از استفاده از کد برای ایجاد رابط کاربری را از بین می برد.

(نمونه سازی سریع)

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

Doxygen (ارائه اسناد)

یکی از مهمترین بخش های نوشتن هر کد ساختن سند است و یکی از محبوب ترین ابزار ها برای آن Doxygen است. علاوه بر استفاده از آن برای درک نرم افزار قدیمی، Doxygen این قابلیت را دارد که به طور خودکار نظرات را از یک کد استخراج کرده و یک‌ سند را که شامل آن است ایجاد کند. ساختار های Doxygen شامل فایل ها به صورت گرافیکی هستند و برای هر تابع و متغیر مورد استفاده در کد شما، مرجع ایجاد می کنند. فلوچارت ها و دیاگرام آن ها را نیز می توان با ترکیب Doxygen با graphiz در اسناد تعبیه کرد.

GIT (سیستم های کنترل نسخه)

GIT (سیستم های کنترل نسخه)

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

آزمایش فریمور امبدد

آزمایش بخش مهمی از فرایند توسعه برای هر چیزی است. هنگام فراخوانی دستگاه ها به دلیل خطا های فریمور، شرکت ها هزاران دلار ضرر می کنند، بنابراین این بخشی از توسعه است که باید بسیار جدی گرفته شود. اغلب این کار با کدگذاری انجام می شود و اولین مجموعه از ابزار ها برای تست کد احتمالاً  IDE یا SDK هستند که برای پروژه استفاده می شوند. آزمایش به اشکال مختلف و در مراحل متعددی انجام می شود، بنابراین انواع مختلفی از ابزار ها را شامل می شود. ابزار های آزمایش، توسعه فریمور را از تایید طراحی به تجزیه و تحلیل استاتیک و ابزار های آزمایش زمان اجرا کاهش می دهد. در ادامه چند ابزار گفته میشود که واقعا مفید واقع شده اند.

کریستال REV

کریستالREV ابزاری برای مطالعه کد است. می توان از آن برای ایجاد فلوچارت از کد C یا C ++ استفاده کرد که آن را به یک ابزار عالی برای مرور کد و بررسی اینکه آیا طرح اولیه همان چیزی است که پیاده سازی شده است، تبدیل می کند. با کریستال REV، می توانید تفاوت بین طراحی و اجرا را مشاهده کنید. توانایی آن در ایجاد فلوچارت، داده ها و کد ها نیز آن را به ابزاری مفید برای تجزیه و تحلیل کد قدیمی تبدیل می کند.

PC-Lint

PC-lint یکی از قدیمی ترین ابزار های آزمایش فریمور است. این نرم افزار قادر به تجزیه و تحلیل نرم افزار برای شناسایی اشکالات، آسیب پذیری های امنیتی و اطمینان از نوشتن کد مطابق با استاندارد های صنعت است. ابزار های مشابه شامل polyspace و LRDA ، Eggplant و Tessy است.

Wireshark

Wireshark

Wireshark هنگام ساخت دستگاه های شبکه مفید است. این در اصل یک بسته است که می تواند به مشاهده داده هایی که در دستگاه شما در حال انتقال است کمک کند. Wireshark می تواند به ایمن سازی دستگاه کمک کند.

درایور پورت سریال مجازی

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

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

5 (1 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

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

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