chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

程序運(yùn)行在STM32H750的外擴(kuò)FLASH上兩小時(shí)后死機(jī)該如何處理

jf_pJlTbmA9 ? 來源:STM32單片機(jī) ? 作者:STM32單片機(jī) ? 2023-10-24 15:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.問題現(xiàn)象

客戶使用 STM32H750VBT6,通過 QSPI 外擴(kuò)了一個(gè) 4M 的 NOR FLASH,采用memory map 模式。當(dāng)程序跳轉(zhuǎn)運(yùn)行到外設(shè) FLASH 后,大約兩個(gè)小時(shí)后程序死機(jī)。

客戶使用的 IDE 是 KEIL,此問題可以固定重現(xiàn)。在 KEIL 調(diào)試模式下重現(xiàn)問題時(shí),通過多次觀察發(fā)現(xiàn),程序死的位置總體上會(huì)停在兩個(gè)位置,并不是同一個(gè)位置。一個(gè)是 TIM15函數(shù)的入口;另一個(gè)是進(jìn)入中斷函數(shù)后的一個(gè)賦值語句。

2.問題分析及測試

通過拜訪客戶,觀察到死機(jī)位置處于即將進(jìn)入但還未進(jìn)入的TIM15 中斷入口處。查看客戶的原理圖,發(fā)現(xiàn)兩個(gè) VCAP 并未從外部相連,于是要求客戶直接從外部將此兩個(gè)引腳飛線短連。但是,后來經(jīng)測試問題仍然重現(xiàn)。

又觀察到 PC13 連接為 GPIO 輸出引腳,用于驅(qū)動(dòng)一外部組件??紤]到備份域相關(guān)的一些引腳其驅(qū)動(dòng)能力相對(duì)弱一些,于是讓客戶將 PC13 引腳斷開后再測試,結(jié)果問題仍然重現(xiàn)。

上面是一些硬件相關(guān)的懷疑點(diǎn),從測試結(jié)果來看,與此問題無關(guān)??磥碇饕赡苓€是軟件方面的問題。在軟件上確定客戶已經(jīng)打開了 IO 補(bǔ)償功能, IO 速度設(shè)置的是 HIGH,即使讓客戶修改成 “VERY_HIGH”,經(jīng)測試問題仍然存在。

由于之前發(fā)生過一個(gè)從低功耗喚醒后死機(jī)的問題,是與 Cache 相關(guān)的問題,于是測試將 CACHE 關(guān)閉的情況。這次經(jīng)測試客戶反饋問題沒再重現(xiàn) !

但客戶同時(shí)也反饋,之前的代碼也存在稍微修改一處代碼,問題就不再重現(xiàn)的現(xiàn)象,沒有找到具體規(guī)律。

這次代碼修改也沒排除這種可能性。為了讓關(guān)閉 Cache 的方法更具說服力,于是讓客戶在調(diào)試模式下通過手動(dòng)關(guān)閉 CACHE的方式,代碼仍然保持為原先可以重現(xiàn)問題的代碼。如下圖所示 :

wKgZomUD0DiARIcAAAUGQgb1eMw925.png

如上圖所示,在代碼運(yùn)行到使用 CACHE 后一行設(shè)置斷點(diǎn),當(dāng)程序停下來后,打開 Sys Ctrl/Cfg 窗口(菜單 view->system viewer->Core peripherals->system control and configuration),將對(duì)應(yīng)的位去掉。最終客戶反饋,關(guān)閉 DC,或者 IC 任何一個(gè)或者兩個(gè)都關(guān)閉,問題現(xiàn)象消失。至此可以確定地是,此問題與 CACHE 相關(guān) !

于是查看客戶的 MPU 相關(guān)配置,并將 Cube 包里的 H750 示例工程中的 MPU 配置發(fā)給客戶測試下,但問題仍然存在。

接下來查看勘誤手冊(cè),發(fā)現(xiàn) 2.4.4 節(jié)有 QSPI 相關(guān)的內(nèi)容:

wKgaomUD0DmAUZSeAAJz3g9vpo4036.png

這里有提到在 QSPI 外設(shè) FLASH 并工作在 memory-mapped 模式的時(shí)候,當(dāng)讀取由FSIZE 定義的最后一個(gè)字節(jié)的時(shí)候,不管內(nèi)容如何,有可能會(huì)導(dǎo)致 AXIs 總線 STALL 掉。

