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

Arm-none-eabi-gcc 编译 GPIO_IOToggle

[复制链接]
pythonworld 提问时间:2015-11-20 21:03 /
阅读主题, 点击返回1楼
收藏 2 评论15 发布时间:2015-11-20 21:03
15个回答
pythonworld 回答时间:2015-11-29 20:25:43
两个连接文件已经附上了。

Ld.zip

下载

2.96 KB, 下载次数: 6, 下载积分: ST金币 -1

QianFan 回答时间:2015-12-1 19:52:39
本帖最后由 QianFan 于 2015-12-1 19:56 编辑
pythonworld 发表于 2015-11-29 20:25
两个连接文件已经附上了。

楼主你好。感谢你采用我的答案。不过治标不治本,问题并没有完全解决。下面我给你详细解答一下。

不知道你的链接文件是从什么地方找的。虽然是TrueStudio的,但是写这个链接文件的人不是很了解STM32F334R8这个芯片。问题出在RAM的大小上。我从Mouse上面查到,这个芯片是64K的flash,12K的SRAM。如下图:
2015-12-01 19:30:08屏幕截图.png

但是STM32F334R8内部还有4K的CCRAM。ST的人员大概是为了展现一下334R8这个芯片的优势,所以在Nucleo的盒子上写了SRAM是16K(12+4)。但是CCRAM和SRAM的地址是不一样的。不能简单的通过数字相加得出SRAM是16K这个结论。看下面我拍的STM32F334R8 Nucleo盒子的图片。
2015-12-01 19:33:44屏幕截图.png

看版权声明,链接文件确实是Truestudio公司写的。不过写链接文件的这个人大概是临时工。可能对这个芯片不是很了解。看见盒子上写着16K的SRAM,顺便就把16K写到SRAM的大小上了。(实际SRAM的大小是12K)
2015-12-01 19:42:07屏幕截图.png

为了让C函数能够跑起来,需要在开机的时候设置栈(sp)的值。这个是向量表中的第一个元素。为了避免内存碎片以及方便arm gcc中sbrk的实现,需要将sp的初始值放到SRAM的最后一个地址。这个写链接文件的人以为SRAM是16K,自然计算出来的sp初始值是:
2015-12-01 19:45:37屏幕截图.png
加上SRAM的其实地址0x2000_0000,也就是:
2015-12-01 19:46:03屏幕截图.png

可是这个地址是错误的。因为SRAM到12K的地方就截止了。这个0x20003FFF处压根就不能随机读写。所以无法设置栈。只要你的C函数中有函数的调用,自然就不能返回。程序就跑飞了。所以不管你的程序写的对还是不对,自然不能运行。

而Mbed的工程师了解CCRAM,所以链接文件是对的:
2015-12-01 19:49:20屏幕截图.png




好了,废话说了这么多,该说下解决方案了:将SRAM的长度改为12K,栈的地址设置为12K的最后一个地址,重新链接一下你的程序,问题就会解决了.
2015-12-01 19:51:17屏幕截图.png

2015-12-01 19:51:54屏幕截图.png
因为我刚开始使用arm gcc的时候,也在这犯过糊涂。
QianFan 回答时间:2015-12-1 19:54:32
pythonworld 发表于 2015-11-29 20:25
两个连接文件已经附上了。

楼主以后回复的时候,在我的评论下点回复。你这样上传附件的话我是收不到通知的啊。
pythonworld 回答时间:2015-12-1 22:01:16
QianFan 发表于 2015-12-1 19:54
楼主以后回复的时候,在我的评论下点回复。你这样上传附件的话我是收不到通知的啊。 ...

谢谢你的详细解答.这个连接文件是stm32cubef3 v1.3库文件里stm32cubef3\STM32Cube_FW_F3_V1.3.0\Projects\STM32F334R8-Nucleo\Examples\GPIO\GPIO_IOToggle\TrueSTUDIO文件夹下的.真的很坑爹呀,这都有问题!!目前官网上的版本还是1.3,看来是没有更新.
QianFan 回答时间:2015-12-4 14:38:41
QianFan 发表于 2015-12-1 19:52
楼主你好。感谢你采用我的答案。不过治标不治本,问题并没有完全解决。下面我给你详细解答一下。

不知道 ...

更正一下。这个sp的开始地址设置的有点问题。应该是0x20003000。不应该减1。
stary666 回答时间:2015-12-4 14:39:34
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版