聯(lián)系我們
發(fā)送郵箱
主頁(yè) ? 技術(shù)支持 ? 案例展示 ? STM32F407IGT6使用外部SRAM導致死機該如何解決

STM32F407IGT6使用外部SRAM導致死機該如何解決

2019-08-13 16:34:10

該問(wèn)題由某客戶(hù)提出,發(fā)生在 STM32F407IGT6 器件上。據其工程師講述:為了滿(mǎn)足軟件對大容量?jì)却娴男枨?,將軟件中的部分變量從內?SRAM 轉移到片外的 SRAM當中。而這一改變,導致該軟件不能運行,每次復位后,隨即發(fā)生死機。在此之前,對 FSMC 的初化代碼,以及片外SRAM 的讀寫(xiě)均做過(guò)測試,并確認是沒(méi)有問(wèn)題的。其內存分配如下表(一)所示。
sram內存分配表
調研:
 
使用 Keil MDK 創(chuàng )建工程,測試其所用的FSMC 初始化代碼,結果表明該段代碼正確無(wú)誤。修改內存分配,刪除其中對外部 SRAM 的分配,如下表(三)所示。重新對其軟件編譯運行。結果表明,在這種內存分配方式下,其軟件可以正常運行。修改其軟件代碼,在初始化FSMC 之后加入對外部 SRAM 的讀寫(xiě)測試,重新編譯運行。測試結果表明,此時(shí)對外部SRAM 的讀寫(xiě)也是正確的。查找其軟件對 FSMC 初始化函數調用的位置,發(fā)現該函數是在該軟件的main()函數中調用的。修改代碼,將該函數的調用位置移至 SystemInit()中,并且恢復原來(lái)的內存分配,如上表(一)。重新編譯并運行,此時(shí)該軟件正確運行。
sram內存分配表2

結論:
 
軟件中對 FSMC 做初始化的位置不對,導致程序在訪(fǎng)問(wèn)外部SRAM時(shí) FSMC 還未被初始化,從而造成總線(xiàn)訪(fǎng)問(wèn)出錯,從而產(chǎn)生 HardFault 中斷,最終程序停留在 HardFault中斷服務(wù)程序中,使得程序對外表現出“死機”的現象。
 
處理:
 
一般來(lái)說(shuō), main()函數是 C 語(yǔ)言的入口,C 語(yǔ)言代碼從這里開(kāi)始執行。然而,具體結合到STM32的應用工程,這并不是工程運行的起點(diǎn)。往往在main()函數執行之前,還有一段啟動(dòng)初始化代碼,為硬件做最基本的時(shí)鐘和中斷矢量配置等;為 C 語(yǔ)言代碼的執行創(chuàng )建一個(gè)運行環(huán)境。這里主要涉及兩個(gè)函數,即SystemInit()和__main()。其中__main()是編譯系統提供的一個(gè)函數,負責完成C庫函數和應用程序執行環(huán)境的初始化,之后跳轉到用戶(hù)main()。在__main()做 C 環(huán)境初始化的時(shí)候,會(huì )訪(fǎng)問(wèn)相關(guān)的存貯器。如果此時(shí),相應的存貯器不可用,就會(huì )出現錯誤。在STM32啟動(dòng)的文件里,SystemInit()函數先于__main()的執行。所以,如果在SystemInit()函數里先對 FSMC 的做好初始化就可以避免后面__main()運行時(shí)訪(fǎng)問(wèn)相關(guān)內存出現異常的問(wèn)題。
 
修改代碼,將對 FMSC 初始化函數的調用放在SystemInit()函數中,以保證在 C 環(huán)境初始化之前完成對FMSC 的初始化。

本文關(guān)鍵詞:SRAM


相關(guān)文章:VTI508NL16低功耗SRAM芯片


深圳市英尚微電子有限公司是一家專(zhuān)業(yè)的靜態(tài)隨機記憶體產(chǎn)品及方案提供商,十年來(lái)專(zhuān)業(yè)致力代理分銷(xiāo)存儲芯片IC, SRAM、MRAM、pSRAM、 FLASH芯片、SDRAM(DDR1/DDR2/DDR3)等,為客人提供性?xún)r(jià)比更高的產(chǎn)品及方案。
英尚微電子中國區指定的授權代理:VTI、NETSOL、JSC濟州半導體(EMLSI)、Everspin 、IPSILOG、LYONTEK、ISSI、CYPRESS、ISOCOME、PARAGON、SINOCHIP、UNIIC; 著(zhù)名半導體品牌的專(zhuān)業(yè)分銷(xiāo)商  如:RAMTROM、ETRON、FUJITSU、LYONTEK、WILLSEMI。
 

?更多資訊關(guān)注SRAMSUN.   www.talchessmemorial.com         0755-66658299
展開(kāi)
久久久网伊人_国产午夜精品一区二区三_www女自慰被?喷水噜_男人把大JI巴放进女人视频涩爱