我有一个用于 Raspberry Pi 的小型裸机程序,它可以绘制到屏幕上。我使用 C,GCC 作为编译器,Yagarto 作为 ARM 工具链。
目前,我有一个标头(gpu.h),它声明了 GPU 读取的帧缓冲区结构(它包含分辨率和位深度)。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),以及我自己的 putchar() 实现,它使用 draw_char 函数。目前这工作正常。
如果我将 draw_char 函数移动到另一个文件,一切都可以编译,但没有任何东西被绘制到屏幕上。
我认为该结构在全球范围内不可用,因此指针不正确。
关于我应该做些什么来解决这个问题的任何想法?
谢谢