我正在尝试在我的 Raspberry Pi 裸机操作系统上创建一个简单的 printf 函数。
函数现在是空的:
int kprintf(const char *string, ...) {
}
目前,我可以在屏幕上绘图。但是,我在调用这个函数时遇到了问题。 作为测试,我在调用 kprintf 之前在屏幕上绘制了几个字符。
如果我使用:
kprintf ("HELLO");
屏幕一片空白。但是,如果我使用:
kprintf ("HE");
一切正常。此时我唯一能想到的是,链接描述文件一定有问题。也许是 rodata 部分。
我正在使用来自剑桥 RPi 教程的修改后的链接描述文件:
STARTUP(crt0.o)
SECTIONS {
.init 0x8000 : {
*(.init)
}
.text 0x8080 : {
*(.text)
*(.rodata)
}
.data : {
*(.data)
}
.bss : {
*(.bss)
*(COMMON)
}
/DISCARD/ : {
*(*)
}
}
有什么想法吗?
最佳答案
仅供引用,如果我使用这个链接描述文件似乎没问题:
STARTUP(crt0.o)
SECTIONS {
.init 0x8000 : {
*(.init)
}
.text 0x9000 : {
*(.text)
*(.rodata)
*(COMMON)
}
.data : {
*(.data)
}
.bss : {
*(.bss)
}
/DISCARD/ : {
*(*)
}
}
希望这对以后的其他人有帮助
关于c - Raspberry Pi 上的 rodata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13909596/