色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stm32中出現(xiàn)的hard_fault問(wèn)題 如何解決

          stm32中出現(xiàn)的hard_fault問(wèn)題 如何解決

          作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
          最近移植別人的一個(gè)lora程序,公司前任同事已經(jīng)搞定的程序,從IAR平臺(tái)移植到KEIL中,移植后,居然出現(xiàn)了hardfault問(wèn)題。一直以來(lái),我很少遇到這個(gè)問(wèn)題,遇到了,也算是好事。

          然后看看如何解決的吧。

          本文引用地址:http://cafeforensic.com/article/201611/316535.htm

          1、單步執(zhí)行,發(fā)現(xiàn)程序運(yùn)行到哪的時(shí)候出現(xiàn)了hardfault問(wèn)題。發(fā)現(xiàn)是初始化的時(shí)候。應(yīng)該是結(jié)構(gòu)體指針的初始化問(wèn)題。

          2、其實(shí)也從晚上找了一些如何定位hardfault的問(wèn)題點(diǎn)的方法。充分利用call stack以及但不調(diào)試的工具。

          3、問(wèn)題點(diǎn)通常發(fā)生在數(shù)據(jù)越界,指針未初始化,堆棧溢出的這些情況。

          method-1 試過(guò)它的方法,查看寄存器,利用反匯編,定位出問(wèn)題點(diǎn)。http://bbs.ednchina.com/BLOG_ARTICLE_3024685.HTM

          method-2 也試過(guò)這個(gè)方法,利用fault reports,以及call stack+local窗口,定位問(wèn)題點(diǎn)。http://blog.csdn.net/xiahouzuoxin/article/details/10068455

          在這里,我推薦method-2。

          static void __lora_init(void)
          {
          lora_port_init(); ----GPIO的初始化
          register_rf_func(&ctrlTypefunc); ---結(jié)構(gòu)體,成員是指針
          ····
          }
          更改為
          static void __lora_init(void)
          {
          register_rf_func(&ctrlTypefunc); ---結(jié)構(gòu)體,成員是指針
          lora_port_init(); ----GPIO的初始化
          ····
          }
          由于結(jié)構(gòu)體在lora_port_init();中使用到結(jié)構(gòu)體ctrlTypefunc,但是未初始化,所以出現(xiàn)這個(gè)問(wèn)題。


          關(guān)鍵詞: stm32中hardfaul

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