PDA

View Full Version : شبیه ساز میکروکنترلر



Moharram
دوشنبه 18 آبان 1383, 14:07 عصر
سلام

با تشکر از توجهی که کردین

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

امیدوارم منظورم رو فهمیده باشید .
منتظر راهنماییهاتون هستم .

aakh1361
پنج شنبه 21 آبان 1383, 03:12 صبح
من که نفهمیدم بیشتر توضیح بده :موفق:

Moharram
شنبه 23 آبان 1383, 12:33 عصر
توضیح بیشتر :

بیین برای برنامه نویسی میکروکنترلر یه زبان اسمبلی وجود داره (یه چیزی مثل اسمبلی 8086 که 3 واحد هم درس تو دوره لیسانسه) . تو 8086 اسمبلر و لینکر داریم تا بشه فایل asm.* رو بترتیب تبدیل به فایل obj.* و بعدش exe.* بکنیم . تا اینجاشو گرفتی ؟

در اسمبلی میکروکنترلر هم یه اسمبلر داریم که فایل asm.* رو به فایل hex.* تبدیل می کنه (در اینجا چون دیگه کامپیوتری در کار نیست فایل exe.* به درد ما نمی خوره) . اینم تا اینجا ...

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

میکروکنترلر برای اجرای برنامه از حافظه واکشی می کنه و کد دستورالعمل رو شناسایی می کنه (مثلا 0x25 برای MOV) و خط به خط میره جلو . یه چیزایی از طراحی کامپیوتر پایه از درس معماری کامپیوتر به یادت بیار . حالا من میخوام این کار رو شبیه سازی کنم . یعنی اون فایل hex.* رو بگیرم و همون کارهایی که میکرو کنترلر انجام میده (بصورت شبیه سازی شده) ببینم .

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

خوب امیدوارم متوجه شده باشین

Vahid_Nasiri
شنبه 23 آبان 1383, 12:52 عصر
در مورد PIC یک نمونه سورس باز اینجا هست:
http://www.gnupic.org/

aakh1361
یک شنبه 24 آبان 1383, 18:52 عصر
همش رو کرفتم :mrgreen:
شما می خواید یک سخت افزار رو روی دستکاه خودتون شبیه سازی کنید
من خودم تقریبا دوسال بیش یک سی بی یو 80x86 رو بطور کامل روی دستکاهم شبیه سازی کردم واسش هم جند تا برنامه هم نوشته بودم
کاری که شما می خواید انجام بدید نوشتنش زیاد سخت نیست برای من که سه روز بیشتر نوشتن کدش طول نکشید
حالا شما تو نوشتن این برنامه کمک می خواید؟

Moharram
دوشنبه 25 آبان 1383, 09:23 صبح
تقریبا درست فهمیدی . ولی اگه میشه یه کم درباره برنامه خودت توضیح بده .


واسش هم جند تا برنامه هم نوشته بودم

منظورت اینه که برنامه ها رو به اسمبلی به برنامه خودت میدی ؟

aakh1361
دوشنبه 25 آبان 1383, 11:43 صبح
تقریبا درست فهمیدی . ولی اگه میشه یه کم درباره برنامه خودت توضیح بده .
یعنی یک سی پی یو 80x86 رو با تمام دستوراتش رو کامپیوتر شبیه سازی کرده بودم افتاد :wink:


منظورت اینه که برنامه ها رو به اسمبلی به برنامه خودت میدی ؟
بله!

aakh1361
دوشنبه 25 آبان 1383, 11:47 صبح
البته به صورت فایل تبدیل شده به زبان ماشین هم میشه ولی برنامه نوشتنش یک خورده پیچیده می شه

Moharram
دوشنبه 25 آبان 1383, 14:36 عصر
یعنی خودت کار اسمبل کردن رو انجام میدی

Moharram
دوشنبه 25 آبان 1383, 14:40 عصر
یه کم هم از زبان برنامه نویسی که استفاده کردی و interface برنامه بگو

aakh1361
سه شنبه 26 آبان 1383, 10:06 صبح
یعنی خودت کار اسمبل کردن رو انجام میدی

نه
شما برنامه نوشته شده به اسمبلی رو با مترجم تبدیل به Obj می کنید بعد با لینکر تبدیل به کد ماشبن می کنید و اون فایل رو باز میکنید و دونه دونه(بایت به بایت) دستوراتش رو به شبیه ساز می دید
البته شبیه سازی که من نوشته بودم باید به صورت اسمبلی بهش برنامه می دادی و اون هم کدهای معادل اون دستور اسمبلی رو اجرا می کرد
واضح بود ؟ :mrgreen:



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

برای نوشتن این شبیه ساز از زبان سی استفاده کرده بود چون بهترین زبان برای این کارها هست کدهای نوشته شده به این زبان بسیار بهینه هستند و باعث اجرای برنامه با سرعت زیاد می شوند البته اگر شما بتونید به اسمبلی این شبیه ساز رو بنویسید این شبیه ساز در حداکثر سرعت خودش اجرا میشه

interface ؟

Moharram
چهارشنبه 27 آبان 1383, 09:42 صبح
من می خوام از سی شارپ استفاده کنم . تقریبا قابلیتهای C رو داره
منظورم از Interface اینه که برنامه باید محتویات تمام رجیسترها رو در هر لحظه از اجرا نشون بده . برای رسیدن به این هدف چی کار کردی ؟
در ضمن برنامه باید تحت ویندوز باشه .

aakh1361
پنج شنبه 28 آبان 1383, 06:25 صبح
من می خوام از سی شارپ استفاده کنم . تقریبا قابلیتهای C رو داره
منظورم از Interface اینه که برنامه باید محتویات تمام رجیسترها رو در هر لحظه از اجرا نشون بده . برای رسیدن به این هدف چی کار کردی ؟
در ضمن برنامه باید تحت ویندوز باشه .در مورد نشان رجیستر ها شما حتما این کارو رو انجام بدی تا زمانی مطمعنا نشد که برنامه ات صد در صد درست کار می کنه باید این کارو بکنی و حتما وقتی برنامه ات کامل شد این امکان رو هم داخلش بذار ولی اون وقت غیر فعال باشه
مثالا برای نشان دادن رجیستر ها من از این دستور استفاده می کردم این دستور رجیستر ها رو در بالای صحفه نمایش نشان می داد
printf("al=%al ah=&i ax=%i")l
و الا آخر
بعد از هر دستور اسمبلی شما باید وضعیت رجیستر ها را نشان بدهید تا از درست کار کردن دستورات مطمعن شوید
در مورد تحت ویندوز بودنش هم شما باید شبیه سازتان را جوری بنویسید تا خروجی ان برنامهای که قرار است با شبیه سازتان اجرا شود به یک پنجره ویندوز برود
برای اطلاعات بیشتر در مورد شبیه ساز Z80 و سورس این شبیه ساز
http://www.z80.info/
:موفق:

Moharram
شنبه 30 آبان 1383, 10:37 صبح
:thnx: