اطلاعیه

Collapse
No announcement yet.

ذخیره متغیر در حافظه فلش STM32

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : ذخیره متغیر در حافظه فلش STM32

    مقادیر بازگشتی که به خاطر بلنک بودن آدرس هاییه میخونی .

    حین پروسه واچ داگ خاموشه دیگه ؟

    راهنمایی تجربی : در سری اس تی ام 32و کاربردهایی که به هر دلیل قراره مستقیما محتویات فلش رو تغییر بدی بهتره به صورت heap کار کنی ... نرم افزارت که احتمالا بوتلودر یا یک زیر برنامه محدود هست رو روی رم لود کن بعد دستکاری هات رو روی فلش اعمال کن ( خوندن و پاک کردن سکتوری هست ... نوشتن هم مجددا سکتوریه ...اگر قراره بخشی از محتویات فلش رو تغییر بدی کل سکتور یا صفحه رو باید بخونی روی رم ذخیره داشته باشی بخشی که قراره مدیفای بشه رو بعد از تغییر دوباره به شکل سکتوری باید رایت کنی ... در فلش دسترسی مستقیم نداریم .. یعنی شما نمیتونی بافر با 3 تا هالف ورد رو این شکلی روی فلش رایت کنی )

    دیدگاه


      #17
      پاسخ : ذخیره متغیر در حافظه فلش STM32

      بله واچ داگ کانفیگ نشده. با heap کار نکردم تا حالا. ولی طبق منوال st دسترسی به حافظه فلش با آنلاک کردن و پاک کردن صفحه با آدرس مشخص باید امکان پذیر باشه. مو به مو مطابق منوال انجام دادم ولی نمیدونم چرا رایت نمیشه رو پیج 31.

      دیدگاه


        #18
        پاسخ : ذخیره متغیر در حافظه فلش STM32

        یه نگاهی به این اپلیکیشن نوت بنداز ( البته برداشت من اینه که میخوای بجای ایپیرام از فلش استفاده کنی ... اگر هدفتون پروگرام کردن کلی و بوتلودر و آپگرید فریمور هست قضیه یه مقدار فرق میکنه )

        جدیدترین ویرایش توسط Amie.s.m; ۱۶:۵۱ ۱۴۰۱/۰۳/۰۷.

        دیدگاه


          #19
          پاسخ : ذخیره متغیر در حافظه فلش STM32

          بله دقیقا برای همین کاربرد میخوام و این اپلیکیشن نوت رو هم خوندم. (حالا بماند که آیا تصیم درستی هست که به جای استفاده از ایپیرام خارجی از حافظه فلش خود میکرو استفاده کنم ؟!!) من اومدم از کتابخانه خود ST برای حافظه فلش "stm32f0xx_flash.h" و بدون مشکل همون سه تا هاف ورد قبلی روی آدرس مشخص شده رایت شدند. ولی مشکل کتابخانه خودم رو هنوز متوجه نشدم که فکر میکنم ربط به Option Byte ها و پروتکشن ها داشته باشه که اگر اینطور باشه واقعا مطالب منوال شرکت ناقص هست.

          دیدگاه


            #20
            پاسخ : ذخیره متغیر در حافظه فلش STM32

            اگر قرار بر استفاده مداوم باشه همونطور که در اسناد فنی هم ذکر شده استفاده از فلش مموری بجای ایپیرام اصلا توصیه نمیشه ( محدودیت تعداد سیکلهای پاک کردن و رایت به حدود ۱۰ هزار سیکل ، ضمن اینکه باید wearing یا استهلاک سلولهای فلش رو هم در نظر گرفت و جایی ذخیره کرد ، حداقل یک یا دو سکتور فلش برای اینکار کلا غیر قابل استفاده عمومی میشن ولو اینکه نیاز شما ذخیره چند بایت باشه باز یک پیج ۱ کیلوبایتی و در میکروهای رده بالاتر ۲ کیلوبایتی از دسترس خارج میشه )

            برای کاربردهای خیلی محدود ( از نظر دفعات تغییر محتوا ... ما معمولا از این روش برای فکتوری ریست استفاده میکنیم ) و کاربردهایی که حساسیت به زمان اجرا ندارن ممکنه منطقی باشه .

            شمای توی کتابخونه ات حین رایت یک کیلوبایت رایت کن احتمالا مشکل رفع میشه .
            اگر میکرو rtc داره بهترین روش استفاده از رم دامین rtc با باتری یا خازن بک آپه که در اس تی ها مینیموم ۲۰ بایت و ماکزیمم تا چند کیلوبایت برای رده بالاها موجوده . میلیاردها بار هم دیتا رو عوض کنید هیچ مشکلی بوجود نمیاد .
            برای سری های بدون rtc در مجموع یک ایپیرام i2c اکسترنال بسیار مطمئن تر ، راحت تر و سریع تر مشکل رو رفع میکنه ( قیمتی هم نداره )

            دیدگاه


              #21
              پاسخ : ذخیره متغیر در حافظه فلش STM32

              ممنون از توضیحات مفیدتون و وقتی که میزارید. مشکل اصلی کتابخانه بالا رو پیدا کردم و خجالت میکشم بگم.مشکل از تابع آنلاک و حلقه while مربوط به بیزی فلگ بود که من کل دستورات رو انداخته بودم توی حلقه while. . بعد از اینهمه وقتی که گذروندم با انواع میکروها واقعا ناامید کننده هست.
              و در رابطه با محصولی هم که قراره اییپرام روی اون استفاده بشه باید عرض کنم که ما تعداد دفعات رید رایت اییپرام بسیار کمی خواهیم داشت. شاید سالی یکبار بیشتر این اتفاق نیافته. چیزی که اینجا بسیار اهمیت داره ، پایداری این دیتا در این حافظه هست. قبلا روی اییپرام xmega توسط مقداردهی به رجیستر BOD سطح حفاظت خوبی ایجاد میکردیم.(هرچند باز هم فیدبک از پاک شدن ناگهانی اییپرام داخلی میکرو داشتیم.) ولی هنوز توی ST به اون قسمت کار نرسیدم. برام بسیار مهم هست که دیتایی که نوشته میشه تحت شرایط سخت و پر نویز و صنعتی حفظ بشه چون عملکرد کلی برنامه به این دیتاها وابسته خواهد بود.

              دیدگاه

              لطفا صبر کنید...
              X