اطلاعیه

Collapse
No announcement yet.

قفل کردن حافظه فلش میکرو stm32

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

    قفل کردن حافظه فلش میکرو stm32

    باسلام
    چگونه می توان حافظه فلش میکرو های STM32 را قفل نمود.یا به عبارتی READ PROTECT کرد.


    این کار در میکرو های AVR وPIC به راحتی در هنگام پروگرم یا در محیط کامپایلر قابل انجام است .
    با فرض استفاده از کامپایلر KEIL و میکرو STM32F103C8 چگونه می توان این کار را انجام داد؟

    #2
    پاسخ : قفل کردن حافظه فلش میکرو stm32

    نوشته اصلی توسط ramez.8631 نمایش پست ها
    باسلام
    چگونه می توان حافظه فلش میکرو های STM32 را قفل نمود.یا به عبارتی READ PROTECT کرد.


    این کار در میکرو های AVR وPIC به راحتی در هنگام پروگرم یا در محیط کامپایلر قابل انجام است .
    با فرض استفاده از کامپایلر KEIL و میکرو STM32F103C8 چگونه می توان این کار را انجام داد؟
    سلام
    اگه میخواهیی از طریق کد، این کار رو انجام بدی، باید Option Byte ها رو مقداردهی کنی!
    وگرنه:
    بسته به پروگرامرت باید از برنامه خاص اون پروگرامر استفاده کنی و گزینه Read Protection رو فعال کنی!
    مثلا برای ST-Link V2 باید از برنامه stm32 st-link utility استفاده کنی!
    و برای Wiggler از برنامه H-Jtag استفاده کنی!
    برای J-link هم برنامه اختصاصی خودش رو داره که من استفاده نکردم!
    بدون پروگرامر (از طریق پورت کام و Boot loader) هم با برنامه FLASH LOADER DEMOSTRATOR میتونی این کار رو انجام بدی!!
    ...
    البته شک میدونم از طریق دیباگر کامپایلر بشه این کار رو کرد! چون اون موقع با قفل شدن حافظه فلش، دسترسی دیباگر به برنامه قطع میشه!!
    ...
    ضمنن پس از فعال کردن Read Protection برای فعال شدن این قابلیت باید حتما میکرو رو روشن و خاموش کنی! ریست معمولی جواب نمیده!
    ◙◙◙◙◙ میخوام به دوستان یه کتاب معرفی کنم! وقت کردید، بخونید - اسمش هست قرآن، سال نشر 10، نویسنده: خدا . ◙◙◙◙◙

    دیدگاه


      #3
      پاسخ : قفل کردن حافظه فلش میکرو stm32

      نوشته اصلی توسط ramez.8631 نمایش پست ها
      باسلام
      چگونه می توان حافظه فلش میکرو های STM32 را قفل نمود.یا به عبارتی READ PROTECT کرد.


      این کار در میکرو های AVR وPIC به راحتی در هنگام پروگرم یا در محیط کامپایلر قابل انجام است .
      با فرض استفاده از کامپایلر KEIL و میکرو STM32F103C8 چگونه می توان این کار را انجام داد؟
      از این نرم افزارها میتونید استفاده کنید :

      ST Visual programmer که جزو بسته STToolset برای میکروکنترلرهای STM8 و ST7 ارایه میشه ولی برای STM32 ها هم کار میکنه.
      STCubeProgrammer که ترجیحا از همین استفاده کنید. امکان لود کردن برنامه با استفاده از بوت لودرهای سریال و USB هم فراهم میکنه.

      توی این نرم افزارها کافیه برید تو بخش option byte ها و گزینه Readout protection رو با توجه به نیاز تغییر بدید
      Si vis pacem, para bellum

      دیدگاه


        #4
        پاسخ : قفل کردن حافظه فلش میکرو stm32

        خیلی ممنونم از پاسخ شما.
        آیا میشه با کد نویسی مقدار option byte را طوری تغییر داد که read protect فعال بشه؟
        یعنی مستقیم از محیط keil به صورت read protect پروگرم بشه.اینجوری برای پروگرم کردن تیراژ بالا کار راحت تر خواهد بود
        اگر کد آماده دارید اینجا قرار بدید ک عالی میشه
        باسپاس

        دیدگاه


          #5
          پاسخ : قفل کردن حافظه فلش میکرو stm32

          نوشته اصلی توسط ramez.8631 نمایش پست ها
          خیلی ممنونم از پاسخ شما.
          آیا میشه با کد نویسی مقدار option byte را طوری تغییر داد که read protect فعال بشه؟
          یعنی مستقیم از محیط keil به صورت read protect پروگرم بشه.اینجوری برای پروگرم کردن تیراژ بالا کار راحت تر خواهد بود
          اگر کد آماده دارید اینجا قرار بدید ک عالی میشه
          باسپاس
          بله این امکان هست. مراجعه کنید به راهنمای PM0075. کافیه با چند دستور قفل نوشتن روی فلش باز بشه، تغییرات اعمال بشن و بعد ریست بشه. بهتره همیشه در ابتدا چک بشه که اگر آپشن بایت قفل نیست اینکارو انجام بده که هر دفعه حتا بعد از قفل شدن، هر موقه شرو به کار میکنه دوباره قفل نکنه.
          Si vis pacem, para bellum

          دیدگاه


            #6
            پاسخ : قفل کردن حافظه فلش میکرو stm32

            اگر می‌خواهید محصول خود را که مبنی بر میکروکنترلر است، به بازار یا به هر دلیلی به افرادی، ارائه دهید و در عین حال نگران شکستن قفل میکروکنترلر برد هستید...

            شاید بدرد بخوره

            دیدگاه


              #7
              پاسخ : قفل کردن حافظه فلش میکرو stm32

              سلام خدمت دوستان
              یک تابع پیدا کردم که به نظرم جواب میده
              وقتی state=1 باشه read protect میشه.
              تست درستی سنجی:
              ابتدا از طریق keil میکرو را پروگرم کردم.سپس بابرنامه st-link utility میکرو را read کردم.اروری مبنی بر اینکه حافظه read protect است نداد.مقادیر read شده را روی کامپیوتر ذخیره کردم.میکرو را erase کردم.درنهایت فایل ذخیره شده را دوباره روی میکرو پروگرم کردم.
              نتیجه:میکرو هیچ کاری انجام نمی داد انگار هیچ برنامه ای ندارد.
              دوستان بنظر شما این تست درستی است؟
              اگر امکان تست دارید شماهم تست کنید .سپاس



              #include <stdbool.h>



              bool SetFlashReadProtection(bool state)
              {
              FLASH_OBProgramInitTypeDef OptionsBytesStruct = {0};
              HAL_FLASHEx_OBGetConfig(&OptionsBytesStruct);

              if(state == true)
              {
              if(OptionsBytesStruct.RDPLevel == OB_RDP_LEVEL_0)
              {
              OptionsBytesStruct.OptionType = OPTIONBYTE_RDP;
              OptionsBytesStruct.RDPLevel = OB_RDP_LEVEL_1;

              HAL_FLASH_OB_Unlock();

              if(HAL_FLASHEx_OBProgram(&OptionsBytesStruct) != HAL_OK)
              {
              HAL_FLASH_OB_Lock();

              return false;
              }

              HAL_FLASH_OB_Lock();
              }
              }
              else
              {
              if(OptionsBytesStruct.RDPLevel == OB_RDP_LEVEL_1)
              {
              OptionsBytesStruct.OptionType = OPTIONBYTE_RDP;
              OptionsBytesStruct.RDPLevel = OB_RDP_LEVEL_0;

              HAL_FLASH_OB_Unlock();

              if(HAL_FLASHEx_OBProgram(&OptionsBytesStruct) != HAL_OK)
              {
              HAL_FLASH_OB_Lock();

              return false;
              }

              HAL_FLASH_OB_Lock();
              }
              }

              return true;
              }



              جدیدترین ویرایش توسط ramez.8631; ۰۱:۰۸ ۱۳۹۹/۰۱/۰۷.

              دیدگاه


                #8
                پاسخ : قفل کردن حافظه فلش میکرو stm32

                نوشته اصلی توسط ramez.8631 نمایش پست ها
                سلام خدمت دوستان
                یک تابع پیدا کردم که به نظرم جواب میده
                وقتی state=1 باشه read protect میشه.
                تست درستی سنجی:
                ابتدا از طریق keil میکرو را پروگرم کردم.سپس بابرنامه st-link utility میکرو را read کردم.اروری مبنی بر اینکه حافظه read protect است نداد.مقادیر read شده را روی کامپیوتر ذخیره کردم.میکرو را erase کردم.درنهایت فایل ذخیره شده را دوباره روی میکرو پروگرم کردم.
                نتیجه:میکرو هیچ کاری انجام نمی داد انگار هیچ برنامه ای ندارد.
                دوستان بنظر شما این تست درستی است؟
                اگر امکان تست دارید شماهم تست کنید .سپاس



                #include <stdbool.h>



                bool SetFlashReadProtection(bool state)
                {
                FLASH_OBProgramInitTypeDef OptionsBytesStruct = {0};
                HAL_FLASHEx_OBGetConfig(&OptionsBytesStruct);

                if(state == true)
                {
                if(OptionsBytesStruct.RDPLevel == OB_RDP_LEVEL_0)
                {
                OptionsBytesStruct.OptionType = OPTIONBYTE_RDP;
                OptionsBytesStruct.RDPLevel = OB_RDP_LEVEL_1;

                HAL_FLASH_OB_Unlock();

                if(HAL_FLASHEx_OBProgram(&OptionsBytesStruct) != HAL_OK)
                {
                HAL_FLASH_OB_Lock();

                return false;
                }

                HAL_FLASH_OB_Lock();
                }
                }
                else
                {
                if(OptionsBytesStruct.RDPLevel == OB_RDP_LEVEL_1)
                {
                OptionsBytesStruct.OptionType = OPTIONBYTE_RDP;
                OptionsBytesStruct.RDPLevel = OB_RDP_LEVEL_0;

                HAL_FLASH_OB_Unlock();

                if(HAL_FLASHEx_OBProgram(&OptionsBytesStruct) != HAL_OK)
                {
                HAL_FLASH_OB_Lock();

                return false;
                }

                HAL_FLASH_OB_Lock();
                }
                }

                return true;
                }



                قبلا با میکروهای مختلف عمل حفاظت و بعد خوندنش رو انجام دادم همیشه برای تست های من همین بوده که یکسری اطلاعات بدرد نخور دانلود میشه و در واقع میکرو قفل شده
                اي خدا ، من بايد از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از اين راه طعنه زنند. بايد به آن سنگدلاني که علم را بهانه کرده و به ديگران فخر ميآ*فروشند، ثابت کنم که خاک پاي من هم نخواهند شد. بايد همه آن تيره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترين و افتاده ترين مرد روي زمين باشم.
                شهيد دکتر مصطفي چمران
                اللهم صل علي محمد و ال محمد و عجل فرجهم
                ; C is not for children

                دیدگاه


                  #9
                  پاسخ : قفل کردن حافظه فلش میکرو stm32

                  نوشته اصلی توسط mahdi89 نمایش پست ها
                  قبلا با میکروهای مختلف عمل حفاظت و بعد خوندنش رو انجام دادم همیشه برای تست های من همین بوده که یکسری اطلاعات بدرد نخور دانلود میشه و در واقع میکرو قفل شده
                  سلام به دوستان
                  الان اگه read protect رو فعال کنم رو میکرو های stm32f1 آیا میشه مجدد پروگرامش کرد یا کلا نمیشه ؟

                  دیدگاه


                    #10
                    پاسخ : قفل کردن حافظه فلش میکرو stm32

                    نوشته اصلی توسط Fake نمایش پست ها
                    سلام به دوستان
                    الان اگه read protect رو فعال کنم رو میکرو های stm32f1 آیا میشه مجدد پروگرامش کرد یا کلا نمیشه ؟
                    فکر کنم اگه فعالش کنید دیگه نشه پروگرامش کرد
                    بازم دوستان دیگه بهتر میدونن من مطمئن نیستم

                    دیدگاه


                      #11
                      پاسخ : قفل کردن حافظه فلش میکرو stm32

                      نوشته اصلی توسط Fake نمایش پست ها
                      سلام به دوستان
                      الان اگه read protect رو فعال کنم رو میکرو های stm32f1 آیا میشه مجدد پروگرامش کرد یا کلا نمیشه ؟
                      توی سری میکروهای stm تا جایی که من دیدم سه حالت مختلف برای قفل وجود داره که اگر با نرم افزار خود شرکت st که اسمش stm32cubeprog هست به میکرو وصل بشین این سه حالت رو با A , B, C مشخص کرده:
                      A میکرو آزاد
                      B میکرو قابلیت خوندنش قفل میشه اما میشه قفلش رو باز کرد. پاکش کرد و بعد قفلش رو باز کرد(اگر هم مستقیم قفلش رو باز کنید خودش اتوماتیک میکرو رو پاک میکنه)
                      C میکرو کلا قفل میشه و دیگه نمیشه حتی پاکش کرد یا دوباره پروگرامش کرد.
                      اي خدا ، من بايد از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از اين راه طعنه زنند. بايد به آن سنگدلاني که علم را بهانه کرده و به ديگران فخر ميآ*فروشند، ثابت کنم که خاک پاي من هم نخواهند شد. بايد همه آن تيره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترين و افتاده ترين مرد روي زمين باشم.
                      شهيد دکتر مصطفي چمران
                      اللهم صل علي محمد و ال محمد و عجل فرجهم
                      ; C is not for children

                      دیدگاه


                        #12
                        پاسخ : قفل کردن حافظه فلش میکرو stm32

                        به نظرم درگیر کد نویسی نشید راحت از برنامه st_link استفاده کنید تنظیمات اضافه هم میتونید باهاش انجام بدید

                        دیدگاه

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