画面に描画するRaspberry Pi用の小さなベアメタルプログラムがあります。私は C を使用しており、GCC をコンパイラとして使用し、Yagarto を ARM ツール チェーンとして使用しています。
現在、GPUが読み取るフレームバッファ構造を宣言するヘッダー(gpu.h)があります(解像度とビット深度が含まれています)。GPU は、描画先のポインターを含め、構造体に値を入力します。
struct frame_buffer {
int width;
int height;
int vwidth;
int vheight;
int bytes;
int depth;
int ignorex;
int ignorey;
int pointer;
int size;
};
extern struct frame_buffer framebuf;
構造体は (関数内ではなく) main.c で定義されます。
struct frame_buffer framebuf __attribute__ ((aligned (16))) = {GPU_HRES, GPU_VRES, GPU_HRES, GPU_VRES, 0, GPU_BITDEPTH, 0, 0, 0, 0};
また、main.c には、画面に文字を描画する関数 (draw_char) と、draw_char 関数を使用する putchar() の独自の実装があります。現在、これは正常に機能しています。
draw_char 関数を別のファイルに移動すると、すべて正常にコンパイルされますが、画面には何も描画されません。
構造体がグローバルに利用できないと思うので、ポインタが正しくありません。
これを修正するために何をすべきかについてのアイデアはありますか?
ありがとうございました