مهندسی طور



 

راستش خیلی وقت بود دنبال یه آموزش مناسب بودم که با دیدنش بتونم بفهمم دقیقا چرا ما از زیون C داریم برای برنامه نویسی میکروکنترلر ها استفاده میکنیم و اگه زبون دیگه ای هم به کار میره خیلی از جاها به مشکلاتی میخوره که برای زبون C اصلا مشکل به حساب نمیاد!

خیلی هامون شنیدیم زبون C یه زبون intermediate هستش یا به عبارتی زبونیه که نه خیلی سطح بالاس (مثه پایتون) و نه خیلی سطح پایین (مثه اسمبلی) و همین دلیل هم باعث شده بین برنامه نویس های سخت افزار (به اصطلاح مهندسای امبدد) خیلی محبوب باشه و کلی ازش استفاده شه.ولی خب سوالی که پیش میاد اینه که این مطلب دقیقا چه کمکی به ما تو توسعه اپلیکیشن های امبدد میکنه؟ و اینکه چطور میشه از این قابلیت ها برای توسعه اپلیکیشن ها با کارایی بالاتر استفاده کنیم؟ (ایشالا تصمیم دارم بعد این موضوع برم سراغ روش هایی تو برنامه نویسی C که میتونه باعث بشه برنامه ای که روی ARM با 72 مگاهرتز فرکانس به سختی اجرا میشه روی AVR با فرکانس 8 مگاهرتز که خیلیا اصن بهش توجهی نمیکنن با سرعت قابل قبولی اجرا شه! ولی خب قبلش لازمه پیشنیاز این داستان که فهم دقیق قابلیت های زبون C هستش رو به دست بیاریم :) )

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

خب بریم سراغ توضیح این مراحل!

اولین قدم برا برنامه نویسی سخت افزار نوشتن کد C در قالب یه فایل با پسوند *.C هستش.حالا اگه بخواید فایل های دیگه یا کتابخونه هایی رو هم به پروژه تون اضافه کنید یه سری فایل با پسوند *.h هم خواهید داشت.تا اینجا کاریه که شما به عنوان برنامه نویس انجام میدین.باقی مراحل رو کامپایلر نصب شده روی سیستم شما انجام میده براتون!

کامپایلر با گرفتن این فایل ها در قدم اول فرایند Preprocessing رو انجام میده.تو این فرایند یه فایل با پسوند *.i تولید میشه که در واقع همون کدی هستش که شما نوشتید ولی یه سری تغییرات توش داده میشه.مثلا اینکه شما یه ثابت رو در ابتدای کد با نام TEST تعریف کردید و تو باقی کد هرجا خواستید ازش استفاده کنید به جای نوشتن مقدار اون ثابت صرفا کلمه TEST رو نوشتید.تو فرایند پیس پردازش (اینو همین الان اختراع کردم براش منظورم همون Preprocessing عه!) میاد تمام جاهایی که شما TEST رو نوشتید مقدار اصلیش رو قرار میده.البته این مرحله و مراحل بعدی رو ایشالا در ادامه به صورت کاملتر توضیح خواهم داد.

بعد تولید این فایل کامپایلر وارد عمل میشه و کدهای موجود رو تبدیل میکنه به زبون اسمبلی (هنوز کد برای قرارگیری روی سخت افزار آماده نشده!) و یه فایل با پسوند *.s تولید میکنه.طبیعتا برای ترجمه کدهای C به اسمبلی لازمه کامپایلر با ISA مربوط به سخت افزار مورد نظر ما کاملا آشنا باشه تا بتونه از instruction هایی استفاده کنه که ساختار اون پردازنده پشتیبانی میکنه!

خب تو این مرحله اسمبلر کارشو شروع میکنه و فایل اسمبلی ورودی رو تبدیل میکنه به یه object file با پسوند *.o که تقریبا میشه گفته مشابه چیزی هستش که روی سخت افزار پیاده میشه.داخل این فایل هم یه سری کد به فرمت هگز هستش که در واقع همون کد اسمبلی تولیدی ماست که به این روز دراومده!

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

آخرین قسمت این اپیزود هم متعلق هستش به ابزاری به اسم Locator که این فایل شسته رفته تحویل گرفته شده از Linker رو تبدیل به یه فایل اجرایی میکنه که قابل پیاده سازی روی سخت افزار باشه.به عبارت بهتر میاد و امکانات سخت افزار رو در اختیار کد قرار میده و فضاهای حافظه رو به بخش های مختلف کد اختصاص میده.خروجی این مرحله هم یه فایل اجرایی هستش که برای معماری های مختلف پسوندهاش متفاوت میتونه باشه (برای میکروهای AVR پسوند معروفش *.hex هستش)

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

ادامه دارد.

کامنت یادتون نره!


تبلیغات

آخرین ارسال ها

آخرین جستجو ها

فروشگاه صنایع دستی پینار دانلود بهترین فایل های آموزشی و تحقیقی دکتر مهرداد حسین زاده بختوری | متخصص جراحی مغز و اعصاب بیوگرافی یونولیت,یونولیت سقفی,شرکت مادفوم طلاوجواهرقوچ تایپ صوتی بسم الله الرحمن الرحیم فیزیک هفتم میلان بابااحمدی