2012-12-17 138 views
4

我正在嘗試在我的裸機OS上爲樹莓派製作一個簡單的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/ : { 
     *(*) 
    } 
} 

任何想法?

回答

0

僅供參考,如果我用這個連接器腳本似乎確定:

STARTUP(crt0.o) 

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

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

    .data : { 
     *(.data) 
    } 

    .bss : { 
     *(.bss) 
    } 

    /DISCARD/ : { 
     *(*) 
    } 
} 

希望這可以幫助別人在未來

其他