树莓派上的rodata

4

我正在为树莓派上的裸机操作系统制作一个简单的printf函数。

目前该函数为空:

int kprintf(const char *string, ...) {
}

目前,我已经能够在屏幕上绘制。但是,在调用此函数时遇到了问题。作为测试,在调用kprintf之前,我向屏幕上绘制了一些字符。

如果我使用:

kprintf ("HELLO");

屏幕是空白的。但是,如果我使用以下命令:
kprintf ("HE");

一切正常。目前我唯一能想到的是链接脚本可能出了问题。也许是rodata部分有问题。

我正在使用剑桥树莓派教程中修改过的链接脚本:

STARTUP(crt0.o)

SECTIONS {
    .init 0x8000 : {
        *(.init)
    }

    .text 0x8080 : {
        *(.text)
        *(.rodata)
    }

    .data : {
        *(.data)
    }

    .bss : {
        *(.bss)
        *(COMMON)
    }

    /DISCARD/ : {
        *(*)
    }
}

有什么想法吗?
1个回答

0

顺便说一下,如果我使用这个链接脚本似乎没问题:

STARTUP(crt0.o)

SECTIONS {
    .init 0x8000 : {
        *(.init)
    }

    .text 0x9000 : {
        *(.text)
        *(.rodata)
        *(COMMON)
    }

    .data : {
        *(.data)
    }

    .bss : {
        *(.bss)
    }

    /DISCARD/ : {
        *(*)
    }
}

希望这能帮助到未来的其他人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接