Microchip
直播中

罗振炜

7年用户 177经验值
私信 关注
[问答]

编译代码得到错误消息

我使用的XC8与PIC18F26K80的一部分。我有几个功能,我想定位在ROM步调的一部分。在“项目属性>>XC8链接器>>附加选项>>额外链接器选项”中,我放置了以下字符串(减去括号)[-L-A_BC=200h-2000h,-L-P_bc=_BC]。在我的函数中,我使用了像这样的“Section”声明[void_.("_bc")Bootload(void)]。当我试图编译代码时,这是我得到的错误消息[0:(442)缺少-A规范中的地址]。我在这里哪里做错了?

回帖(3)

张桂英

2019-10-11 14:42:37
XC8的链接器选项非常棘手。如果要将引导加载程序放在flash的下半部分,我实际上建议与主应用程序分开编译和链接,因为引导加载程序和应用程序都需要它们自己的部分来初始化全局变量,通常您不希望这样做hem不能太紧密地耦合到一起。如果您没有在引导加载程序上工作,我不确定您为什么需要在ROM的特定部分中使用一些函数。但是首先您应该指定一个“--rom”参数,该参数具有排除特殊区域的范围列表。这防止全知代码生成器试图把东西放在那里。然后可以尝试添加这样的参数:-L-ABC=200h-2000h-L-pbc=BC第二个选项定义了名为“bc”的“psect”,这就是放置变量时实际要引用的内容。所以您的代码应该是这样的:void_.(“bc”)Bootload(void);实际上我没有用函数尝试过,但是我用RAM变量做了类似的事情,并且它工作了。
举报

罗茵

2019-10-11 14:49:19
嗯,我以为我已经回答了这个问题。不管是谁,在-L-选项之后删除逗号。逗号说,除了没有一个地址,还有更多的地址范围。而且我也不会在任何部分名称或链接器类中使用下划线。我忽略了一个事实,也许有更好的方法来做你以后。杰夫。
举报

陈游斗

2019-10-11 14:54:38
谢谢你的回复。我终于让我的引导加载程序代码工作。在XC8编译器手册中找到必要的信息是非常困难的,在某些情况下是不可能的。只有通过反复试验,我才知道如何输入多个链接器指令,需要空白空间来区分指令。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分