با سلام
جابجایی آدرس فلش درسته و کار می کنه ولی وقتی پرگرام می کنم vector ها جابجا نشده والبته درسته چون آدرس اون رو همون صفر گذاستم .
ولی وقتی آدرس شروع vector ها رو میارم a000 که همون آدرس شروع برنامه هم هست دیگه برنامه کار نمی کنه.
من می خوام کل برنامه و vector ها به سکتور 10 بره و سکتور صفر رو کلا خالی کنم ولی هر کاری می کنم نمیشه میشه راهنمایی کنید .
وقتی برنامه را کمپایل می کنم و البته هر دو عدد آدرش شروع وکتور و رام را روی a000 گذاشتم انتظارم اینه که در فایل باینری خروجی برنامه دیتاها از a000 شروع بشه ولی اینطوری نیست :angry:
در حالت عادی که هر دو عدد آدرس شروع وکتورها و رام صفر است ولی در فایل باینری برنامه در آدرس صفر شروع می شود و بعد از آن چند بایت خالی است و دوباره از 0x300 برنامه اصلی شروع شده
واقعا من چکار کنم که تمام برنامه و وکتورها از سکتور 10 شروع بشه
اگر می خواهید بوت لودر شبیه به بوت لودر کیل که در این سایت هم زیاد ازش استفاده کنید خوب برنامش رو کافیه برسی کنید . البته IAr هم بوت لودر داره.
اگر توضیح بدید که دقیقا می خواهید چکار کنید . میشه بهتر کمک کرد.
ببینید بوت لودر خودش یک برنامه است که در آدرس صفر قرار داره و بردار های وقفه خودش و داره .
بوت لودر دو حالت عملیاتی میشه براش پیش بینی کرد . 1- حالت بارگزاری 2 - حالت فعال چند لحظه ای بعد ریست .
در حالت شماره 1 یعنی وقتی که بوت لودر وارد عمل لود میشه برنامه کاربر را از آدرس مثلا 2000 بار میکنه . و در غیر این صورت یعنی در حالت 2 به این صورت عمل میکنه
بعد از ریست محل بردار وقفه رو به محل 2000 تغییر میده و به آدرسی که در بردار صفر نوشته شده جامپ میکنه . فقط همین .
حالا فقط کار بر باید در موقع لینک برنامه خودش یک جابجایی 2000 تایی برای کل آدرس ها در نظر بگیره .
تنها موردی که همه آدما یقین دارن خدا در حقش زیاد لطف کرده
داشتن عقله زیادتر از دیگر آدم ها است
در برنامه بوت لودری که من نوشتم بعد از چک یکسری چیزها به آدرس 0xa000 که آدرس اپلیکشنم هست میرم .
البته خود برنامه اپلیکشن به تنهایی کار می کنه ( وقتی روی آدرس 0 استفاده می کنم )
ولی الان مشکل من در اینجاست که چطوری برنامه اپلیکشن رو برای آدرس 0xa000 که سکتور 10 است بنویسم و در عمل در فایل .bin خروجی سکتورهای اولیه خالی بمونه و دقیقا برنامه از همون آدرسی که من میگم شروع بشه .
بعد در برنامه بوت لودر که من به اون آدرس میرم .
من فکر میکنم شما اشتباه میکنید . ( شاید هم خودم اشتباه فکر میکنم ). ببینید خاصیت جابجایی بردار وقفه این نیست که ما بیاییم برنامه رو از مثلا آدرس 500 شروع کنیم . بلکه این خاصیت این معماری
فقط به درد این میخوره که ما 50 تا بردار وقفه متفاوت برای 50 تا برنامه که بصورت مستقل ازهم هستند - داشته باشیم . یعنی اولین بردار وقفه باید از آدرس صفر شروع بشه . حالا 49 تای بقیه میتونه هرجا باشه .حالا برنامه میتونه تو وضعت های متفاوت ( در کسری از ثانیه ) برنامه های مستقل متفاوت رو اجرا کنه .
تنها موردی که همه آدما یقین دارن خدا در حقش زیاد لطف کرده
داشتن عقله زیادتر از دیگر آدم ها است
من فکر میکنم شما اشتباه میکنید . ( شاید هم خودم اشتباه فکر میکنم ). ببینید خاصیت جابجایی بردار وقفه این نیست که ما بیاییم برنامه رو از مثلا آدرس 500 شروع کنیم . بلکه این خاصیت این معماری
فقط به درد این میخوره که ما 50 تا بردار وقفه متفاوت برای 50 تا برنامه که بصورت مستقل ازهم هستند - داشته باشیم . یعنی اولین بردار وقفه باید از آدرس صفر شروع بشه . حالا 49 تای بقیه میتونه هرجا باشه .حالا برنامه میتونه تو وضعت های متفاوت ( در کسری از ثانیه ) برنامه های مستقل متفاوت رو اجرا کنه .
مهندس ممنون از پاسختون
من تنها کاری که می خوام انجام بدم اینه که برنامه رو با iar برای یک آدرس خاص مثلا 0xa000 بنوسیم البته خیلی برنامه ها دیدم که همین کار رو با iar البته برای sam نوشتند و کار هم می کنه .
در اون دو تا عکسی که گذاشتم باید یک تغییراتی بدم که کار کنه ولی نمی دونم چی !!!
این بحق برای استفاده از بوت لودر دومه
بوت لودر دوم من کارش را خوب انجام می ده ولی وقتی برای اجرای اپلیکشن می رم چون فایل اپلیکیشن برای اون فضا نیست مشکل برمی خوره
یک موضوع دیگه
گفته می شود که 4 بایت اول برنامه مقادیر sp و 4 بایت بعدی pc است در فایل باینری خروجی .
ولی من 2 فایل بایتری دارم که هر دو درست کار می کنند در عمل درست کار می کنند ولی محتویات اونها نشون دهنده اینجور چیزها نیست نکته مشترک در مورد هر دو اینه که در فایل باینر ی از آدرس 300 هگز به بعد دیتاها شروع می شود ( من این 300 هگز را هیچ جایی نه در تنظیمات ست کردم و نه می توانم ببینم )
واقعا گیج شده ام . :cry:
اگر با کمپایلر iar آشنایی دارید خواهش می کنم کمک مکنید که من چطور آدرس شروع برنامه را جابجا کنم ( عکسهایی که گذاشم )
دیدگاه