0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Fixup error信息是什么意思

麦辣鸡腿堡 来源:Microchip微芯 作者:Microchip微芯 2023-01-22 16:21 次阅读

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

这究竟是什么意思,我该怎么做?

答:简单地说,这意味着链接器指示你要去调整(fixup)对一个存储位置的引用,因为计算出的地址是和可用的空间是不匹配的,例如:对一个字节(8位)的引用,却要求放入一个大于0xFF的值。

在使用PICC编译器时,这种问题比较多地发生在指针没有被正确地声明的情况下,例如:

bank2 char ch;

char *ptr;

ptr = &ch; //这里就会出现fixup error

这是一个fixup error,因为"ptr"是默认指向bank0数据的指针(这里ptr只有8位,而&ch是一个大于8位的一个地址)——要改正它需要让指针也指向bank2,如下:

bank2 char *ptr;

要定位发生fixup error的原因,可以查看完整的错误信息。这里有一个例子:

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

这个错误信息是来自PICC编译器。这里的"size"告诉我们这是对一个字节的引用——实际上这是一个7位数据的引用,因为这个数值0xA8太大了,和7位的数据引用是不匹配的。

从信息里可知,在这里是引用了rbss_1,也就是bank1的地址,它建议了一个将对bank1的引用却没有截断完整地址以适合指令的7位地址。

注意这个位置——0x8C8。这是一个出错指令的绝对地址;请确保你已经产生了汇编列表文件,请打开编辑它。这个提供的地址是一个字节地址,因为PIC的程序空间是14位宽的,所以计算字地址时要用该地址除以2——0x8C8/2 = 0x464。

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

993 0464 00A8 movwf _TempChar ;#

^^^^ location

在出错信息里给出的值(0xA8)就是TempChar的地址——你还可以检查map或者symbol文件来查找对应这个地址的符号(通常使用list文件是比较好的方法)。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6511

    浏览量

    87600
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48617
收藏 人收藏

    评论

    相关推荐

    An Introduction to Error Locat

    technology development.  Innovations like oscilloscopes, logicanalyzers and bit error ratio testers have enabled new, faster and more
    发表于 07-14 10:48 14次下载

    Calculating the Error Budget i

    Calculating the Error Budget in Precision Digital-to-Analog Converter (DAC) Applications Abstract
    发表于 01-06 13:44 881次阅读
    Calculating the <b class='flag-5'>Error</b> Budget i

    电脑错误信息的中文解读

    电脑各种错误信息的中文意思 一、BIOS中的提示信息 提示信息 说明 Drive A error 驱动器A错误 System halt 系统挂起 Keyboard controller
    发表于 02-11 17:32 762次下载

    hard error什么意思及解决办法

    在使用电脑中有时候会遇到unknown hard error,很多人不知道unknown hard error什么意思。电脑出现hard error是因为什么,unknown hard err
    发表于 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.
    发表于 04-11 10:04 3次下载

    Keil编译错误improper fixup应该如何解决

    本文档的有内容详细介绍的是Keil编译错误improper fixup应该如何解决。
    发表于 07-31 17:35 1次下载
    Keil编译错误improper <b class='flag-5'>fixup</b>应该如何解决

    RTD Configurator and Error Budget Calculator

    RTD Configurator and Error Budget Calculator
    发表于 01-27 18:36 17次下载
    RTD Configurator and <b class='flag-5'>Error</b> Budget Calculator

    Error: Unable to reset MCU!

    出现Error: Unable to reset MCU!的解决方法
    发表于 10-25 21:06 14次下载
    <b class='flag-5'>Error</b>: Unable to reset MCU!

    单片机开发,报错 error: #40: expected an identifier

    错误信息error: #40: expected an identifier原因1:是命名重叠了, 比如在stm32f10x.h中有如下定义typedef enum {ERROR
    发表于 11-13 13:21 9次下载
    单片机开发,报错 <b class='flag-5'>error</b>: #40: expected an identifier

    pic单片机编译错误汇总

    (300)个字节准备放到bank1 中但bank1 容量不够。显然,只有把一部分原本定位在bank1 中的变量改放到其它bank 中才能解决此问题。二、 Error[000] :Fixup overflow ...
    发表于 11-16 13:36 0次下载
    pic单片机编译错误汇总

    KEIL ERROR L104

    Keil LX51 Error L104Error L104处理Error L104处理8051系列单片机总体来说内存空间小, 在需要数据转发的编程中为了更容易掌控内存分配和重用, 通常多用全局变量
    发表于 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
    发表于 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问题
    发表于 12-03 21:06 17次下载
    STM32CubeIDE安装-NSIS <b class='flag-5'>Error</b>问题

    MPLAB XC8编译器出现“fixup”错误怎么办

    问:怎么来改正“fixup”错误? 答:这里假定你已经知道如何来定位导致fixup错误的代码位置。如果不清楚,请参看前面的问答“怎么来定位"Fixup error"
    的头像 发表于 01-22 15:03 849次阅读

    I2C子系统ACK error

    在应该收到 ACK 信号的时候没有收到 ACK 信号,i2c controller 就会产生一个 ACK error 的中断,告诉 i2cdriver 发生了 ACK error。通常
    的头像 发表于 07-22 14:39 1024次阅读
    I2C子系统ACK <b class='flag-5'>error</b>