女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

工程師筆記|程序運行在 STM32H750 的外擴 FLASH 上兩小時后死機

STM32單片機 ? 來源:未知 ? 2023-01-07 12:55 ? 次閱讀

關鍵詞:死機, 外擴 FLASH

目錄預覽

1. 問題現象

2. 問題分析及測試

3. 后記

1.問題現象

客戶使用 STM32H750VBT6,通過 QSPI 外擴了一個 4M 的 NOR FLASH,采用memory map 模式。當程序跳轉運行到外設 FLASH 后,大約兩個小時后程序死機。

客戶使用的 IDE 是 KEIL,此問題可以固定重現。在 KEIL 調試模式下重現問題時,通過多次觀察發現,程序死的位置總體上會停在兩個位置,并不是同一個位置。一個是 TIM15函數的入口;另一個是進入中斷函數后的一個賦值語句。

2.問題分析及測試

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

又觀察到 PC13 連接為 GPIO 輸出引腳,用于驅動一外部組件。考慮到備份域相關的一些引腳其驅動能力相對弱一些,于是讓客戶將 PC13 引腳斷開后再測試,結果問題仍然重現。

上面是一些硬件相關的懷疑點,從測試結果來看,與此問題無關。看來主要可能還是軟件方面的問題。在軟件上確定客戶已經打開了 IO 補償功能, IO 速度設置的是 HIGH,即使讓客戶修改成 “VERY_HIGH”,經測試問題仍然存在。

由于之前發生過一個從低功耗喚醒后死機的問題,是與 Cache 相關的問題,于是測試將 CACHE 關閉的情況。這次經測試客戶反饋問題沒再重現 !

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

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

4445814e-8e47-11ed-bfe3-dac502259ad0.png

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

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

接下來查看勘誤手冊,發現 2.4.4 節有 QSPI 相關的內容:

44ad7592-8e47-11ed-bfe3-dac502259ad0.png

這里有提到在 QSPI 外設 FLASH 并工作在 memory-mapped 模式的時候,當讀取由FSIZE 定義的最后一個字節的時候,不管內容如何,有可能會導致 AXIs 總線 STALL 掉。

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

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

同時考慮到此處定義了實際兩倍大小的 FLASH,多出來的另外一半實際是不存在的,為了避免 CPU 意外訪問這個實際不存在的區域,使用 MPU“告訴”CPU 這多出來的一半區間是不可訪問的。

于是 MPU 按如下來配置:

使用串口終端工具,分別連接 USART1,USART3,發送對應的 UART Bootloader 命令,得到下圖 3 的命令交互。

圖3.MPU 配置

4525955e-8e47-11ed-bfe3-dac502259ad0.png

客戶再次測試,問題不再重現。為了進一步驗證問題,客戶嘗試按原先的代碼直接讀取 NOR FLASH 的最后一個字節,問題還會重現,再次驗證此方法的有效性,至此問題解決。

3.后記

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

其實勘誤手冊 2.4.4 節也提到了,不管 FSIZE 定義的空間最后的一個字節內容是什么,均會有此問題。那么 CPU 為什么會去訪問此地址呢 ? 其實這是 M7 內核的指令預取和分支預測試探性訪問導致的。

在 M7 編程手冊中可以找到如下內容:

45d8a81a-8e47-11ed-bfe3-dac502259ad0.png

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

參考文獻:

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.

45e849be-8e47-11ed-bfe3-dac502259ad0.png

長按掃碼關注公眾號

更多資訊,盡在STM32

點擊“閱讀原文”,可下載原文檔


原文標題:工程師筆記|程序運行在 STM32H750 的外擴 FLASH 上兩小時后死機

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6061

    文章

    44912

    瀏覽量

    646532
  • STM32
    +關注

    關注

    2289

    文章

    11011

    瀏覽量

    362188

原文標題:工程師筆記|程序運行在 STM32H750 的外擴 FLASH 上兩小時后死機

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    問,成為硬件工程師需要幾只手?#硬件工程師 #YXC晶振 #揚興科技 #搞笑

    硬件工程師
    揚興科技
    發布于 :2025年04月25日 17:15:37

    如何使用cubeide配置stm32H750環境?

    如何使用cubeide配置stm32H750環境,但是在SYS中沒有debug選項,也就選不了serial wire
    發表于 04-23 07:55

    一招拿捏電子工程師#被AI拿捏了 #電子工程師 #電子電工

    電子工程師
    安泰小課堂
    發布于 :2025年03月25日 17:30:51

    請問STM32H750如何搭配88E6320使用?

    STM32H750如何搭配88E6320來使用?
    發表于 03-13 07:33

    STM32H750更改時鐘程序無法運行怎么解決?

    各位大佬,我想請教一個問題: 為了驗證H750主時鐘頻率和功耗的關系: 用STM32CUBEMX配置STM32H750VBT6的主時鐘為:100MHz,程序可以正常
    發表于 03-12 06:38

    STM32H750內部flash讀寫的疑問求解

    請教下,STM32H750XBHx我看資料內置flash為128K,并且flash擦除的最小單元也是128K。這樣的話我有數據要保存應該怎樣處理好呢?寫數據時是要將程序部分一起擦除再寫
    發表于 03-12 06:29

    stm32h750vbt6設置了LSE,裝載RESET失效了怎么解決?

    stm32h750vbt6設置了LSE,裝載RESET失效
    發表于 03-07 15:16

    STM32H750 FDCAN發送異常的原因?

    最近在調CANopen,用的芯片是STM32H750VBT6,發現按照ST的例程生成簡單的測試程序,只要執行一次發送,CAN模塊就會自動一直往外發送這幀數據,查看寄存器發現發送掛起
    發表于 03-07 08:42

    STM32H750VBT6程序只有在調試時可以運行,為什么?

    最近在調試 STM32H750VBT6 時遇到程序只有在調試時可以運行,雖然勾選了 rest and run ,但下載完任然不運行。檢查了 boot 和 reset 電壓均正常。最后,
    發表于 03-07 06:19

    焊板子前,焊板子,硬件工程師居然幅面孔!# #電工 #電路知識 #電路原理

    硬件工程師
    MDD辰達半導體
    發布于 :2025年01月07日 18:15:30

    ADS1230運行一段事件, 約半小時兩小時,數據會亂跳怎么解決?

    問題描述: 開始測量正常,運行一段事件, 約半小時兩小時,數據會亂跳 #define NOP90nS()_nop_()//11.0592Mhzstc單片機 1T模式 單nop約90ns
    發表于 12-05 07:59

    請問一下C6748能不能同時個I2S總線?

    TI的技術工程師你好,我們公司有一個案子。需要接一個codec進行音頻播放,另外還需要接入一個arm片子實現usb audio device。個設備都需要用I2S連接,不過我看了C6748只有一個mcasp可以做音頻總線。 請問一下C6748能不能同時
    發表于 10-25 06:26

    STM32H750在-40℃環境下程序在串口初始化階段跑飛了怎么處理?

    STM32H750,主頻設置為400MHz,常溫下可以正常工作,低溫-40℃時,程序在初始化階段跑飛,用仿真器連接進行調試,單步運行在串口初始化函數處報錯: Target
    發表于 07-04 06:35