برنامهسازی سیستمهای نهفته
از ویکیپدیا، دانشنامهٔ آزاد.
برنامهسازی سیستمهای نهفته، عبارت است از تمام فرایند برپاسازی ابزارها، تنظیم زنجیره ابزار، پرت کردن، برنامهنویسی، لینک و دیباگ برای ایجاد کد قابل اجرا بر روی سیستمهای نهفته (توکار). همچنین پس از آن با استفاده از ابزارهای جانبی آزمایش و دیباگ برنامه در حال اجرا بر روی سیستم هدف.
فهرست مندرجات |
[ویرایش] سیستم نهفته: سختافزار و نرمافزار
یک سیستم نهفته، صرفنظر از ابزارهای جانبی متناسب با هدف سیستم، در واقع کامپیوتری است که برای انجام فرایند خاصی ایجاد و برنامهریزی شده است. کامپیوتر مزبور معمولاً همراه ابزارهایی است که کنترلشان برعهدهاش قرار داده شده است و غالباً غیر از طریق آنها رابطهای با دنیای بیرون ندارد. یک سیستم نهفته معمولاً نیازمندیها و کارکردهای از پیشتعریفشده خاصی دارد که از این بابت از کامپیوترهای همهکاره معمولی متمایز میشود. با توجه با خاص بودن ویژگیهای سختافزاری سیستم نهفته که عمدتاً با توجه به هدف سیستم تعیین میشوند، نرمافزاری که بخواهد بر روی چنین سیستمی اجرا شود، باید ویژگیهای خاصی هم داشته باشد، که از آن جملهاند:
[ویرایش] پاسخ بلادرنگ
یعنی زمانبندی و برآوری نیازمندیها و محدودیتهای زمانی در آن از اهمیت خاصی برخوردار است. البته این مساله بیشتر در مورد سیستمهای نهفته بلادرنگ صدق میکند، وگرنه برای مثال خودپرداز بانک نیازی به پاسخ بلادرنگ ندارد، اما سیستم جانپناه (لایفگارد)، یا سیانسی حتماً نیاز به پاسخ بلادرنگ دارد.
[ویرایش] قابل اعتماد بودن
از آنجا که معمولاً سیستم نهفته باید بتواند در مدت زمان خاصی بدون نیاز به مراقبت انسان کارش را بدون خطا انجام دهد، قابلیت اعتماد نرمفزار و سختافزار آن از اهمیت خاصی برخوردار است. بنابراین نرمافزار این قبیل سیستمها معمولاً با دقت بیشتری توسعه داده شده و آزمایش میشود.
[ویرایش] مقاوم در برابر خطای نرمافزاری و سختافزاری
بسیاری سیستمهای نهفته معمولاً در جایی دور از دسترس انسان، یا توسعهدهنده کار میکنند. مثلاً سیستم Access بیسیم که برای دادن اتصال تلفن و موبایل به جاهایی که کابلکشی برای آنها مقرون به صرفه نیست، باید بتواند بدون نیاز به حضور تکنیسین در نزدیکی آن کارش را انجام دهد یا خطاهای جزیی را رفع کند. مبحث محافظت در دستگاههای مخابراتی سرفصلی برای این قبیل موارد دارد. بنابراین این قبیل سیستمها حتی در صورتی که خرابی عمدهای هم رخ دهد، باید بتوانند تا جای ممکن به کار خود، یا حداقل قسمت بحرانی و مهم آن ادامه دهند.
[ویرایش] توسعه نرمافزار
توسعه نرمافزار برای سیستمهای نهفته دارای شرایط و نیازمندیهای خاصی است. این شرایط میزان پیچیدگی طراحی و ابزارهای مورد نیاز کار پیادهسازی را مشخص می کند.
[ویرایش] سیستم عامل
اولین مورد بررسی سطح پیچیدگی عملکرد سیستم برای سنجش نیازمندی ساختار به سیستم عامل است. سیستم عامل غالباً در مواردی استفاده میشود که پیچیدگی عملکرد سیستم، یا نیاز آن به پروتکلهای ارتباطی وجود آن را اجباری کند، وگرنه در سیستمهای صنعتی تاکید بر سادگی، ارزان تمام شدن و سریع بودن است. مثلاً یک سیستم کنترل ماشین لباسشویی یا تلفن عمومی نیازی به سیستم عامل ندارد، اما یک خودپرداز (اگر چه بدون سیستم عامل هم قابل پیادهسازی است.) به خاطر نیاز به ارتباط TCP/IP ارزش استفاده از سیستم عامل را دارد. در پیادهسازی سیستمهای نهفته، در صورتی که نیاز باشد، میتوان از سیستم عاملهای مختلفی استفاده کرد. مثلاً در بسیاری سیستمها که در ساختار ساده هستند، اما نیاز به پروتکلهای شبکه دارد، میتوان از سیستم عامل ویندوز به صورت ساده شده استفاده کرد. در این مورد انتخابهای مختلفی وجود دارد، برای مثال برخی خودپردازها از ویندوز 98 خلاصه شده استفاده میکنند. سیستمهای جهتیاب رادیویی ساخت صنایع داخلی در نسخه های مختلف از داس 5، ویندوز 98، ویندوز سیایی (Windows CE)، ویندوز اکسپی نهفته (Window XP Embedded) استفاده میکنند. برخی سیستمهای مخابراتی ساخت ایران از سیستم عاملهای نهفته VxWorks یا eCos استفاده میکنند که دومی سیستم عامل متنباز شرکت سیگنوس است و در حاضر توسط شرکت eCos Centric پشتیبانی میشود. لینوکس نهفته هم انتخاب دیگری است که میتوان از آن برای این قبیل توسعه استفاده کرد.
[ویرایش] زنجیره ابزار
همانند هر نرمافزار دیگری، برای توسعه نرمافزارهای نهفته به زنجیره ابزارهای خاصی نیاز هست. این زنجیره ابزار، اما تفاوت خاصی با سایر زنجیره ابزارها دارد، با توجه به خاصکاربرد بودن سیستمهای نهفته، معمولاً امکان اجرای برنامه کامپایلر، لینکر و دیگر ابزارهای توسعه و بخشهای مختلف زنجیره ابزار بر روی این سکوها وجود ندارد. در اینجا بحث کراس-کامپایل مطرح میشود، یعنی برنامه بر روی یک سیستم برای سیستم دیگر کامپایل میشود. این کار نیازمند تهیه مقدمات خاصی و تنظیماتی بر روی ابزارها است. به علاوه پس از توسعه، کدنویسی، کامپایل، لینک و بار کردن کد نهایی بر روی سیستم هدف، مشکل دیباگ آن در حال اجرا پیش میآید. برای دیباگ این قبیل برنامهها نیاز به ابزارهای اشکالزدایی درون مداری (In Circuit Debugger/Emulator) یا آیسیایی وجود دارد. آیسیایی عبارت است مجموعهای شامل مبدل سختافزاری که بین کامپیوتر توسعه دهنده و سختافزار نهفته قرار میگیرد و رابط نرمافزاری که روی کامپیوتر میزبان اجرا میشود. با آیسیای میتوان برنامه را بر روی سیستم بار کرد، گام به گام اجرا کرد، مقادیر متغیرها را در زمان اجرا دید و ....
[ویرایش] پرت کردن
پرت کردن فرآیند بازطرح سیستم عامل برای اجرا روی یک سختافزار خاص، یا بازطرح برنامه یا تکه کدی برای اجرا بر روی سیستم عامل دیگری غیر از آنکه برایش طراحی شده را گویند. ایجاد یک سیستم نهفته معمولا توسعه دهنده را وادار میکند که راهاندازها را به سیستم عاملش پرت کند، یا سیستم عاملش را برای سختافزار در دست طراحیاش پرت کند.