我需要在 8051 微控制器中使用代码库来适应所有代码。SDCC 说它支持它,但是我在链接步骤中遇到了麻烦。
我有一个包含 3 个文件的测试项目:main.c、func1.c 和 bank.asm。主函数应该调用 func1() 然后进入一个 while 循环。但 func1() 位于不同的代码库中。
// main.c
int func1(void) banked;
void main()
{
int i = func1();
while(i)
{
}
}
// func1.c
#pragma codeseg BANK1
int func1(void) {
return 99; }
//bank.asm
.area HOME (CODE)
.area GSINIT0 (CODE)
.area GSINIT1 (CODE)
.area GSINIT2 (CODE)
.area GSINIT3 (CODE)
.area GSINIT4 (CODE)
.area GSINIT5 (CODE)
.area GSINIT (CODE)
.area GSFINAL (CODE)
.area CSEG (CODE)
.area HOME (CODE)
__sdcc_banked_call::
ret ;make the call
__sdcc_banked_ret::
ret ;return to caller
我有一个构建批处理文件来编译所有内容并将它们链接在一起。
sdcc -c func1.c
sdcc -c main.c
asx8051 -ol bank.asm
sdcc "-Wl -b BANK1=0x018000" main.rel func1.rel bank.rel
我收到此链接器错误:
?ASlink-Error-Insufficient ROM/EPROM/FLASH memory.
我怎样才能得到这个链接?