9363|11

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

存储数据到指定的Flash区域问题? [复制链接]

程序中有一部分数据需要存储在指定的Flash地址部分,此部分数据可以更新。存储方式如下: u16 Numbers[2] __at(Flash_Addr)={3246,1048};
   其中Flash_Addr = 0x08038000; 以这样的方式定义后用Flash Loader烧写时速度很慢。主要原因是原来程序是30k,这样定义后程序变成了210k,烧写速度大大降低。 将Flash_Addr 定义在Flash结尾处主要是为了预留足够的空间升级。
    我想是否可以将Flash_Addr定义在Flash起始地址?但是不知道怎么实现,请做个的朋友帮忙指点一下。谢谢!
此帖出自stm32/stm8论坛

最新回复

                                   用得就是__at。和用at没关系。  详情 回复 发表于 2010-4-13 17:10
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
IAP?那么不要指定Numbers的地址,用取地址的方式来访问就可以了:
u16 Numbers[2];

访问时:
u16 *p=&Numbers;//得到Numbers的地址,下一步操作指针p就可以了
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 为什么要把数据放到那么靠后的位置呢?直接把Flash_Addr放在flash比较靠前的位置就可以,编译器在连接的时候应该会避开存储数据的位置,就是说,程序区不会和Flash_Addr相冲突。
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 

必须指定地址,因为要实现外部更新。
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

5
 


定义前面的话不能避开程序区,我试过了。
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
怎么个避不开法?烧写之后,那个位置被改写了?
看来这个编译器的连接功能不太智能啊
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 

编译后会出现警告。烧写后STM32不能启动。我用得是MDK
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 咋就没个明白人呢。
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

9
 
没用过MDK,IAR是可以在把变量定义在绝对地址的,但这种变量不能有初始值。
按你的想法,定义在flash的起始地址肯定是不行的,因为flash起始地址是中断向量表。
而且你的程序还要改写这个变量,需要进行擦除操作,所以得占用至少一页的空间才能不影响其它数据和代码。
建议你好好看看MDK的连接配置那部分,帮助文档里应该有说明的。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

10
 


MDK也可以定义绝对地址,定义在起始地址我没做过。谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 试试用"_at_"
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 


用得就是__at。和用at没关系。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
TI 处理器AM62L深度讲解,报名直播赢【双肩包、充电器、胶囊伞】
【直播要点】• 如何实现安全节能设计;• 开箱体验和demo;• 软件和硬件
【直播时间】3月21日(周五)上午10:00

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表