PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : اختصاص بخشی از فضای flash میکرو به عنوان ram؟!



sadmonew
16-05-2014, 14:12
سلام به مهندسین عزیز
الان دوتا مسئله ذهنم رو درگیر کرده.
یکی اینکه :آیا قرار دادن بخشی از فضای فلش به عنوان رم اصلا" امکان پذیره؟(میشه اینکارو کرد، خواستم نظر دوستانی که احیانا" این کارو انجام دادن جویا بشم)
مسئله دوم: اینه که سرعت خوندن دیتایی که تو فلش ذخیره شده نسبت به فضای رم اصلی میکرو خیلی محسوس هست؟
من با Keil و میکروی STM32 کار میکنم.
ممنون از توجه دوستان

موفق باشیم

sarab1
16-05-2014, 17:02
سلام به مهندسین عزیز
الان دوتا مسئله ذهنم رو درگیر کرده.
یکی اینکه :آیا قرار دادن بخشی از فضای فلش به عنوان رم اصلا" امکان پذیره؟(میشه اینکارو کرد، خواستم نظر دوستانی که احیانا" این کارو انجام دادن جویا بشم)
مسئله دوم: اینه که سرعت خوندن دیتایی که تو فلش ذخیره شده نسبت به فضای رم اصلی میکرو خیلی محسوس هست؟
من با Keil و میکروی STM32 کار میکنم.
ممنون از توجه دوستان

موفق باشیم

سلام مهندس stm رو زیاد نمیدونم اما قرار دادن بخشی از فضای فلش به عنوان رم کار ناممکنی نیست!
دو تا موضوع هست : یکی سرعت نوشتن و خواندن که در حافظه فلش محدود هست (فکر میکنم در حدود 2-30 مگا هرتز باشه)
مورد دوم محدودیت تعداد نوشتن هستش که نا محدود نیست (10000-100000 بار ) به همین خاطر برای دستگاهی که در هر ثانیه ممکنه چندین بار مقادیر متغییر ها رو عوض کنه که این دستگاه در وضعیت کار مداوم حافظه فلشش فکر نکنم بیشتر از یه ماه دوام بیاره!

sadeghbakhshi
16-05-2014, 17:56
سلام
امکانش هست که یک ای سی sram رو کنار میکرو قرار داد و با اون کار کرد؟
البته نه به این صورت که خودمون از gpio برای قرار دهی دیتا استفاده کنیم
یعنی یه باسی وجود داشته باشه
که بصورت خودکار خود میکرو ازش استفاده کنه
مثل lpc 1788
ایا میشه؟

esisafa
17-05-2014, 01:03
بستگی به میکرو داره که کنترلر رم خارجی داره یا نه. مثل نمونه ای که خودتون گفتین. در این صورت در تنظیمات پروژه باید فضای رم جدید رو هم اضافه کنید

sadeghbakhshi
17-05-2014, 01:51
بستگی به میکرو داره که کنترلر رم خارجی داره یا نه. مثل نمونه ای که خودتون گفتین. در این صورت در تنظیمات پروژه باید فضای رم جدید رو هم اضافه کنید
حالا خودمون چطوری میتونید یه همچین باسی رو طراحی کنیم
البته سرعتش هم قابل توجه باشه
یا بهتر بگم چطوری متوجه بشیم که چه زمانی رم داخلی اشباع شده و باید اطلاعات رو روی رم خارجی بریزیم؟

shahin
17-05-2014, 14:51
حالا خودمون چطوری میتونید یه همچین باسی رو طراحی کنیم
البته سرعتش هم قابل توجه باشه
یا بهتر بگم چطوری متوجه بشیم که چه زمانی رم داخلی اشباع شده و باید اطلاعات رو روی رم خارجی بریزیم؟

