山阳网站建设泰国vps
- 作者: 五速梦信息网
- 时间: 2026年03月21日 09:47
当前位置: 首页 > news >正文
山阳网站建设,泰国vps,如何做网站宣传自己,自己如何建设一个彩票网站# 前置知识 LCD 操作原理 在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。 Frame 是帧的意思#xff0c; buffer 是缓冲的意思#xff0c;这意味着 Framebuffer 就是一块内存#xff0c;里面保存着一帧图像。 Framebuffer 中保存着一帧图像的每一个像素颜色值…# 前置知识 LCD 操作原理 在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。 Frame 是帧的意思 buffer 是缓冲的意思这意味着 Framebuffer 就是一块内存里面保存着一帧图像。 Framebuffer 中保存着一帧图像的每一个像素颜色值假设 LCD 的分辨率是 1024x768每一个像素的颜色用 32 位来表示那么 Framebuffer 的大小就是 1024x768x32/83145728 字节。 假设需要设置 LCD 中坐标(x,y)处像素的颜色首要要找到这个像素对应的内存然后根据它的 BPP(像素深度 bits per pixel) 值设置颜色。假设 fb_base 是 APP 执行 mmap 后得到的 Framebuffer 地址可以用以下公式算出(x,y)坐标处像素对应的 Framebuffer 地址 (x y)像素起始地址fb_base(xres*bpp/8)*y x*bpp/8 对于 32BPP一般只设置其中的低 24 位高 8 位表示透明度一般的 LCD都不支持。 对于 24BPP硬件上为了方便处理在 Framebuffer 中也是用 32 位来表示效果跟 32BPP 是一样的。 对于 16BPP常用的是 RGB565 API 函数 ioctl 函数 ioctl 是设备驱动程序中设备控制接口函数一个字符设备驱动通常会实现设备打开、关闭、读、写等功能在一些需要细分的情境下如果需要扩展新的功能通常以增设 ioctl() 命令的方式实现。 int ioctl(int fd, unsigned long request, …);函数参数 参数描述fd文件描述符cmd交互协议设备驱动将根据 cmd 执行对应操作…可变参数 arg依赖 cmd 指定长度以及类型 返回值 EBADF d is not a valid descriptor. EFAULT argp references an inaccessible memory area. EINVAL Request or argp is not valid. ENOTTY d is not associated with a character special device. ENOTTY The specified request does not apply to the kind of object that the descriptor d references. mmap函数 void *mmap(void addr, size_t length, int prot, int flags,int fd, off_t offset); 函数参数 返回值 返回值类型int若成功映射将返回指向映射的区域的指针失败将返回-1 # 结构体详解 struct fb_fix_screeninfo主要用于获取FrameBuffer的固定信息这些信息无法在应用层被更改只能通过ioctl函数使用FBIOGET_FSCREENINFO去获取。 struct fb_fix_screeninfo定义 struct fb_fix_screeninfo {char id[16]; / identification string eg TT Builtin /unsigned long smem_start; / Start of frame buffer mem (physical address) /__u32 smem_len; / Length of frame buffer mem /__u32 type; / see FBTYPE* /__u32 type_aux; / Interleave for interleaved Planes /__u32 visual; / see FBVISUAL* / __u16 xpanstep; / zero if no hardware panning /__u16 ypanstep; / zero if no hardware panning /__u16 ywrapstep; / zero if no hardware ywrap /__u32 line_length; / length of a line in bytes /unsigned long mmio_start;/ Start of Memory Mapped I/O (physical address) /__u32 mmio_len; / Length of Memory Mapped I/O /__u32 accel; / Indicate to driver which*//*specific chip/card we have /__u16 capabilities; / see FBCAP* /__u16 reserved[2]; / Reserved for future compatibility */ };struct fb_fix_screeninfo字段说明 表格中提到的宏如FB_TYPE_PACKED_PIXELS、FB_VISUAL_TRUECOLOR、FB_ACCEL_NONE请查看 /usr/include/linux/fb.h 的相关定义。 字段名称描述附加说明id设备驱动名称smem_start显存起始物理地址smem_len显存大小type显卡类型一般为 FB_TYPE_PACKED_PIXELS(值为0,表示像素值紧密排 列)查看fb.h的 FBTYPEtype_aux附加类型查看fb.h的 FB_AUX_TEXT_MDAvisual色彩模式一般为 FB_VISUAL_TRUECOLOR(值为2,真彩色)xpanstep支持水平方向上的 PAN 显示 0不支持 非 0支持此时该值用于表示在水平方向上每步进的像素值默认为 1ypanstep支持垂直方向上的 PAN 显示 0不支持。 非 0支持此时该值用于表示在垂直方向上每步进的像素值。默认为 1ywrapstep该方式类似于 ypanstep不同之处在于当其显示到底部时能回到显存的开始处进行显示。默认为 0line_length每行字节数mmio_start显存映射 I/O 首地址默认为不支持mmio_len显存映射 I/O 长度默认为不支持accel显示所支持的硬件加速设备默认为 FB_ACCEL_NONE struct fb_var_screeninfo定义 struct fb_var_screeninfo {__u32 xres; / visible resolution /u32 yres;u32 xres_virtual; / virtual resolution /u32 yres_virtual;u32 xoffset; / offset from virtual to visible /__u32 yoffset; / resolution /__u32 bits_per_pixel; / guess what /__u32 grayscale; / 0 color, 1 grayscale,// 1 FOURCC/struct fb_bitfield red; / bitfield in fb mem if true color, /struct fb_bitfield green; / else only length is significant /struct fb_bitfield blue;struct fb_bitfield transp; / transparency / __u32 nonstd; / ! 0 Non standard pixel format /__u32 activate; / see FBACTIVATE* /__u32 height; / height of picture in mm /__u32 width; / width of picture in mm /__u32 accel_flags; / (OBSOLETE) see fb_info.flags // Timing: All values in pixclocks, except pixclock (of course) /__u32 pixclock; / pixel clock in ps (pico seconds) /__u32 left_margin; / time from sync to picture /__u32 right_margin; / time from picture to sync /__u32 upper_margin; / time from sync to picture /u32 lower_margin;u32 hsync_len; / length of horizontal sync/__u32 vsync_len; / length of vertical sync /__u32 sync; / see FBSYNC* /__u32 vmode; / see FBVMODE* /__u32 rotate; / angle we rotate counter clockwise /__u32 reserved[5]; / Reserved for future compatibility / };struct fb_var_screeninfo字段说明 表格中提到的宏和结构体请查看 /usr/include/linux/fb.h 的相关定义。 获取 fb_fix_screeninfo和fb_var_screeninfo信息 #include sys/mman.h #include sys/types.h #include sys/stat.h #include unistd.h #include linux/fb.h #include fcntl.h #include stdio.h #include string.h #include sys/ioctl.h/ fb_var_screeninfo info */ static int fd_fb; static struct fb_var_screeninfo var; static int screen_size; static unsigned char fb_base; static unsigned int line_width; static unsigned int pixel_width;/ fb_fix_screeninfo info */ static struct fb_var_screeninfo finfo;int main(int argc, char **argv) {int i;fd_fb open(/dev/fb0, O_RDWR);if (fd_fb 0){printf(cant open /dev/fb0\n);return -1;}if (ioctl(fd_fb, FBIOGET_VSCREENINFO, var)){printf(cant get var\n);return -1;}if (ioctl(fd_fb, FBIOGET_FSCREENINFO, finfo) 0){fprintf(stderr, ioctl FBIOGET_FSCREENINFO err \r\n);return -1;}line_width var.xres * var.bits_per_pixel / 8;pixel_width var.bits_per_pixel / 8;screen_size var.xres * var.yres * var.bits_per_pixel / 8;/* 映射 Framebuffer */fb_base (unsigned char *)mmap(NULL , screen_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd_fb, 0);if (fb_base (unsigned char *)-1){printf(cant mmap\n);return -1;}munmap(fb_base , screen_size);close(fd_fb);return 0; }
- 上一篇: 山西中宇建设集团网站番禺网站建设三杰科技
- 下一篇: 删除wordpress站果盘游戏推广平台
相关文章
-
山西中宇建设集团网站番禺网站建设三杰科技
山西中宇建设集团网站番禺网站建设三杰科技
- 技术栈
- 2026年03月21日
-
山西响应式网站设计企业部门网站建设流程
山西响应式网站设计企业部门网站建设流程
- 技术栈
- 2026年03月21日
-
山西网站制作平台亦庄网站设计
山西网站制作平台亦庄网站设计
- 技术栈
- 2026年03月21日
-
删除wordpress站果盘游戏推广平台
删除wordpress站果盘游戏推广平台
- 技术栈
- 2026年03月21日
-
删除网站备案关键字参数
删除网站备案关键字参数
- 技术栈
- 2026年03月21日
-
删除西部数码网站管理助手网站备案登陆
删除西部数码网站管理助手网站备案登陆
- 技术栈
- 2026年03月21日
