-
開啟artery的AN0026應用筆記(AN0026_Extending_SRAM_in_User's_Program_ZH_V2.0.0.pdf),可以看到AT32的出廠預設的SRAM的大小為96K位元組,可以修改EOPB0擴充套件到224K位元組。EOPB0的暫存器設定如下,根據下方可知需要將EOPB0的0-7位設定位0xFE。
-
但是在設定EOPB0之後,必須執行系統復位的命令,新的EOPB0數值才可以生效並且真正的設定到所選的SRAM大小,就需要做如下操作:
-
在
main
檔案中建立extend_sram
函式void extend_sram(void) { // check if RAM has been set to 224K, if not, change EOPB0 if(((USD->eopb0) & 0xFF) != 0xFE) { /* Unlock Option Bytes Program Erase controller */ flash_unlock(); /* Erase Option Bytes */ flash_user_system_data_erase(); /* Change SRAM size to 224KB */ flash_user_system_data_program((uint32_t)&USD->eopb0,0xFE); NVIC_SystemReset(); } }
-
修改
startup_at32f403a_407.s
啟動檔案,在復位之前執行extend_sram
函式:; Reset handler 需要修改Reset_Handler Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main IMPORT SystemInit ; 從此項以下開始新增 IMPORT extend_sram MOV32 R0,#0x20001000 MOV SP,R0 LDR R0, =extend_sram BLX R0 MOV32 R0,#0x08000000 LDR SP,[R0] ; 到此項以上結束 LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP
-
之後修改RAM大小:
-
-
注意事項:
- 必須在Reset_Handler的一開頭就去做EOPB0的修改,不要在SystemInit()函式里頭設定,因為 使用者一開始在Keil/IAR等開發環境設定的SRAM範圍,就可能是以擴充後的224K位元組作設定,且 實際用到的SRAM可能超過了預設的96K,此時堆疊(STACK)的指標初始值會被設定到96K之後 的地址,執行SystemInit( )時就會出錯,甚至發生HardFault而造成當機。
- 在呼叫extend_sram()函式前,要將堆疊(STACK)的指標先改到 96K位元組內(例程中是修改到 (0x20001000),避免因STACK的指標初始值被設定到96K之後的地址,而造成extend_SRAM函 數執行時發生錯誤。
-
編譯執行結果:
AT32F403a/407開啟RAM擴充套件,增加RAM到224K位元組
相關文章
- F407在RAM中除錯除錯
- IPUS SQPI PSRAM為STM32微控制器提供RAM擴充套件方案套件
- (7)ram ip使用
- Lost RAM可能的原因
- RAM演算法原理演算法
- 【IDL】 DICOM擴充套件模組套件
- lnmp 環境開啟 fileinfo php 擴充套件LNMPPHP套件
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 使用udev擴充套件ASM磁碟組dev套件ASM
- 如何開啟寶塔皮膚php擴充套件PHP套件
- Laravel 遷移增加表備註擴充套件方法Laravel套件
- 開發php擴充套件PHP套件
- 位元組跳動遊戲版圖再擴充套件 入股仙境傳說CP遊戲套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- chrome擴充套件程式開發Chrome套件
- LLM 擴充套件開發工具套件
- Go開發PHP擴充套件GoPHP套件
- 為域名管理進行RAM授權
- Vivado使用技巧(27):RAM編寫技巧
- 向量檢索服務RAM授權
- RAM是記憶體還是外存記憶體
- 擴充套件工具套件
- Sanic 擴充套件套件
- Mybatis擴充套件MyBatis套件
- SpringMVC 擴充套件SpringMVC套件
- ORACLE 擴充套件Oracle套件
- PHP擴充套件開發教程2 – 編寫第一個擴充套件 hello worldPHP套件
- [開發效率]Kotlin之擴充套件Kotlin套件
- burpsuite擴充套件開發之PythonUI套件Python
- Chrome 擴充套件程開發初探Chrome套件
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- 給PHP開啟shmop擴充套件實現共享記憶體PHP套件記憶體
- 【PHP】Mcrypt 擴充套件模組安裝及使用PHP套件
- (PHP7核心剖析-11) 模組擴充套件PHP套件
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP