|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
请用过KEIL编C51程序的朋友们帮我这个菜鸟个忙,谢谢 |
作者:sundance 栏目:嵌入式系统 |
我用KEIL编译了一段C51的程序为了芯片AT89C52,当时选择的是BL51作为LINKER, 编译的时候没有出任何错误. 命令为: C:\KEIL\C51\BIN\BL51.EXE .\STARTUP.obj, CRT2401ANC.obj TO UartControlTest 但是看MAP的时候,发现它有一个很大的GAP在CODE区域,情况如下: * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" DATA 0008H 000AH UNIT ?DT?CRT2401ANC DATA 0012H 0003H UNIT _DATA_GROUP_ IDATA 0015H 0001H UNIT ?STACK * * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE 0003H 07FDH *** GAP *** CODE 0800H 004BH INBLOCK ?PR?SYSTEM_INIT?CRT2401ANC 因为AT89C52自身所带的ROM也只有800H,所以在烧入到芯片的时候,只有前面4个字节烧入到了ROM中。 于是我又尝试了另一种办法,就是在命令行中加入范围,命令如下: C:\KEIL\C51\BIN\BL51.EXE .\STARTUP.obj, CRT2401ANC.obj TO UartControlTest CODE (0X0000-0X07FF) 但是这样一来,就出现了错误,错误为: ADDRESS SPACE OVERFLOW, SPACE DATA。MAP里的内容为: * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" DATA 0008H 000AH UNIT ?DT?CRT2401ANC DATA 0012H 0003H UNIT _DATA_GROUP_ IDATA 0015H 0001H UNIT ?STACK * * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE 请问,为什么会出现这样的问题呀? 我是个新手,这个问题快把我弄死了。:S 请大家帮帮忙。非常感谢。:) |
2楼: | >>参与讨论 |
作者: computer00 于 2006/5/23 23:31:00 发布:
89C52可是有8K字节的FLASH,即0x1FFF |
3楼: | >>参与讨论 |
作者: sundance 于 2006/5/24 9:28:00 发布:
不好意思,我说错了,我用的芯片是AT89C2051。 哦,我说错了,我用的芯片是AT89C2051。不好意思。 我主要是觉得很奇怪,为什么一定要有一个那么大的GAP在 CODE MEMORY. |
4楼: | >>参与讨论 |
作者: sundance 于 2006/6/4 21:45:00 发布:
我自己顶一下 请大家帮帮忙,谢谢了 |
5楼: | >>参与讨论 |
作者: 王紫豪 于 2006/6/5 10:49:00 发布:
程序贴一下,编译信息贴一下!估计是 data区溢出了 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |