PDA

View Full Version : مشکل در هندل کردن خطا ها و IRQ ها



abbas.oveissi
جمعه 01 فروردین 1393, 04:49 صبح
سلام خسته نباشید.
خیلی فکرکردم که ببینم چه جوری سوالمو بپرسم اما راه حل دقیقی به ذهنم نرسید. من نزدیک دو هفته هست کلی تلاش کردمو مطلب خوندم تا بتونم یک کرنل ساده برای خودم درست کنم ( هرچی گشتم دیدم پروژه خیلی ساده ایرانی پیدا نمیکنم همکاری کنم و اگر ایرانی یا خارجی هم پیدا کردم در حدی نبودم که بتونم همکاری کنم ) .
همه چی خوب پیشرفتو تونستم سیستم رو بوت کنم.روی مانیتور نوشته بنویسم و حتی بتونم بفهمم کاربر چی تایپ میکنه.
اما مشکل از اینجا پیدا شد که خواستم خطا ها و وقفه ها مثل تقسیم بر صفر یا وقفه کیبورد رو هندل کنم
با استفاده از سایت هایی که توی گوگل دیدم و شما هم توی منابع نوشتین با چنتا سایت دیگه gdt و idt رو لود کردم اما با لود idt اصن هیچ تغییری حاصل نشد!!! مشکل اینجاست هر جوری سعی کردم بفهمم مشکل چیه نشد مثلا کلی از دستور های بخش مانیتور Qemu رو خوندم اما باز نتونستم مشکلو پیدا کنم :((((
کد هامو ضمیمه کردم شاید کسی بتونه کمک کنه
دستتون درد نکته

آپدیت ۱ : من کد هارو با gcc کامپایل میکنم و روی Qemu تست میکنم . اوایلش هم از Bare Bones سایت OsDev شروع کردم.

abbas.oveissi
جمعه 01 فروردین 1393, 14:48 عصر
فعلا که کسی نیومده کمک کنه و امیدوارم یکی با مرور کد های من بهم بگه اشتباهم کجاست (البته میدونم سخت ترین کار همینه که آدم اینجوری ایراد کسی رو بهش بگه).البته خدا پدر اوپن سورس رو بیامرزه.الان دارم سعی میکنم با استفاده از کد های سیستم عامل آراکس اشکال های خودمو پیدا کنم فعلا که چنتا نکته ی باحال مثل استفاده از ماکرو ها که اصلا یادم نبود رو ازش یادگرفتم.

pswin.pooya
یک شنبه 03 فروردین 1393, 16:34 عصر
این خیلی خوبه که آراکس تونسته برای شما مفید باشه. خوشحال شدم.:لبخند:

برای استثتاء ها و مدیریت اونها باید قبل از هر چیز gdt رو درست و کامل انجام بدبد و بعد از اون idt رو مقدار دهی کنید. که البته همین نوشتن idt برای خود من چند هفته زمان برده بود. اگر مشکلتون رو بتونید دقیقتر بیان کنید. بهتر می تونم کمکتون کنم.

abbas.oveissi
دوشنبه 04 فروردین 1393, 13:08 عصر
آقا کمک که خیلی کرد,اگر سیستم دونیت داشت ۲ و۳ هزار تومنی دونیت میکردم :دی
اولا باعث شد من یکم ساختار فایل ها رو بهتر کنم,البته نه در حد آراکس که اون همه گندست,فقط مثلا منظورم فایل های اسمبلی gdt و idt اینارو از هم جدا کردم
دوما چون میدونستم وقتی شما نوشتی و کد ها تقریبا شبیه هم هست , پس منم میتونم و احتمالا جایی سوتی دادم.خیلی جاها رو با کد های شما چک کردم و اگر کد های شما واضح تر بود شبیه کد شما کردم ( مثلا من دیده بودم توی سی شارپ از | برای تعیین خاصیت ها استفاده میکنن اما نمیدونستم قضیه پشت این عمل bitwise برای flag ها هست , خیلی جالب بود :دی )

در کل درست شد,فکر کنم مهمترین سوتی که توی یک سایتی فهمیدم این سوتی رو دادم این بود که sti نکرده بودم و اصن فعال نبودن intrrupt ها :دی
ولی دومین بار بود که واقعا اپن سورس کمک کرد بهم و از سیستم عاملتون متشکرم , فعلا دارم تحقیق میکنم بعد اینا باید اول چیو درست کنم :دی