我正在尝试在我的裸机操作系统上为Raspberry Pi制作一个简单的printf函数。
此功能现在为空:
int kprintf(const char *string, ...) {
}
目前,我可以绘制到屏幕上。但是,在调用此函数时遇到问题。 作为测试,我在调用kprintf之前在屏幕上绘制了几个字符。
如果我使用:
kprintf ("HELLO");
屏幕空白。但是,如果我使用:
kprintf ("HE");
一切都好。在这一点上我唯一能想到的是链接器脚本一定存在问题。也许是rodata部分。
我正在使用Cambridge RPi教程中修改过的链接器脚本:
STARTUP(crt0.o)
SECTIONS {
.init 0x8000 : {
*(.init)
}
.text 0x8080 : {
*(.text)
*(.rodata)
}
.data : {
*(.data)
}
.bss : {
*(.bss)
*(COMMON)
}
/DISCARD/ : {
*(*)
}
}
有什么想法吗?
答案 0 :(得分:0)
仅供参考,如果我使用此链接描述文件,似乎没问题:
STARTUP(crt0.o)
SECTIONS {
.init 0x8000 : {
*(.init)
}
.text 0x9000 : {
*(.text)
*(.rodata)
*(COMMON)
}
.data : {
*(.data)
}
.bss : {
*(.bss)
}
/DISCARD/ : {
*(*)
}
}
希望这对未来的其他人有所帮助