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

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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版