襄阳市三利轮胎循环利用有限公司

发送邮箱
主页 › 手艺撑持案例展示 › STM32F407IGT6使用内部SRAM招致死机该怎样解决

手艺撑持

STM32F407IGT6使用内部SRAM招致死机该怎样解决

2020-08-13 16:34:10

该题目由某客户提出,发作在 STM32F407IGT6 器件上。据其工程师讲述:为了知足软件对大容量内存的需求,将软件中的部门变量从内部 SRAM 转移到片外的 SRAM傍边。而这一改动,招致该软件不克不及运转,每次复位后,随即发作死机。在此以前,对 FSMC 的初化代码,以及片外SRAM 的读写均做过测试,并确认是没有题目的。其内存调配如下表(一)所示。
sram内存调配表
调研:
 
使用 Keil MDK 创立工程,测试其所用的FSMC 初始化代码,结果解释该段代码准确无误。修改内存调配,删除此中对内部 SRAM 的调配,如下表(三)所示。从头对其软件编译运转。结果解释,在这类内存调配方法下,其软件能够正常运转。修改其软件代码,在初始化FSMC 以后参加对内部 SRAM 的读写测试,从头编译运转。测试结果解释,此时对内部SRAM 的读写也是准确的。查找其软件对 FSMC 初始化函数挪用的地位,发明该函数是在该软件的main()函数中挪用的。修改代码,将该函数的挪用地位移至 SystemInit()中,而且恢回复复兴来的内存调配,如上表(一)。从头编译并运转,此时该软件准确运转。
sram内存调配表2

论断:
 
软件中对 FSMC 做初始化的地位不合错误,招致程序在接见内部SRAM时 FSMC 还未被初始化,从而造成总线接见堕落,从而发生 HardFault 中止,终极程序停留在 HardFault中止效劳程序中,使得程序对外施展阐发出“死机”的征象。
 
处置惩罚:
 
普通来讲, main()函数是 C 言语的进口,C 言语代码从这里开端施行。然而,详细结合到STM32的运用工程,这其实不是工程运转的出发点。每每在main()函数施行以前,另有一段启动初始化代码,为硬件做最基本的时钟和中止矢量设置等;为 C 言语代码的施行创立一个运转环境。这里次要触及两个函数,即SystemInit()和__main()。此中__main()是编译体系提供的一个函数,担任实现C库函数和运用程序施行环境的初始化,以后跳转到用户main()。在__main()做 C 环境初始化的时分,会接见相关的存贮器。假如此时,相应的存贮器不成用,就会呈现错误。在STM32启动的文件里,SystemInit()函数先于__main()的施行。以是,假如在SystemInit()函数里先对 FSMC 的做好初始化就能够避免前面__main()运转时接见相关内存呈现异常的题目。
 
修改代码,将对 FMSC 初始化函数的挪用放在SystemInit()函数中,以保障在 C 环境初始化以前实现对FMSC 的初始化。

本文关头词:SRAM


襄阳市三利轮胎循环利用有限公司相关的文章:VTI508NL16低功耗SRAM芯片


深圳市英尚微电子有限公司是一家业余的静态随机影象体产物及计划提供商,十年来业余致力代办署理分销存储芯片IC, SRAM、MRAM、pSRAM、 FLASH芯片、SDRAM(DDR1/DDR2/DDR3)等,为客人提供性价比更高的产物及计划。
英尚微电子中国区指定的受权代办署理:VTI、NETSOL、JSC济州半导体(EMLSI)、Everspin 、IPSILOG、LYONTEK、ISSI、CYPRESS、ISOCOME、PARAGON、SINOCHIP、UNIIC; 有名半导体品牌的业余分销商  如:RAMTROM、ETRON、FUJITSU、LYONTEK、WILLSEMI。
 

​更多资讯存眷SRAMSUN.   slltfx.com         0755-66658299
睁开
广州致旅汽车租赁服务有限公司 大连绿智节能科技有限公司 营口华东镁质材料有限公司 玉田县杨家板桥镇绿农塑料制品 任丘市全惠利金属制品厂 可以解忧个人网 保定市清苑区和盛苗圃场 上海中城卫保安服务集团有限公司 深圳市弘诚海玻璃有限公司 安平县百鹏金属丝网制品有限公司