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

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

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

Fixup error信息是什么意思

麥辣雞腿堡 ? 來源:Microchip微芯 ? 作者:Microchip微芯 ? 2023-01-22 16:21 ? 次閱讀

問:我得到一個信息"Fixup error referencing ...";或者是"Fixup error in expression ..."

這究竟是什么意思,我該怎么做?

答:簡單地說,這意味著鏈接器指示你要去調(diào)整(fixup)對一個存儲位置的引用,因為計算出的地址是和可用的空間是不匹配的,例如:對一個字節(jié)(8位)的引用,卻要求放入一個大于0xFF的值。

在使用PICC編譯器時,這種問題比較多地發(fā)生在指針沒有被正確地聲明的情況下,例如:

bank2 char ch;

char *ptr;

ptr = &ch; //這里就會出現(xiàn)fixup error

這是一個fixup error,因為"ptr"是默認(rèn)指向bank0數(shù)據(jù)的指針(這里ptr只有8位,而&ch是一個大于8位的一個地址)——要改正它需要讓指針也指向bank2,如下:

bank2 char *ptr;

要定位發(fā)生fixup error的原因,可以查看完整的錯誤信息。這里有一個例子:

gmain6.obj:113:Fixup overflow referencing psect rbss_1 (loc 0x8C8 (0x8C2+6), size 1, value 0xA8)

這個錯誤信息是來自PICC編譯器。這里的"size"告訴我們這是對一個字節(jié)的引用——實際上這是一個7位數(shù)據(jù)的引用,因為這個數(shù)值0xA8太大了,和7位的數(shù)據(jù)引用是不匹配的。

從信息里可知,在這里是引用了rbss_1,也就是bank1的地址,它建議了一個將對bank1的引用卻沒有截斷完整地址以適合指令的7位地址。

注意這個位置——0x8C8。這是一個出錯指令的絕對地址;請確保你已經(jīng)產(chǎn)生了匯編列表文件,請打開編輯它。這個提供的地址是一個字節(jié)地址,因為PIC的程序空間是14位寬的,所以計算字地址時要用該地址除以2——0x8C8/2 = 0x464。

在list文件里,可以很簡單地定位到0x464:

993 0464 00A8 movwf _TempChar ;#

^^^^ location

在出錯信息里給出的值(0xA8)就是TempChar的地址——你還可以檢查map或者symbol文件來查找對應(yīng)這個地址的符號(通常使用list文件是比較好的方法)。

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

    關(guān)注

    8

    文章

    7030

    瀏覽量

    89038
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1634

    瀏覽量

    49133
收藏 人收藏

    評論

    相關(guān)推薦

    An Introduction to Error Locat

    technology development.  Innovations like oscilloscopes, logicanalyzers and bit error ratio testers have enabled new, faster and more
    發(fā)表于 07-14 10:48 ?14次下載

    Calculating the Error Budget i

    Calculating the Error Budget in Precision Digital-to-Analog Converter (DAC) Applications Abstract
    發(fā)表于 01-06 13:44 ?946次閱讀
    Calculating the <b class='flag-5'>Error</b> Budget i

    電腦錯誤信息的中文解讀

    電腦各種錯誤信息的中文意思 一、BIOS中的提示信息 提示信息 說明 Drive A error 驅(qū)動器A錯誤 System halt 系統(tǒng)掛起 Keyboard controller
    發(fā)表于 02-11 17:32 ?762次下載

    hard error什么意思及解決辦法

    在使用電腦中有時候會遇到unknown hard error,很多人不知道unknown hard error什么意思。電腦出現(xiàn)hard error是因為什么,unknown hard err
    發(fā)表于 12-13 11:23 ?0次下載

    What’s Wrong with % Error in Junction Temperature"

    publications in technical journals and conferences, use has been made of the concept of % error in Tj.
    發(fā)表于 04-11 10:04 ?3次下載

    Keil編譯錯誤improper fixup應(yīng)該如何解決

    本文檔的有內(nèi)容詳細(xì)介紹的是Keil編譯錯誤improper fixup應(yīng)該如何解決。
    發(fā)表于 07-31 17:35 ?1次下載
    Keil編譯錯誤improper <b class='flag-5'>fixup</b>應(yīng)該如何解決

    RTD Configurator and Error Budget Calculator

    RTD Configurator and Error Budget Calculator
    發(fā)表于 01-27 18:36 ?17次下載
    RTD Configurator and <b class='flag-5'>Error</b> Budget Calculator

    Error: Unable to reset MCU!

    出現(xiàn)Error: Unable to reset MCU!的解決方法
    發(fā)表于 10-25 21:06 ?14次下載
    <b class='flag-5'>Error</b>: Unable to reset MCU!

    單片機開發(fā),報錯 error: #40: expected an identifier

    錯誤信息error: #40: expected an identifier原因1:是命名重疊了, 比如在stm32f10x.h中有如下定義typedef enum {ERROR = 0
    發(fā)表于 11-13 13:21 ?9次下載
    單片機開發(fā),報錯 <b class='flag-5'>error</b>: #40: expected an identifier

    KEIL ERROR L104

    Keil LX51 Error L104Error L104處理Error L104處理8051系列單片機總體來說內(nèi)存空間小, 在需要數(shù)據(jù)轉(zhuǎn)發(fā)的編程中為了更容易掌控內(nèi)存分配和重用, 通常多用全局變量
    發(fā)表于 11-29 13:21 ?8次下載
    KEIL <b class='flag-5'>ERROR</b> L104

    "STM32-MDK: Error: L6915E: Library reports error: __use_no_semihosting was requested,"

    在編譯程序是報錯:…\OBJ\test_program.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested but a semihosting fputc was li
    發(fā)表于 12-03 09:51 ?9次下載
    "STM32-MDK: <b class='flag-5'>Error</b>: L6915E: Library reports <b class='flag-5'>error</b>: __use_no_semihosting was requested,"

    STM32CubeIDE安裝-NSIS Error問題

    STM32CubeIDE安裝-NSIS Error問題
    發(fā)表于 12-03 21:06 ?18次下載
    STM32CubeIDE安裝-NSIS <b class='flag-5'>Error</b>問題

    【GCC編譯運行報錯】error while loading

    【GCC編譯】運行編譯后的程序報錯 error while loading shared libraries: lib*.so: cannot open shared object file
    的頭像 發(fā)表于 08-26 13:14 ?7363次閱讀
    【GCC編譯運行報錯】<b class='flag-5'>error</b> while loading

    MPLAB XC8編譯器出現(xiàn)“fixup”錯誤怎么辦

    問:怎么來改正“fixup”錯誤? 答:這里假定你已經(jīng)知道如何來定位導(dǎo)致fixup錯誤的代碼位置。如果不清楚,請參看前面的問答“怎么來定位"Fixup error"
    的頭像 發(fā)表于 01-22 15:03 ?1235次閱讀

    ABB高級編程Error Handler

    ?當(dāng)程序發(fā)生故障時,正常情況下采用人為干預(yù),不可避免會影響生產(chǎn)效率,機器人編程時,可以通過Error Handler 這項功能來自動處理一些故障,提高生產(chǎn)效率。
    的頭像 發(fā)表于 05-26 09:23 ?915次閱讀
    ABB高級編程<b class='flag-5'>Error</b> Handler