2016-11-08 33 views
0

我想阻止我的代碼被讀出,並且我在互聯網上看到STM32具有這個功能。然而,我沒有找到一些示例代碼,也不知道如何使用它?STM32L0讀出保護示例代碼?

  • 在調用我的主代碼之前,我應該在讀取保護函數READ_PROTECTION()的開頭嗎?或
  • 我應該在調用我的主代碼後將它放在最後?

一個示例代碼對我來說真的很有幫助。

謝謝。

+1

[本ST應用筆記](http://www.st.com/content/ccc/resource/technical/document/application_note/89/12/c5/e2/0d/0e/45/7f/DM00186528。 pdf/files/DM00186528.pdf/jcr:content/translations/en.DM00186528.pdf)描述了您所需要的全部內容。 – LPs

+0

嗨@LPs,讀出保護級別0/1/2似乎很適合我所需要的,我已經看到內置函數像_FLASH_OB_RDPConfig(OB_RDP_Level_1); _它執行讀出保護,但unfornately我無法找到一個好例子用於使用此功能。 – bienle

+0

因此,您正在尋找現成的解決方案。你喜歡輕鬆贏... ...)你應該嘗試提高你的技能,理解這些功能的用法,並嘗試自己寫點東西。如有問題,您可以在SO上發佈問題。 – LPs

回答

1

STM32閃存由兩個存儲區組成:第一個讀寫保護,第二個讀保護。請參閱this以供參考。您只需編寫適當的鏈接器腳本,將代碼加載到適當的內存區域並設置適當的選項字節。如何做到這一點看here。以及如何包含鏈接器文件eclipse見here

EDT:Here是示例如何直接從在您的文章中提到的功能代碼中設置選項字節(見clive1後)這些功能似乎是mbed庫(見this供參考)的一部分。該代碼需要從main函數中執行。 Here是關於從控制器代碼中選擇字節編程的一些有用信息。

+0

嗨@nopasara,我對上面提供的鏈接進行了快速瀏覽,由於我對Linker腳本沒有很好的基礎知識,所以對我來說很難理解。 我在互聯網上搜索過,並且STM32中有一些內置函數實現讀取保護級別0/1/2,如_FLASH_OB_RDPConfig(OB_RDP_Level_1); _。這個功能似乎足以滿足我需要的東西,不幸的是沒有例子如何使用它們。 – bienle

1

您不需要將代碼添加到代碼中,因爲代碼可能會更改,或者您可能會錯誤地計算扇區爲不可讀的。閃爍代碼後,可以使用ST Link utility選擇閃存的特定部分,並在代碼中設置讀出保護。

+0

OP如何使用STM32 ST-Link Utility來做到這一點? –

+0

ST鏈接實用程序爲您提供GUI以配置不同的保護。通過ST鏈接實用程序,您可以選擇閃存的每個扇區併爲其分配不同的保護。像部門1:沒有保護,部門2:1級保護等 –

1

您可以通過代碼啓用和禁用讀出保護。 但我建議使用軟件「stm32 Flash loader」或「ST Link utility」來代替。 請參閱教程here。 要禁用讀取保護只是整體擦除閃存。