首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32F411CEUx 能下载程序但不能执行

STM32F411CEUx 能下载程序但不能执行




2016年度STM32全国巡回研讨会将于9月7日至23日于全国12座城市举办,ST已邀请融创芯城作为电商平台合作伙伴全程参与,欢迎小伙伴们莅临各大研讨会的融创芯城展台沟通交流。














前言


某客户和我们反应他们制作回来的板子,能下载程序但是程序执行不了。


一、复现现象


硬件是:客户自己设计制作的板子。上面是STM32F411CEUx的芯片软件版本是Cube库中的:基于问题是能下载程序,但是代码执行不了,所以自己用Cube生成了一个项目工程,主函数里面就是GPIO口的翻转,正好客户的板子上有LED灯,所以如果代码被执行了,就可以看到灯的闪烁。

二、程序解读
连接好调试工具STLINK


21/ IAR编译环境


程序能够正常下载,而且能够执行,可以看到对应的LED灯的闪烁。


22/ Keil编译环境


使用Keil的编译环境下载,确实能够下载,但是入口的地址是如下黄色的那行显示所示,如果单步执行(F11)或全速运行(F5,程序始终在原位置不动(0x1FFF4252),如果强制的将PC指针的值和SP的值修改为0x80000000x2000000,然后在点击运行,则能够跑到main()函数,再全速运行,能够看到客户板子上的LED灯的闪烁。


但是如果不强制修改PCSP指针的值,则程序不执行。






所以问题就变成为什么程序下载进去后的地址是0x1FFF42520x1FFF4252又是什么地址呢?查阅相应的手册,发现0x1FFF4252是处在了Systemmemory区域。








咨询了客户,他们设计的是程序从Flashmemory区域启动的而且程序中没有对Option Byte进行配置,那问题就很清楚了,用万用表测量了客户板上的Boot0引脚的电平,发现电平不对,达到1.6V,这么高的电平可以被视为高电平了。








对照客户的原理图,原来Boot有上拉和下拉的电阻,焊接的时候将这两个电阻都焊接上去了,去掉上拉电阻,使的BOOT0的引脚接地为低电平,再编译下载进入Keil的环境,程序能够被正常执行了。问题找到了。


对于最初的测试,硬件相同,软件相同,然而IAR可以正常运行,KEIL却不能执行,不解,可以IAR编译环境的设置比较智能。










重要通知 - 请仔细阅读


意法半导体公司及其子公司(“ST”)保留随时对ST 产品和/ 或本文档进行变更、更正、增强、修改和改进的权利,恕不另行通知。买方订货之前应获取关于ST 产品的最新信息。ST 产品的销售依照订单确认时的相关ST 销售条款。
买方自行负责对ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。
ST 不对任何知识产权进行任何明示或默示的授权或许可。
转售的ST 产品如有不同于此处提供的信息的规定,将导致ST 针对该产品授予的任何保证失效。
ST 和ST 徽标是ST 的商标。所有其他产品或服务名称均为其各自所有者的财产。


本文档中的信息取代本文档所有早期版本中提供的信息。










文章来源:微信公众号  融创芯城




融创芯城(一站式供应链)
平台网址:http://www.digiic.com
电子技术群:499391543
返回列表