问:我得到一个信息"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文章
7193浏览量
89818 -
编译器
+关注
关注
1文章
1642浏览量
49336
发布评论请先 登录
相关推荐
An Introduction to Error Locat
Calculating the Error Budget i
![Calculating the <b class='flag-5'>Error</b> Budget i](https://file1.elecfans.com//web2/M00/A4/85/wKgZomUMNJOAJXrgAAAA6dCvhIo833.gif)
电脑错误信息的中文解读
hard error什么意思及解决办法
What’s Wrong with % Error in Junction Temperature"
RTD Configurator and Error Budget Calculator
![RTD Configurator and <b class='flag-5'>Error</b> Budget Calculator](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
单片机开发,报错 error: #40: expected an identifier
![单片机开发,报错 <b class='flag-5'>error</b>: #40: expected an identifier](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
KEIL ERROR L104
![KEIL <b class='flag-5'>ERROR</b> L104](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
"STM32-MDK: Error: L6915E: Library reports error: __use_no_semihosting was requested,"
!["STM32-MDK: <b class='flag-5'>Error</b>: L6915E: Library reports <b class='flag-5'>error</b>: __use_no_semihosting was requested,"](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
【GCC编译运行报错】error while loading
![【GCC编译运行报错】<b class='flag-5'>error</b> while loading](https://file.elecfans.com//web2/M00/64/B2/poYBAGMIVpuAP42VAADEgNPcSSM641.png)
MPLAB XC8编译器出现“fixup”错误怎么办
ABB高级编程Error Handler
![ABB高级编程<b class='flag-5'>Error</b> Handler](https://file1.elecfans.com/web2/M00/88/B4/wKgaomRwCgOAFTW2AAAX3dbnBCI564.png)
评论