سلام ممنون از پاسختون
ولی حامد آقا فکر کنم این فقط یه متغیرو از نوع Read only تعریف میکنه (درسته یا اشتباه میکنم) من می خوام یه متغیر A[] = {0x45,0x23,0x21,0x67,...};//char که حاوی 1024 عدد است در حافظه فلش میکرو ذخیره کنم من از IAR EWARM V6.10 استفاده می کنم ممنون میشم راهنماییم کنید
با تشکر.
سلام
const را می توانید قبل تعریف آرایه بیارید و با این کار آرایه را در حافظه فلش تعریف می کنید و فقط خواندنی می شود. الان من 4 تا عکس برای glcd را به همین روش در IAR برای میکرو تعریف کردم و آنها را با یک تاخیر کوچک بر روی glcd نمایش دادم مشکلی هم نداشت.
ببخشید معادل store global constants in FLASH MEMORY در IAR کجاست (آیا اصلا همچین گزینه ای داره یا خود کامپایلر متغیر های دارای const رو درون فلش قرار میده)
مثلا تو کد ویژن config project>C compiler>code generation
سلام
تو مسیری که نرم افزار IAR را نصب کردی یک فایل doc هست درون آن یک pdf به نام EWARM_DevelopmentGuide.ENU هست در اون اگر بگردی پیدا می کنید که گفته متغییر های const در ROM ذخیره می شود. خوب در مورد میکروکنترلرها منظور همون فلش میکرو هست. من با تستی که برای ذخیره عکس ها در میکرو برای glcd کردم مطمئنم که با const در حافظه فلش ذخیره می شود.
متغیر های عمومی در هر کامپایلری و هر محیطی دو نوع هستن. دارای مقدار اولیه و بدون اون. متغیر هایی که دارای مقدار اولیه نیستن در ابتدای کار برنامه قبل از اجرای main با صفر پر میشوند. اشاره گر ها با null (که همون مقدار عددی صفر رو داره). ولی مقادیر اولیه متغیر ها در این فاز از داخل محدوده غیر قابل از دست رفتنی (در محیط های میکرو کنترلری از داخل ناحیه فلش) به داخل ram کپی میشوند. اما اگر متغیر تعریف شده ذاتا قابل تغییر نباشد (مثل موقعی که از const یا flash__ استفاده میکنیم) بر خلاف تصور ما که انتظار داریم در ram قرار داشته باشند به ناحیه غیر فرار یعنی flash تعلق دارند.
بنا براین وقتی آرایه ای با مقادیر اولیه تعریف میکنیم این آرایه در ram و مقادیر اولیه اون در فلش وجود دارند. ولی آرایه ای که const تعریف شده قاعدتا نبایستی موجودیتی در ram سیستم پیدا کند.
دیدگاه