如何爲Art-pi的內部flash設置讀保護。html
通常在項目開完畢以後,最終燒錄固件的時候都會將stm32設置爲讀保護。過去一直使用STM32 ST-LINK Utility配合st-link來完成這個步驟。此次用到art-pi上,不靈了。app
具體表現以下:
完成固件下載
工具
配置option bytes,結果彈出設置失敗
spa
原來art-pi上使用的是Stm32H7系列的芯片,屬於比較新的系列了。STM32 ST-LINK Utility算是比較久遠的一款下載工具了,如今要與時俱進,使用新的工具了,就是STM32CubeProgrammer了。看看這界面,一看就是高大上。
htm
具體怎麼弄呢?
雙擊打開工具以後,能夠看到右上角有選擇鏈接的硬件設備,這個工具很強大,能夠支持多種硬件燒錄設備,這裏選研究st-link。因此選擇了st-link而後點擊connect。
rem
因爲剛纔燒錄以後設置讀保護是失敗的,因此此時芯片是處於沒有保護的狀態,所以鏈接成功以後會自動讀取到內部flash的內容。
get
點擊左上角的按鈕,能夠打開菜單欄
flash
選擇option bytes,而後能夠看到當前的狀態字是0xAA,並且右邊還有詳細的解釋,要設置成level1的讀保護,須要寫入BB。
it
這裏直接點擊小三角彈出下拉菜單,而後選擇BB,而後點擊apply
io
彈出寫入成功,點擊肯定退出。注意這裏退出以後,按電路板上的reset按鍵,是不會產生復位的,要直接給目標板斷電重啓,這一步很是重要。
板子重啓以後,咱們再次鏈接板子,就會彈出數據讀取失敗的對話框,說明已經讀保護了。
此時若是要解開讀保護,要如何操做呢?很簡單,只要重複剛纔的OB選項的操做就能夠了。只不過此次把值改爲AA,就能夠了。
可是解除讀保護,會將內部flash清除,此時讀出的都是FF。這樣就有效防止直接經過SWD口來拷貝bin固件了。
那若是是批量生產過程當中,每個板子都這麼先燒錄後加鎖,操做步驟太複雜了,有沒有簡便的方法呢?有的,直接用生產模式,自動燒錄。
點擊菜單欄,而後選擇擦除和燒錄選項
而後先選擇要燒錄的固件,而後勾選全片擦除,下載文件,並在最後的option bytes commands中填寫「-ob rdp=0xBB」,最後點擊開始自動燒錄
當看到log中顯示這一句的時候,說明已經燒錄成功,此時就能夠拔掉板子上的swd口連線。插入第二塊版,程序會自動燒錄第二塊版,不用手工點擊。
若是要退出自動燒錄模式,只要點擊stop就能夠了。
這個工具還有其餘功能,之後用到了再慢慢研究。