找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3389|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32F411CEUx 能下載程序但不能執(zhí)行

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:183246 發(fā)表于 2017-4-6 10:30 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
前言
某客戶和我們反應(yīng)他們制作回來的板子,能下載程序但是程序執(zhí)行不了。

一、復(fù)現(xiàn)現(xiàn)象
硬件是:客戶自己設(shè)計制作的板子。上面是STM32F411CEUx的芯片
軟件版本是Cube庫中的:基于問題是能下載程序,但是代碼執(zhí)行不了,所以自己用Cube生成了一個項目工程,主函數(shù)里面就是GPIO口的翻轉(zhuǎn),正好客戶的板子上有LED燈,所以如果代碼被執(zhí)行了,就可以看到燈的閃爍。

二、程序解讀
連接好調(diào)試工具STLINK,
2.1/ IAR編譯環(huán)境
程序能夠正常下載,而且能夠執(zhí)行,可以看到對應(yīng)的LED燈的閃爍。
2.2/ Keil編譯環(huán)境
使用Keil的編譯環(huán)境下載,確實能夠下載,但是入口的地址是如下黃色的那行顯示所示,如果單步執(zhí)行(F11)或全速運行(F5),程序始終在原位置不動(0x1FFF4252),
如果強制的將PC指針的值和SP的值修改為0x8000000與0x2000000,然后在點擊運行,則能夠跑到main()函數(shù),再全速運行,能夠看到客戶板子上的LED燈的閃爍。
但是如果不強制修改PC和SP指針的值,則程序不執(zhí)行。

所以問題就變成為什么程序下載進去后的地址是0x1FFF4252 ?0x1FFF4252又是什么地址呢?
查閱相應(yīng)的手冊,

發(fā)現(xiàn)0x1FFF4252是處在了System memory區(qū)域。
咨詢了客戶,他們設(shè)計的是程序從Flash memory區(qū)域啟動的而且程序中沒有對Option Byte進行配置,那問題就很清楚了,用萬用表測量了客戶板上的Boot 0引腳的電平,發(fā)現(xiàn)電平不對,達到1.6V,這么高的電平可以被視為高電平了。

對照客戶的原理圖,原來Boot有上拉和下拉的電阻,焊接的時候?qū)⑦@兩個電阻都焊接上去了,去掉上拉電阻,使的BOOT0的引腳接地為低電平,再編譯下載進入Keil的環(huán)境,程序能夠被正常執(zhí)行了。問題找到了。
對于最初的測試,硬件相同,軟件相同,然而IAR可以正常運行,KEIL卻不能執(zhí)行,不解,可以IAR編譯環(huán)境的設(shè)置比較智能
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表