并同時(shí)給出了三種規(guī)避措施。其中第一種是將 FSIZE 定義得比實(shí)際大,以留有足夠的裕量。于是讓客戶修改代碼:在 QSPI 初始化時(shí)將 size 設(shè)置成大一倍:

面紅色部分表示的 nor flash 設(shè)置成實(shí)際的兩倍大小。

同時(shí)考慮到此處定義了實(shí)際兩倍大小的 FLASH,多出來的另外一半實(shí)際是不存在的,為了避免 CPU 意外訪問這個(gè)實(shí)際不存在的區(qū)域,使用 MPU“告訴”CPU 這多出來的一半?yún)^(qū)間是不可訪問的。

于是 MPU 按如下來配置:

使用串口終端工具,分別連接 USART1,USART3,發(fā)送對(duì)應(yīng)的 UART Bootloader 命令,得到下圖 3 的命令交互。

wKgZomUD0DuARYV8AAO8qQfEQVA863.png

圖3.MPU 配置

客戶再次測試,問題不再重現(xiàn)。為了進(jìn)一步驗(yàn)證問題,客戶嘗試按原先的代碼直接讀取 NOR FLASH 的最后一個(gè)字節(jié),問題還會(huì)重現(xiàn),再次驗(yàn)證此方法的有效性,至此問題解決。

3.后記

有些人可能會(huì)問,NOR FLASH 的最后一個(gè)字節(jié) CPU 真的會(huì)去訪問嗎 ? 客戶的程序占滿了整個(gè) FLASH 空間了嗎 ? 若那個(gè)地址沒有代碼那還會(huì)不會(huì)有這個(gè)問題。

其實(shí)勘誤手冊(cè) 2.4.4 節(jié)也提到了,不管 FSIZE 定義的空間最后的一個(gè)字節(jié)內(nèi)容是什么,均會(huì)有此問題。那么 CPU 為什么會(huì)去訪問此地址呢 ? 其實(shí)這是 M7 內(nèi)核的指令預(yù)取和分支預(yù)測試探性訪問導(dǎo)致的。

在 M7 編程手冊(cè)中可以找到如下內(nèi)容:

wKgZomUD0D2AfCoFAACYqTEv0VE452.png

正是上述特性才導(dǎo)致 CPU 會(huì)提前訪問 NOR FLASH 上的地址,即使當(dāng)前 PC 指針還未指到那里。我們可以通過合適的MPU配置防止因試探性訪問外存而導(dǎo)致問題。

參考文獻(xiàn):

1. PM0235:STM32F7 Series and STM32H7 Series Cortex?-M7 processor programming manua.

2. ES0396:STM32H750xB and STM32H753xI device limitations.

3. AN4838:Managing memory protection unit in STM32 MCUs.

4. AN4893:Level 1 cache on STM32F7 Series and STM32H7 Series.

來源:STM32單片機(jī)

