你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32F303开发】+ 使用片内的CCMRAM缩短代码执行时间 精华  

[复制链接]
creep 提问时间:2015-6-18 22:32 /
阅读主题, 点击返回1楼
2 收藏 33 评论69 发布时间:2015-6-18 22:32
69个回答
埃斯提爱慕 回答时间:2015-6-23 22:14:57
提示: 作者被禁止或删除 内容自动屏蔽
smjnk 回答时间:2015-6-24 00:40:57
这个确实没用过,学习了
阿本 回答时间:2015-6-24 08:20:20
mark               
index219 回答时间:2015-7-1 09:33:57
你好,我也正使用F4的CCM,可是像你说的,一旦分配MCU变量到CCM区域就死机,请问F4的CCM还需要做什么修改。(变量已经在MAP文件下看过,分配到CCM区段了)
creep 回答时间:2015-7-1 10:08:18
index219 发表于 2015-7-1 09:33
你好,我也正使用F4的CCM,可是像你说的,一旦分配MCU变量到CCM区域就死机,请问F4的CCM还需要做什么修改。 ...

你看清楚我可没有说F4把变量分配到CCM区域会fault,我是说分配函数到CCM区域会fault。
index219 回答时间:2015-7-1 10:26:01
creep 发表于 2015-7-1 10:08
你看清楚我可没有说F4把变量分配到CCM区域会fault,我是说分配函数到CCM区域会fault。 ...

当变量长度少的时候(如buf【2】),分配到CCM是不会fault,但是当定义变量buf【64*1024】,大数组的时候就会fault。而且buf【2】的情况下,对变量初始化buf【1】=2后,代码实际运行,串口打印出buf【1】的值确实400多。 请教下,F4的CCM是否还需要做其他的配置?
creep 回答时间:2015-7-1 10:28:44
index219 发表于 2015-7-1 10:26
当变量长度少的时候(如buf【2】),分配到CCM是不会fault,但是当定义变量buf【64*1024】,大数组的时候 ...

首先你要确定你定义的数组size小于CCM的区域,不同的片子CCM的大小是不同的,根据这个大小来修改SCR里面的CCM的值,要不然肯定会出错。其他的设置和F3的一样。
qianfan 回答时间:2015-7-1 10:55:41
creep 发表于 2015-6-19 09:58
有金币送点金币
没金币捧点人气

表示不知道如何送金币啊
index219 回答时间:2015-7-1 10:56:05
creep 发表于 2015-7-1 10:28
首先你要确定你定义的数组size小于CCM的区域,不同的片子CCM的大小是不同的,根据这个大小来修改SCR里面 ...

第一:我是用的是F407,CCM大小64k。
第二:使用IAR编译环境,.icf文件下配置CCMRAM地址范围在0x10000000-0x1000ffff.
第三:在.map文件下查看到变量ucHeap【64*1024】 地址成功分配到0x10000000  0x10000

CCM的相关配置都是官方提供的F3参考文档,结果是程序实际跑起来,就会进入fault。
creep 回答时间:2015-7-1 11:16:19
QianFan 发表于 2015-7-1 10:55
表示不知道如何送金币啊

感谢版主,你这是要准备打赏我点金币吗?
creep 回答时间:2015-7-1 11:20:09
index219 发表于 2015-7-1 10:56
第一:我是用的是F407,CCM大小64k。
第二:使用IAR编译环境,.icf文件下配置CCMRAM地址范围在0x10000000- ...

1.我没有用过IAR测试CCM分配,所以我不知道是不是和keil的设置一致。
2.我感觉你应该先找到你上面说的把变量分频到CCM然后变量会出错的原因。
3.有空我试下在keil里分配64K的数组到CCM里面会不会有问题。
creep 回答时间:2015-7-1 11:42:55
index219 发表于 2015-7-1 10:56
第一:我是用的是F407,CCM大小64k。
第二:使用IAR编译环境,.icf文件下配置CCMRAM地址范围在0x10000000- ...

我刚测试了keil下把64K数组放在CCM,数组写进去的内容没有变化,数组内元素可以修改,程序正常运行不会fault。
qianfan 回答时间:2015-7-1 11:57:22
creep 发表于 2015-7-1 11:16
感谢版主,你这是要准备打赏我点金币吗?

表示版主不能打赏,只有管理员有这个权限。。。
index219 回答时间:2015-7-1 16:09:43
creep 发表于 2015-7-1 11:42
我刚测试了keil下把64K数组放在CCM,数组写进去的内容没有变化,数组内元素可以修改,程序正常运行不会fa ...

好的,非常感谢,我至少可以确认KEIL下可以。我在找找IAR原因。
wu1169668869 回答时间:2015-7-29 00:59:52
尝试去看keil的帮助文档没什么大收获
楼主这个方法还不错,不知道能不能用DMA来传输定义在SDRAM中的数据!!!?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版