4

RaspberryPiのベアメタルOSで簡単なprintf関数を作成しようとしています。

関数は現在空です:

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

現在、画面に描画することができます。ただし、この関数を呼び出すときに問題が発生します。テストとして、kprintfを呼び出す前に、画面にいくつかの文字を描画します。

私が使用する場合:

kprintf ("HELLO");

画面が空白です。ただし、使用する場合:

kprintf ("HE");

全て大丈夫。この時点で私が考えることができる唯一のことは、リンカースクリプトに問題があるに違いないということです。おそらくrodataセクション。

CambridgeRPiチュートリアルの変更されたリンカースクリプトを使用しています。

STARTUP(crt0.o)

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

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

    .data : {
        *(.data)
    }

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

    /DISCARD/ : {
        *(*)
    }
}

何か案は?

4

1 に答える 1

0

参考までに、このリンカー スクリプトを使用すると問題ないようです。

STARTUP(crt0.o)

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

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

    .data : {
        *(.data)
    }

    .bss : {
        *(.bss)
    }

    /DISCARD/ : {
        *(*)
    }
}

これが将来他の誰かに役立つことを願っています

于 2012-12-30T01:26:04.647 に答える