免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1758

    瀏覽量

    155858
  • STM32H750
    +關(guān)注

    關(guān)注

    1

    文章

    16

    瀏覽量

    2555
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32N6 在 PSRAM 運(yùn)行代碼的調(diào)試

    開發(fā)其產(chǎn)品過程中,使用了 STM32N657X0H3Q??蛻舻拇a很大,不能放在SRAM 運(yùn)行,想放在 PSRAM 上去運(yùn)行,并咨詢?nèi)绾卧?STM
    發(fā)表于 04-15 16:02 ?0次下載

    LAT1198+通過 KEIL 制作 QSPI 接口的外部 Flash 下載算法應(yīng)用筆記

    時(shí),需要將代碼或數(shù)據(jù)燒錄到外部 Flash。如果調(diào)試工具不能夠一鍵燒錄,勢必會(huì)給調(diào)試帶來諸多的麻煩。本文以 STM32H750 芯片為例,介紹通過 KEIL制作 QSPI 接口的外部 Flash 下載算法的方法。
    發(fā)表于 01-11 17:25 ?0次下載

    STM32H750B-DK開發(fā)板 快速上手&TouchGFX入門

    支持顯示+觸屏,以及下方的用戶按鍵和Reset鍵: ? 背面圖如下: 可以看到主要芯片如下:除了中間偏下方的主控MCU STM32H750之外,板子還包含了個(gè)512?Mbit的Quad-SPI
    發(fā)表于 01-10 02:07

    請(qǐng)問單片機(jī)程序存儲(chǔ)器64KB是擴(kuò)的還是擴(kuò)加內(nèi)部的呢?

    單片機(jī)程序存儲(chǔ)器64KB是擴(kuò)的還是擴(kuò)加內(nèi)部的呢?
    發(fā)表于 01-06 08:24

    STM32H750的SD卡必須復(fù)位一次才能掛載成功,否則就像死機(jī)了一樣,如何解決?

    STM32H750,SD卡接在SDMMC1,JTAG仿真時(shí),可以mount,拔掉卡,也可以u(píng)nmount掉。拔掉仿真器時(shí),程序
    發(fā)表于 11-05 08:15

    單片機(jī)運(yùn)行一段時(shí)間死機(jī),為什么?

    問題: 單片機(jī)運(yùn)行一段時(shí)間死機(jī),想通過在死機(jī)前異常時(shí)利用cmbacktrace捕捉log保存,讓系統(tǒng)重啟重啟通過shell打印出死機(jī)時(shí)
    發(fā)表于 09-29 08:26

    studio有沒有通過更改下載算法,同時(shí)下載到內(nèi)部flash和外部flash

    我現(xiàn)在使用的stm32h750,內(nèi)部flash很小,需要使用外部qspiflash來儲(chǔ)存程序。 studio可以像mdk一樣設(shè)置個(gè)下載算法嗎? 這樣才能一個(gè)
    發(fā)表于 09-26 07:04

    RT_Thread運(yùn)行2個(gè)小時(shí)左右必死機(jī)是什么原因?qū)е碌??怎么解決?

    驅(qū)動(dòng)程序中,增加了對(duì)ORE溢出的處理,如下: 改了有效果,程序不固定每2小時(shí)左右死機(jī)了,但過了7個(gè)多
    發(fā)表于 09-22 06:41

    如何使TC1796運(yùn)行在RAM?

    生成工具:DAvE2 目前我用同一份代碼,在HighTec選擇iROM的情況下,去進(jìn)行編譯調(diào)試,可以正常的運(yùn)行; 但在選擇iRAM的情況下,去編譯調(diào)試,調(diào)試日志顯示無法讀取DBGSR,這應(yīng)該是出現(xiàn)了程序跑飛了; 從調(diào)試界面看,UDE似乎是幫我把FW加載到了
    發(fā)表于 08-13 07:26

    STM32H750定時(shí)器抓最高30M信息源,定時(shí)器能不能配置成100M?

    你好,我們要用 STM32H750 定時(shí)器抓最高30M 信息源,定時(shí)器能不能配置成100M?超過1M用適波器無法看到波形,不知道是哪的問題
    發(fā)表于 08-08 06:23

    stm32h750h743區(qū)別是什么?

    stm32h750h743區(qū)別
    發(fā)表于 07-18 07:21

    STM32H750B-DK 板載STLINK 燒錄自己程序導(dǎo)致無法使用了,怎么解決?

    STM32H750B-DK 板載STLINK 燒錄自己程序導(dǎo)致無法使用了,說有此開發(fā)板的板子STLINK 程序,謝謝! 補(bǔ)充:STM32H750B-DK 自帶的STLK 無法
    發(fā)表于 06-20 06:15

    運(yùn)行在嵌入式系統(tǒng)的emApps

    在當(dāng)今快節(jié)奏的嵌入式系統(tǒng)世界中,靈活性和適應(yīng)性是嵌入式系統(tǒng)實(shí)現(xiàn)的關(guān)鍵。SEGGER推出了其最新創(chuàng)新:Embedded apps(emApps)應(yīng)用,類似于手機(jī)上的應(yīng)用程序,可以運(yùn)行在嵌入式系統(tǒng)。
    的頭像 發(fā)表于 06-18 09:53 ?1028次閱讀
    <b class='flag-5'>運(yùn)行在</b>嵌入式系統(tǒng)<b class='flag-5'>上</b>的emApps

    STM32H745XIH6不能進(jìn)行雙核調(diào)試,CM4不能進(jìn)行在線調(diào)試怎么解決?

    你好, 問題: STM32H745XIH6不能進(jìn)行雙核調(diào)試,CM4不能進(jìn)行在線調(diào)試軟件:KEIL 5.41調(diào)試器STLINK V3按照手冊(cè)文檔AN5286雙核調(diào)試步驟操作, CM7設(shè)置完成,進(jìn)行
    發(fā)表于 06-09 06:58

    如何使用cubeide配置stm32H750環(huán)境?

    如何使用cubeide配置stm32H750環(huán)境,但是在SYS中沒有debug選項(xiàng),也就選不了serial wire
    發(fā)表于 04-23 07:55