成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 正文
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

又是編譯器的鍋?全局變量怎么就從棧里取數(shù)據(jù)了?!

2023/12/31
1309
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

來源:公眾號【魚鷹談單片機】,ID :emOsprey

一個學(xué)員項目上需要完成app升級功能,但是跳轉(zhuǎn)后直接 hardfault,項目緊急,只能找上魚鷹加急處理(課程福利)。

這種問題我都是比較自信的,M0+ 內(nèi)核,感覺問題不大,只是沒想到學(xué)員公司保密性比較強,不能遠程控制電腦,只能微信視頻進行指導(dǎo)調(diào)試,折騰許久,才最終定位跳轉(zhuǎn)地址出現(xiàn)問題。

static ?uint32_t jmp_app;

static uint32_t jmp_stack;

jmp_app = xx

jmp_stack = xxx

關(guān)閉中斷

__ISB();

__DMB();

設(shè)置中斷向量表

設(shè)置 msp 和 psp 棧

((void (*)(void))jmp_app)();

代碼類似如上,但是很奇怪的是,執(zhí)行最后一條代碼時,會從棧中取jmp_app的值(通過匯編分析),導(dǎo)致最終跳轉(zhuǎn)地址異常而hardfault,這個變量明明是靜態(tài)全局變量,而且同樣的代碼在stm32沒有問題。

全局變量數(shù)據(jù)從棧里面取,怎么都不符合常理,要么優(yōu)化后從寄存器取,要么從ram中取才對,沒聽說過要通過棧取數(shù)據(jù)(難道是前面設(shè)置棧的操作導(dǎo)致?)。

這個問題最終由學(xué)員發(fā)現(xiàn)是編譯器的鍋,用-O0 compiler6可以穩(wěn)定出錯,compile5沒問題,之前看一篇硬漢的文章說ac6在O0處理復(fù)雜宏時會產(chǎn)生大量的棧,O1沒問題,才知道編譯器也不可盡信,匯編也需要懂,否則出現(xiàn)類似問題根本無法解決,不知道各位道友是否有遇到類似問題。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
M25P40-VMN6TPB 1 Numonyx Memory Solutions Flash, 512KX8, PDSO8, 0.150 INCH, ROHS COMPLIANT, PLASTIC, SOP-8
$1.43 查看
XUL516156.250000I 1 Integrated Device Technology Inc LVDS Output Clock Oscillator
$52.37 查看
OPB100Z 1 TT Electronics Resistors LED Emitter
$7.92 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄
仁怀市| 华亭县| 民县| 葫芦岛市| 陇川县| 宁陕县| 吉隆县| 哈密市| 巧家县| 尉犁县| 腾冲县| 托里县| 两当县| 车险| 堆龙德庆县| 兴义市| 兴安县| 昌图县| 措勤县| 洛浦县| 延吉市| 岳西县| 中山市| 怀柔区| 靖宇县| 庐江县| 长沙市| 日土县| 奇台县| 威远县| 抚远县| 招远市| 郁南县| 会同县| 富蕴县| 穆棱市| 通辽市| 临夏市| 信宜市| 广丰县| 于田县|