搜索
bottom↓
回复: 7

【STM32,FLASH 模拟ROM】,覆盖关键代码段了!!!....进来看看吧,附解决方案~~~~~~~

[复制链接]

出0入0汤圆

发表于 2011-11-22 10:02:56 | 显示全部楼层 |阅读模式
STM32 c8t6,  64Kflash,使用官方例程、2页1K的FLASH模拟EEROM,储存40个关键变量

页起始位置在 F000 (61K处),页大小0x 400(1K)

之前用得好好的,随着程序的增加到了57K,偶尔在存储变量时会出现完全死机,程序死掉,而且重新上电、按复位键也无法回到正常工作状态(估计是代码段被覆盖了)



(原文件名:未命名.jpg)



如上图,把FLASH页地址改到 E800 (59K处),发现问题解决,完全能正常工作

难道是编译器在61K-64K位置存放了什么代码么?在哪里看得出是否覆盖到了呢?~~

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-11-22 10:30:14 | 显示全部楼层
换了个办法,应该更保险点:

1.在project设置里,将IROM段设置为0x8000000 长度0xF7FF(63K)

2.在eerom.h配置里,将rom初始位置设置为 F800 :
#define EEPROM_START_ADDRESS    ((u32)0x0800F800)


这样编译出来的代码,就不会和模拟rom重合了

不知大虾有没有话要说?请指点一二

出0入0汤圆

发表于 2011-11-22 11:12:26 | 显示全部楼层
回复【1楼】AlienHit
换了个办法,应该更保险点:
1.在project设置里,将irom段设置为0x8000000 长度0xf7ff(63k)
2.在eerom.h配置里,将rom初始位置设置为 f800 :
#define eeprom_start_address    ((u32)0x0800f800)  
这样编译出来的代码,就不会和模拟rom重合了
不知大虾有没有话要说?请指点一二
-----------------------------------------------------------------------

请问LZ用上面这个方法还会出现问题吗??上面的是不是很保险?我的程序也用到模拟ROM,有时候死掉后重新上电也不能正常工作了,要重新烧写程序才正常,和LZ的很类似

出0入0汤圆

 楼主| 发表于 2011-11-22 11:44:56 | 显示全部楼层
回复【2楼】denike

重新烧程序才正常,说明代码段和ROM重合了,不知你程序占了多少字节呢?和rom位置近么?

上面的办法限制了编译代码位置,以及 模拟rom存储位置,应该是比较保险的解决办法,

已经上机各种测试没有问题,就等大家批作业了,嘿嘿

出0入0汤圆

发表于 2011-11-22 23:04:23 | 显示全部楼层
LZ的代码是57K,但还有4.3K的Readonly data和1.4k左右的rw-data,也在Flash里。这样,会占用到后面的一些空间。
具体的信息,可以在生成的.map文件的Memory Map of the image一节中看到。

出0入0汤圆

发表于 2011-11-23 13:49:18 | 显示全部楼层
我来看看,到底怎么解决

出0入0汤圆

发表于 2011-11-23 14:08:03 | 显示全部楼层
回复【3楼】AlienHit
回复【2楼】denike  
重新烧程序才正常,说明代码段和rom重合了,不知你程序占了多少字节呢?和rom位置近么?
上面的办法限制了编译代码位置,以及 模拟rom存储位置,应该是比较保险的解决办法,
已经上机各种测试没有问题,就等大家批作业了,嘿嘿
-----------------------------------------------------------------------

我程序代码才20多K 总容量是128K,我在64K后模拟rom,不是全部板子有问题,是一部有问题,有时候运行1-2天就不能用,要重新烧写!

出0入0汤圆

 楼主| 发表于 2011-11-23 14:57:50 | 显示全部楼层
回复【6楼】denike
-----------------------------------------------------------------------

我的问题已经解决了,按上面说的办法就好

然后看项目的.map文件,确认是否有重合
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-17 21:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表