PDA

View Full Version : سوال: کرنل چیست و چطور می تونا یک کرنل برای یک سی پی یو خاص نوشت



mohammad-rezaa
جمعه 06 شهریور 1394, 01:35 صبح
سلام

ببخشید اگر سوالم به عنوان بخش فروم ربطی نداره می تونید انتقال بدید

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

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

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

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

کلا من گیج شدم اگر اطلاعاتی دارید خواهش می کنم یه راهنمایی بکنید

shahin bahari
جمعه 06 شهریور 1394, 13:40 عصر
مثلا یه arm 48 مگا هرتزی می خوام یه کرنل بنویسم بعدش یه سیستم عامل کوچیک که لود بشه و دیگه محدودیت حافظه سی پی یو از بین بره و راحت بشه امکانات زیادی رو براش مقدر کرد
این میکرو کنترلر هست و واحد MMU نداره که بتونه از حافظه ای جز فلش داخلیش بوت بشه!! تمام قابلیت های مهم سیستم عامل رو میتونید با یه RTOS روی این میکرو کنترلر ها داشته باشید و به جای تلاش برای نوشتن از ابتدا دنبال آموزش های RTOS ها باشید که تعداد زیادی از اون ها هم موجود هست.
محدودیت های رم و cpu مربوط به سخت افزار میشه و با نرم افزار قابل حل نیستند. مثلا شما نمی تونید به میکرو کنترلری که واحدی برای کنترل SDRAM نداره یه SDRAM وصل کنید.

mohammad-rezaa
جمعه 06 شهریور 1394, 20:41 عصر
این میکرو کنترلر هست و واحد MMU نداره که بتونه از حافظه ای جز فلش داخلیش بوت بشه!! تمام قابلیت های مهم سیستم عامل رو میتونید با یه RTOS روی این میکرو کنترلر ها داشته باشید و به جای تلاش برای نوشتن از ابتدا دنبال آموزش های RTOS ها باشید که تعداد زیادی از اون ها هم موجود هست.
محدودیت های رم و cpu مربوط به سخت افزار میشه و با نرم افزار قابل حل نیستند. مثلا شما نمی تونید به میکرو کنترلری که واحدی برای کنترل SDRAM نداره یه SDRAM وصل کنید.

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

مثلا چجوری میشه فهمید که یه میکرو کنترلر قابلیت کنترل sdram داره یا نه من این sdram رو متوجه نشدم می تونید بیشتر توضیح بدید
ممنون

mohammad-rezaa
جمعه 06 شهریور 1394, 21:48 عصر
ممنون که جواب دادین
ولی این rtos چی هست میشه یه توضیحی بدید که مثلا چجوری می تونیم یه برنامه ضعیفی رو با این rtos از یه فلش مموری بالا بیاریم

مثلا چجوری میشه فهمید که یه میکرو کنترلر قابلیت کنترل sdram داره یا نه من این sdram رو متوجه نشدم می تونید بیشتر توضیح بدید
ممنون

ببخشید می تونید در مورد mmu هم توضیح بدید که چی هست آیا سی پی یو کامپیوتر اینو داره یا نه
آقا شاهین من تنها امیدم تویی کمک کن

amir001
سه شنبه 18 اسفند 1394, 17:16 عصر
بسم الله
اگر میخوای حتما میشه..
بعضی از میکروها یه قابلیت دارند که یک رم بهشون وصل کنیم و اطلاعات را از یک فلش یا کارت حافظه منتقل کنیم به اون رم و سی پی یو بره و از درون رم برنامه را اجرا کنه.. توی آرم ها مثلا lpc1788 فکر کنم این قابلیت را داره اما مثلا 1768 نداره..

اما حالا چطوری میتونی این کارو توی میکروهایی که قابلیت اتصال رم را ندارند انجام بدی؟
ببینید کسی که این ویندوز را مینویسه و یا لینوکس را مینویسه با من و شما فرقی نداره. اون تونسته ما هم میتونیم.

پیشنهاد من این هست. شما به سبک زبان های اسکریپتی کار کن..
یک موتور یا ماشین مجازی طراحی کن که روی cpu اجرا بشه و بتونه یه برنامه را از فلش بخونه و ترجمه کنه و اجرا کنه.. اینجوری نیاز نیست برنامه را به یک رم بیاری و به سی پی یو بگی داداش برو برام این برنامه را اجرا کن و برگرد.. بلکه یه خط از برنامه را میخونی میبینی نوشته a=3*4 ، به cpu میگی داداش عدد ۳ را در ۴ برام ضرب کن فعلا یهجا نگهش دار تا نیازم شد خبرت میکنم..
میری جلوتر میرسی به print a اینجا میگی اون عددی که بهت گفتم نگه داری را ارسال کن به lcd
زبانهای اسکریپتی اینجوری عمل میکنند..
اینجوری شما یکسری دستورات ویژه برای خودت تعریف میکنی مثل زبان اسمبلی..

aqm176
جمعه 21 اسفند 1394, 09:04 صبح
سلام و خسته نباشید.
به نظرم وقتی چیز های آماده است و دیگران سختی کشیدند باید ازش استفاده کرد.
الان برد های رزبری پای این کار رو به راحتی برات انجام میدن.
امنیتش رو خودت میتونی برآورد کنی، اصلا اینطوری بگم، یه کامپیوتره.

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

روزتون خوش

aqm176
جمعه 21 اسفند 1394, 09:06 صبح
ضمنا
میتونی اول یک کرنل کوچیک بنویسی تو ویچرال باکس اجراش کنی، بعدش بیای برای سخت افزار ARM بنویسی.
اینطوری کاملا درکت میره بالا از برنامه نویسی سیستمی

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