国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 資料介紹
    • 概述
    • 問題描述與分析
    • 問題解決
    • 總結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1185 一個地址未對齊引起的 HardFault 異常

03/26 09:34
431
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1185 一個地址未對齊引起的 HardFault 異常

673.92 KB

概述

客戶在使用 STM32G070 的時候,KEIL MDK 為編譯工具,當(dāng)編譯優(yōu)化選項設(shè)置為Level0 的時候,程序會出現(xiàn) Hard Fault 異常,而當(dāng)編譯優(yōu)化選項設(shè)置為 Level1 的時候,則程序運行正常。表面上看,這似乎是 KEIL MDK 的問題,通過分析,導(dǎo)致這個問題的本質(zhì)原因是內(nèi)存地址沒有對齊引起的,下面章節(jié)將詳細分析該問題的來龍去脈以及解決方法。

問題描述與分析

根據(jù)客戶的反饋,引起問題的代碼很簡單,客戶定義了幾個全局數(shù)組,在主程序中訪問這幾個數(shù)組就會出現(xiàn) Hard Fault 異常。

問題解決

通過上一節(jié)的分析,明確了導(dǎo)致該問題的本質(zhì)原因是內(nèi)存地址沒有對齊,這個內(nèi)存地址實際上是代碼中定義的全局變量 g_curPlaySound_app 指向的地址,也就是全局數(shù)組變量 SoundFile 的地址,在編譯器不同的優(yōu)化選項下,分配給 SoundFile 變量的地址是不一樣的,在本案例中,編譯優(yōu)化選項 Level0 條件下,SoundFile 分配的地址沒有按照WORD 對齊,而在優(yōu)化選項 Level1 條件下,SoundFile 分配的地址是 WORD 對齊,所以在兩種優(yōu)化選項下,出現(xiàn)了不一樣的運行結(jié)果。

總結(jié)

地址未對齊是嵌入式系統(tǒng)中容易忽視的一個細節(jié),忽視這點往往會導(dǎo)致一些奇怪的問題,所以在開發(fā)過程中,注意這些細節(jié)還是很有必要的。

資料預(yù)覽

相關(guān)推薦

泰安市| 开鲁县| 沐川县| 二连浩特市| 大丰市| 南木林县| 繁峙县| 开封市| 体育| 秦安县| 额济纳旗| 江源县| 抚远县| 镇安县| 芜湖市| 镇坪县| 阳春市| 黄骅市| 临澧县| 防城港市| 鄂州市| 周宁县| 梅河口市| 齐河县| 阿巴嘎旗| 绵阳市| 出国| 边坝县| 高要市| 偏关县| 惠东县| 土默特左旗| 湘阴县| 赫章县| 星子县| 犍为县| 昂仁县| 保亭| 伊川县| 寿光市| 南充市|