日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32f4 RAM中运行程序 读保护设置

發布時間:2025/7/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32f4 RAM中运行程序 读保护设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主要是為了在RAM中運行程序來解除讀保護的。沒想到ST-Link Utility 就直接可以。

ST-Link Utility:target-->options bytes-->就可以看到讀保護。
解除讀保護,選擇 Level 0. 其他都不變(WDG_SW,nRST_STDBY,nRST_STOP都按照默認的勾上)
然后點擊Apply即可。

讀保護:

1: while(1) 2: { 3: PD13_Toggle; 4: Delay(0x7FFFF); 5: //按鍵按下,切換 是否 讀保護 6: if(is_key_toggle) 7: { 8: if (FLASH_OB_GetRDP() != SET)// 9: { 10: printf("start RDP\r\n"); 11: FLASH_OB_Unlock(); 12: FLASH_OB_RDPConfig(OB_RDP_Level_1); 13: if(FLASH_COMPLETE != FLASH_OB_Launch()) 14: printf("RDP failed\r\n"); 15: else 16: printf("RDP succeed\r\n"); 17: FLASH_OB_Lock(); 18: if(SET==FLASH_OB_GetRDP()) 19: printf("RDP OK\r\n"); 20: else 21: printf("RDP KO\r\n"); 22: } 23: else 24: { 25: printf("start remove RDP\r\n"); 26: FLASH_OB_Unlock(); 27: FLASH_OB_RDPConfig(OB_RDP_Level_0); 28: /* Start the Option Bytes programming process */ 29: if (FLASH_OB_Launch() != FLASH_COMPLETE) 30: printf("remove RDP failed\r\n"); 31: else 32: printf("remove RDP succeed\r\n"); 33: FLASH_OB_Lock(); 34: if(RESET==FLASH_OB_GetRDP()) 35: printf("remove RDP OK\r\n"); 36: else 37: printf("remove RDP KO\r\n"); 38: } 39: is_key_toggle=0; 40: } 41: }

MDK下載到flash后,重新上電(很重要),然后按鍵,就可以RDP。再按一次,就可以Remove RDP.

?

在RAM中運行程序:搜索到一篇《在內嵌RAM中運行程序》,照著做的,有些修改。

隨便建個RAM.ini

?

1: FUNC void Setup (void) { 2: SP = _RDWORD(0x20000000); // Setup Stack Pointer 3: PC = _RDWORD(0x20000004); // Setup Program Counter 4: _WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register 5: } 6: 7: LOAD %L INCREMENTAL 8: Setup(); // Setup for Running 9: g, main

哈哈,其中 %L? 就是你的工程.axf.? 很多其他做法都是帶個路徑/project.axf。

而%L要簡單很多。

LOAD %L INCREMENTAL

g,main 相當于MDK中的:

所以要么RAM.ini中有這兩句,要么把這里兩個勾 勾上。

?

F4,128kB,就分成 64KB+64KB吧。

為了能夠RAM調試中響應中斷。要加上:VECT_TAB_RAM. 我一開始就是沒加,一直不能進中斷。

還要注意這個地方:

似乎右邊的都要勾上才行。

網上有些說法錯的,比如在RAM中運行就只能在調試模式下,不能點擊那個Load按鈕下載。

一切都正常的情況下,應該是這個結果:

地址 0x2000….開頭

能夠設斷點。(RAM的這個Target和原來的那個要設置不同的.o文件位置)

Good Luck.

轉載于:https://www.cnblogs.com/tofixer/p/3685162.html

總結

以上是生活随笔為你收集整理的stm32f4 RAM中运行程序 读保护设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。