سلام
چطور میتونم بفهمم چقدر از حافظه فلش ۲۵۶ کیلوبایتی موجود در AT91SAM7X256 پر شده و اصلا چطور بفهمم برنامه ی من چقدر حافظه ی فلش نیاز داره؟
کدی که من دارم الان ۴۴ کیلو بایت حجم فایل HEX ش هست و ۱۶ کیلوبایت حجم فایل bin ش
نمایش نسخه قابل چاپ
سلام
چطور میتونم بفهمم چقدر از حافظه فلش ۲۵۶ کیلوبایتی موجود در AT91SAM7X256 پر شده و اصلا چطور بفهمم برنامه ی من چقدر حافظه ی فلش نیاز داره؟
کدی که من دارم الان ۴۴ کیلو بایت حجم فایل HEX ش هست و ۱۶ کیلوبایت حجم فایل bin ش
شما حجم فایل bin رو مد نظر داشته باش
یعنی با این اوصاف برنامه شما 16 کیلوبایت شده
سلام مهندس
از چه كامپايلري استفاده ميكني؟ Keil يا IAR يا ....؟
از کیل استفاده میکنمنقل قول:
لطفا" عکسو ببین
دوست گرامی - این عکسی که شما گذاشتی درسته نوشته کد ولی هر برنامه ای یه سری دیتا اضافی داره که تو فلش ذخیره میشه ، یعنی شما باید 4 بخش رو با هم جمع کنید تا حجم واقعی برنامه به دست بیاد
ولی مهندس بقیه مربوط به فلش نیستند مربوط به رم اند . جمع 3 تای بعدی کل فضای اشغال شده رم رو نشون میده ..
اولی مربوط به فضای کد و سه تای بعدی مربوط به سه نوع فضای دیتا هست ( رم )
سلام دوستان گلم.
جمع عدد اول و دوم یعنی :
code+ro data
میشه اونچه از حافظه فلش که اشغال میشه.
جمع دو تای بعدی یعنی:
rw data+zi data
میشه فضایی که از رم اشغال میشه.
موفق باشید.
حجم فایل bin من ۱۵۷۳۶ بایت هست و مجموع مقدار Code و مقدار RO-Data و مقدار RW-data جمعا میشه دقیقا ۱۵۷۳۶ بایت
۱۳۶۱۲+۲۱۰۰+۲۴
[PHP]Program Size: Code=13612 RO-data=2100 RW-data=24 ZI-data=4904 [/PHP]خوب ما الان فقط فایل bin رو به میکرو میفرستیم پس مقدار ZI-data عملا نقشی در حافظه برنامه یا رم میکروی ما نداره
من مطلبی که نوشتمو تو یه تاپیک فروم کیل خوندم، واسه خودمم همیشه حدودی دیدم درسته، راستش هیچوقت اینقد دقیق جمع نزده بودم ببینم چی میشه :0013:
بله درسته .. در واقع اینطوریه :
Total RAM Size = RW Data + ZI Data
Total ROM Size = Code + RO Data + RW Data
وقتی ZI data رو به میکرو نمیفرستیم چطور خودش وارد رام میکرو میشه؟نقل قول:
فایل bin که به میکرو ارسال میشه شامل ZI Data نیست
در لینک زیر هم که توضیح داده موقع ای که خاسته مقدار ZI data رو تو رام نشون بده کنارش زده Clear
[Dear Guest/Member you can't see link before replyclick here to register]
خوب رام طبق برنامه اشغال میشه، شما دیتایی تو رام نمیریزی، برنامته که اون دیتارو به رام اختصاص میده، یعنی مثلا یه خط برنامه که مثلا یه آرایه 1000 تایی از نوع بایت شما توش درست میکنی باعث میشه 8000 بایت از رامت پر بشه در صورتی که هیچ داده ای هنوز تو اون فضا نیست. متوجه منظورم شدی؟(رام جدا پروگرم نمیشه،شما وقتی تو کیل توی target option میری میبینی که آدرس رام و رم رو براش معلوم کردی، ولی موقع پروگرم کردن چیزی تو رم ریخته نمیشه، برنامست که موقع اجرا وقتی به خطی میرسه که قراره از رم استفاده کنه اون فضارو استفاده میکنه،این قضیرو با دیباگ کردن به وسیله jlink و 2 تا بریک پوینت به راحتی میتونی چک کنی(قبل از این که خط ساخت یه داده اجرا نشه داده ای تو رم وجود نداره!))
مثلا شما وقتی به rtx اجازه میدی برای یه تسک از 100 بایت رام استفاده کنی در واقع موقع برنامه نویسی و کامپایل اصلا داده ای وجود نداره که تو اون 100 بایت قراره ریخته بشه، شما فقط فلش میکرو رو پروگرم میکنی و وقتی برنامت اجرا میشه rtx از اون 100 بایت رامی که بهش دادی استفاده میکنه، بعد کیل آخر کامپایل کردن برنامه این فضاهای رام استفاده شده در برنامتو (اعم از داده ها، پشته ها و... که استفاده کردیو) جمع میزنه و به عنوان ro data و rw data داره نشون میده.
بله درسته اصلا به این قضیه دقت نکرده بودمنقل قول:
یه سوال
کلا RW Data وZI DataوCodeوRO Data چیه؟
هر کدوم ر واگه میشه بیشتر بازش کنید....