وقتی شما رم خارجی کنار میکرو می زارید آدرس او قسمت از حافظه به ادامه حافظه داخلی اضافه میشه. توی تنظیمات کامپایلر هم که معرفی شده فضای کل رم (مقدار داخلی + مقداری که شما گزاشتید) حالا دیگه خودش تصمیم میگیره کی و کجا متغییر ها رو ذخیره کنه.
تمام این کار توسط خود سخت افزار انجام میشه .حالا اگه شما بخواید اون باس رو شبیه سازی کنید ( که بدیهی هست سرعت خیلی پایین تری از باس سخت افزاری پیدا میکنه) باید از آدرس دهی داینامیک استفاده کنید. به عبارتی این حافظه جدید که اضافه کردید و تو فضای آدرس دهی استاندارد میکرو نیست رو به صورت Heap دوم در نظر بگیرید. نحوه استفاده مثل حالتی هست که از توابع malloc و این ها استفاده میکنیم. ولی این توابع رو حتما باید باز نویسی کنید که این آدرس های مجازی شما رو بشناسه.
در کل با توجه به سرعتی که میده و درگیری زیاد پردازنده زیاد به صرفه نیست.....

esisafa
17-05-2014, 15:03
اگر داده هایی دارید که باید دائما خوانده و نوشته بشن باید حتما از میکرویی استفاده کنید که رم کنترلر داره.
اما اگر نوشتن زیادی لازم نیست و فقط خواندن زیاد داره مثل رشته های ثابت، بهتره از همون فلش استفاده کنید.

sadmonew
17-05-2014, 18:10
اگر داده هایی دارید که باید دائما خوانده و نوشته بشن باید حتما از میکرویی استفاده کنید که رم کنترلر داره.
اما اگر نوشتن زیادی لازم نیست و فقط خواندن زیاد داره مثل رشته های ثابت، بهتره از همون فلش استفاده کنید.
سلام به دوستان عزيزم، مهندسين گل
از توجه همگي بينهايت ممنونم
مهندس صفامنش گل ميشه يكم بيشتر در مورد قسمت "رم كنترلر" توضيح بدين. داده هام بايد دائما" خونده و نوشته بشن و به فضاي رم زيادي هم احتياج دارم و از رم خارجي هم نميتونم استفاده كنم.
آيا ميكرويي مثل lpc1768 اين قابليت رو داره؟

موفق باشيم

esisafa
17-05-2014, 21:17
به دیتاشیت میکرو نگاه کنید متوجه میشید که کنترلر حافظه ی جانبی داره یا نه.
1768 نداره ولی 1788 داره. با واحد EMC یعنی کنترلر حافظه ی خارجی میتونید حافظه ی sram و dram و flash به میکرو اضافه کنید. دیتاشیت رو بخونید میفهمید.

sadmonew
17-05-2014, 22:47
به دیتاشیت میکرو نگاه کنید متوجه میشید که کنترلر حافظه ی جانبی داره یا نه.
1768 نداره ولی 1788 داره. با واحد EMC یعنی کنترلر حافظه ی خارجی میتونید حافظه ی sram و dram و flash به میکرو اضافه کنید. دیتاشیت رو بخونید میفهمید.
سلام مهندس:hi:
ممنون بابت پاسخ.
این دقیقا" همون واحد FSMC تو میکروهای STM32 هست.
اما نکته اینجاست که من نمیخوام از رم خارجی استفاده کنم!

esisafa
17-05-2014, 23:28
داده ها زیاده و در رم میکرو جا نمیشه. رم خارجی هم نباشه. سرعت هم باید زیاد باشه.
من چیزی به ذهنم نمیرسه. ببینید حافظه ی رم سریال پیدا نمیکنید!!!!؟؟؟
داده ها مگر چقدر هستن؟ اگر خیلی زیاد باشن که در حافظه ی فلش هم جا نمیشن. فلش هم حداکثر 512 کیلو جا داره.
ببینید داده ها چقدر هستن بگین شرکت یک میکرو با اون حجم رم براتون بزنه. :mrgreen::0013: البته گرون درمیاد.