共2条
1/1 1 跳转至页
3K,876,873 3K程序,如何从876迁到873?

问
使用PICC,近3K程序,从876迁到873,连接错,如何处理?
用PIC16F876,
Memory Usage Map:
Program ROM $0000 - $0853 $0854 ( 2132) words
Program ROM $0D80 - $0FFF $0280 ( 640) words
$0AD4 ( 2772) words total Program ROM
Bank 0 RAM $0020 - $0049 $002A ( 42) bytes
Bank 0 RAM $0070 - $007C $000D ( 13) bytes
$0037 ( 55) bytes total Bank 0 RAM
Bank 1 RAM $00A0 - $00EA $004B ( 75) bytes total Bank 1 RAM
Bank 2 RAM $0110 - $0148 $0039 ( 57) bytes total Bank 2 RAM
Config Data $2007 - $2007 $0001 ( 1) words total Config Data
Program statistics:
Total ROM used 2772 words (33.8%)
Total RAM used 187 bytes (50.8%)
用PIC16F873,
Executing: "C:\HT-PIC\bin\PICc.exe" -E"tctrl.lde" "D:\SPR\tsoft\testhelp.obj" "D:\SPR\tsoft\aquisition.obj" "D:\SPR\tsoft\autocheck.obj" "D:\SPR\tsoft\delay.obj" "D:\SPR\tsoft\initsystem.obj" "D:\SPR\tsoft\innereeprom.obj" "D:\SPR\tsoft\isr.obj" "D:\SPR\tsoft\main.obj" "D:\SPR\tsoft\sms0601.obj" "D:\SPR\tsoft\tcontrol.obj" -M"tctrl.map" -O"tctrl.cof" -O"tctrl.hex" -Q -MPLAB -16F873
Warning[000] : psect rbss_2 not specified in -p option (first appears in C:\HT-PIC\LIB\PICrt412.obj)
Error[000] D:\SPR\tsoft\innereeprom.obj 22 : Fixup overflow in expression (loc 0x53E (0x502+60), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 22 : Fixup overflow in expression (loc 0x552 (0x502+80), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 22 : Fixup overflow in expression (loc 0x56A (0x502+104), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 24 : Fixup overflow in expression (loc 0x580 (0x580+0), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 26 : Fixup overflow in expression (loc 0x5F4 (0x5BE+54), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 28 : Fixup overflow in expression (loc 0x624 (0x5F6+46), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 31 : Fixup overflow in expression (loc 0x650 (0x644+12), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 31 : Fixup overflow in expression (loc 0x672 (0x644+46), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 31 : Fixup overflow in expression (loc 0x68A (0x644+70), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x69A (0x694+6), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6A8 (0x694+20), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6B4 (0x694+32), size 1, value 0x1F4)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6C6 (0x694+50), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6D0 (0x694+60), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 35 : Fixup overflow in expression (loc 0x6EE (0x6E8+6), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 35 : Fixup overflow in expression (loc 0x6FA (0x6E8+18), size 1, value 0x1EB)
Error[000] innereeprom.rlf 85 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 119 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 157 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 189 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 397 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 471 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 541 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 597 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 637 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 663 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 683 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 703 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1F4)
Error[000] innereeprom.rlf 731 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 745 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 745 : Too many errors
BUILD FAILED: Thu Sep 21 15:51:56 2006
请高人指点! 答 1: 回复!看看RAM吧,873的好像不够用! 答 2: 指针的问题问题:我编译得到这样的错误信息“Fixup error referencing ...”或者“Fixup error in expression ...”。这是什么意思,我该怎么做来解决这个错误?
解答:简单地说,这代表连接器被指示要去调整(修正Fixup)一个对存储位置的引用,这个计算出来的地址可能不适合可用的空间,比如,对一个字节(8位)的引用,要求装入一个比0xFF大的值。
典型地,这通常发生在使用PICC编译器,指针没有被恰当声明的时候,我们看个例子:
bank2 char ch;
char *ptr;
ptr = &ch; // fixup error
这里发生fixup error的原因是,“ptr”是bank0指针 - 它必须是指向bank2的指针才不会出错,如:
bank2 char *ptr;(译者注:bank0指针的地址是8位的[FSR],它可指向bank0和bank1共256字节的空间;而bank2指针,地址是9位的[IRP+FSR],它可指向bank2和bank3的高地址256字节的空间。本例中,尝试让一个bank0指针“ptr”来指向位于bank2里的ch,显然,ch的地址长度是和bank0指针不匹配的)
用PIC16F876,
Memory Usage Map:
Program ROM $0000 - $0853 $0854 ( 2132) words
Program ROM $0D80 - $0FFF $0280 ( 640) words
$0AD4 ( 2772) words total Program ROM
Bank 0 RAM $0020 - $0049 $002A ( 42) bytes
Bank 0 RAM $0070 - $007C $000D ( 13) bytes
$0037 ( 55) bytes total Bank 0 RAM
Bank 1 RAM $00A0 - $00EA $004B ( 75) bytes total Bank 1 RAM
Bank 2 RAM $0110 - $0148 $0039 ( 57) bytes total Bank 2 RAM
Config Data $2007 - $2007 $0001 ( 1) words total Config Data
Program statistics:
Total ROM used 2772 words (33.8%)
Total RAM used 187 bytes (50.8%)
用PIC16F873,
Executing: "C:\HT-PIC\bin\PICc.exe" -E"tctrl.lde" "D:\SPR\tsoft\testhelp.obj" "D:\SPR\tsoft\aquisition.obj" "D:\SPR\tsoft\autocheck.obj" "D:\SPR\tsoft\delay.obj" "D:\SPR\tsoft\initsystem.obj" "D:\SPR\tsoft\innereeprom.obj" "D:\SPR\tsoft\isr.obj" "D:\SPR\tsoft\main.obj" "D:\SPR\tsoft\sms0601.obj" "D:\SPR\tsoft\tcontrol.obj" -M"tctrl.map" -O"tctrl.cof" -O"tctrl.hex" -Q -MPLAB -16F873
Warning[000] : psect rbss_2 not specified in -p option (first appears in C:\HT-PIC\LIB\PICrt412.obj)
Error[000] D:\SPR\tsoft\innereeprom.obj 22 : Fixup overflow in expression (loc 0x53E (0x502+60), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 22 : Fixup overflow in expression (loc 0x552 (0x502+80), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 22 : Fixup overflow in expression (loc 0x56A (0x502+104), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 24 : Fixup overflow in expression (loc 0x580 (0x580+0), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 26 : Fixup overflow in expression (loc 0x5F4 (0x5BE+54), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 28 : Fixup overflow in expression (loc 0x624 (0x5F6+46), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 31 : Fixup overflow in expression (loc 0x650 (0x644+12), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 31 : Fixup overflow in expression (loc 0x672 (0x644+46), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 31 : Fixup overflow in expression (loc 0x68A (0x644+70), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x69A (0x694+6), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6A8 (0x694+20), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6B4 (0x694+32), size 1, value 0x1F4)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6C6 (0x694+50), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 33 : Fixup overflow in expression (loc 0x6D0 (0x694+60), size 1, value 0x1EB)
Error[000] D:\SPR\tsoft\innereeprom.obj 35 : Fixup overflow in expression (loc 0x6EE (0x6E8+6), size 1, value 0x1EC)
Error[000] D:\SPR\tsoft\innereeprom.obj 35 : Fixup overflow in expression (loc 0x6FA (0x6E8+18), size 1, value 0x1EB)
Error[000] innereeprom.rlf 85 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 119 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 157 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 189 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 397 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 471 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 541 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 597 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 637 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 663 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 683 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 703 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1F4)
Error[000] innereeprom.rlf 731 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EC)
Error[000] innereeprom.rlf 745 : Fixup overflow in expression (loc 0x4B (0x4B+0), size 1, value 0x1EB)
Error[000] innereeprom.rlf 745 : Too many errors
BUILD FAILED: Thu Sep 21 15:51:56 2006
请高人指点! 答 1: 回复!看看RAM吧,873的好像不够用! 答 2: 指针的问题问题:我编译得到这样的错误信息“Fixup error referencing ...”或者“Fixup error in expression ...”。这是什么意思,我该怎么做来解决这个错误?
解答:简单地说,这代表连接器被指示要去调整(修正Fixup)一个对存储位置的引用,这个计算出来的地址可能不适合可用的空间,比如,对一个字节(8位)的引用,要求装入一个比0xFF大的值。
典型地,这通常发生在使用PICC编译器,指针没有被恰当声明的时候,我们看个例子:
bank2 char ch;
char *ptr;
ptr = &ch; // fixup error
这里发生fixup error的原因是,“ptr”是bank0指针 - 它必须是指向bank2的指针才不会出错,如:
bank2 char *ptr;(译者注:bank0指针的地址是8位的[FSR],它可指向bank0和bank1共256字节的空间;而bank2指针,地址是9位的[IRP+FSR],它可指向bank2和bank3的高地址256字节的空间。本例中,尝试让一个bank0指针“ptr”来指向位于bank2里的ch,显然,ch的地址长度是和bank0指针不匹配的)
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
汽车+汽车电子电阻解释与分析被打赏5分 | |
分享汽车通信和多媒体总线结构被打赏20分 | |
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
NUCLEO-U083RC学习历程38+串口通过队列的方式输出两个字符串被打赏20分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
分享电控悬架的结构与工作原理(一)被打赏20分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 |