当前位置: 首页 > news >正文

企业内部门户网站建设方案如何做好网站的优化的监测评价

企业内部门户网站建设方案,如何做好网站的优化的监测评价,网站开发的接口文档,微信文章链接wordpress文章目录 前言一、framebuffer简介二、framebuffer接口1.framebuffer设备描述信息2.framebuffer访问接口3.查询/设置可更改信息 三、使用步骤 前言 前段时间由于笔记本没有保管好#xff0c;LCD显示屏压碎了。于是#xff0c;将笔记本电脑拆开查看LCD型号。在淘宝上下单买了… 文章目录 前言一、framebuffer简介二、framebuffer接口1.framebuffer设备描述信息2.framebuffer访问接口3.查询/设置可更改信息 三、使用步骤 前言 前段时间由于笔记本没有保管好LCD显示屏压碎了。于是将笔记本电脑拆开查看LCD型号。在淘宝上下单买了块新的给老伙计重新装上了。又给笔记本重新装了系统这个过程甚是艰辛。本来是想装WIN10 X64系统的制作好U盘启动后程序卡在了win10的启动界面。本来以为可能是内存不够在网上下单又购买了4G内存条给笔记本换上。装好内存条后笔记本的运行速度确实有所提升。但是安装win10 仍然是同样的情况。看来是CPU的性能不够打算升级CPU。在网上查阅了很多关于升级CPU的帖子最终结论是主板南桥芯片H55限制了CPU只能选择一代CPU。一代CPU都是双核四线程的对性能提升应该不是很大。基于此重新安装回win 7 x64旗舰版。装软件的时候发现win7 跟 XP一样很多软件都不适用了。而且还有大量的补丁。最终选择了给它装上ubuntu 22.04。于是有了本文的硬件基础本文就是在这台x86_64 ubuntu22.04上做的实验。 一、framebuffer简介 framebuffer是对LCD显示屏的硬件抽象通过对framebuffer的操作可以直接显示到LCD上。framebuffer是一个字符设备它向上为用户层提供统一的访问接口向下屏蔽底层各类硬件显示设备的差异提高framebuffer设备应用程序的兼容性和可移植性。 framebuffer是一个标准的字符设备主设备号为29。linux系统最大支持32个framebuffer设备次设备号一般从0开始依次为0到31。与其它设备一样设备节点位于/dev目录下面一般命名为fbx。例如/dev/fb0。 二、framebuffer接口 对于framebuffer应用程序开发不需关心底层的具体实现只需知道具体访问接口、数据结构以及显示设备的一些必要信息即可开发应用程序。 1.framebuffer设备描述信息 framebuffer设备信息包括两部分分别是不可更改和可更改信息。设备信息描述数据结构位于“include/uaip/linux/fb.h”中声明。 不可更改信息描述的是显示设备的固有属性、物理内存地址、物理内存大小等等对于应用层来说该部分信息可以用来查询显示设备固有属性信息对于具体应用过程关联性不大。 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 FB_TYPE_* / __u32 type_aux; / Interleave for interleaved Planes / __u32 visual; / see FB_VISUAL_* / __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 FB_CAP_* / __u16 reserved[2]; / Reserved for future compatibility */ }; 第二部分可更改的信息涉及显示设备物理分辨率、虚拟分辨率、像素位宽这部分信息在应用编程需要关注的以计算显示位置、颜色、映射内存等等。该部分也设计显示设备的固有信息但应用程序可以通过接口修改。 struct fb_var_screeninfo{__u32 xres; /* 可视分辨率(物理分辨率) */__u32 yres;__u32 xres_virtual; /* 虚拟分辨率 */__u32 yres_virtual;__u32 xoffset; /* 虚拟分辨率相对可视分配率偏移值 */__u32 yoffset; __u32 bits_per_pixel; /* 像素位宽每个像素用多少未表示 */__u32 grayscale; /* 灰度等级0表示彩色1表示灰度黑白屏*//* 缓存RGB位域 */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 FB_ACTIVATE_* */__u32 height; /* height of picture in mm */__u32 width; /* width of picture in mm */__u32 accel_flags; /* (OBSOLETE) see fb_info.flags *//* 实际显示屏LCD参数根据LCD手册设置用户层一般不用更改 */__u32 pixclock; /* 像素时钟 */__u32 left_margin; /* 显示设备水平方向前肩单位时钟 */__u32 right_margin; /* 显示设备水平方向后肩单位时钟 */__u32 upper_margin; /* 显示设备垂直方式前肩单位行 */__u32 lower_margin; /* 显示设备垂直方向后肩单位行 */__u32 hsync_len; /* 显示设备水平方向有效区域单位时钟 */__u32 vsync_len; /* 显示设备垂直方向有效区域单位行 */__u32 sync; /* see FB_SYNC_* */__u32 vmode; /* see FB_VMODE_* */__u32 rotate; /* angle we rotate counter clockwise */__u32 colorspace; /* colorspace for FOURCC-based modes */__u32 reserved[4]; /* Reserved for future compatibility */}framebuffer应用程序开发主要关注的的成员参数是物理分辨率、像素位宽。物理分辨率和像素位宽决定了映射内存的大小如一个LCD分辨率为1024768、像素位宽为32位则需要的内存空间大小为1024768*32/83145728字节。 2.framebuffer访问接口 framebuffer设备是一个标准的linux字符设备可以通过标准虚拟文件接口open/read/write/ioctl/close访问。设备访问分为两部分数据分别是控制数据流和显示数据流传。对控制数据流通过ioctl结合指定命令实现对于显示流数据由于数据量比较大结合mmap函数将framebuffer物理内存映射到用户态直接访问物理内存。 ioctlfd, cmd, param; /* 文件描述符 命令字 参数信息 */ framebuffer设备ioctl命令位于“include/uapi/linux/fb.h”定义。/* include/uaip/linux/fb.h *//* ioctls0x46 is F */#define FBIOGET_VSCREENINFO 0x4600 /* 查询显示设备可更改信息 */#define FBIOPUT_VSCREENINFO 0x4601 /* 设置显示设备可更改信息 */#define FBIOGET_FSCREENINFO 0x4602 /* 查询显示设备不可更改信息 */#define FBIOGETCMAP 0x4604#define FBIOPUTCMAP 0x4605#define FBIOPAN_DISPLAY 0x4606......3.查询/设置可更改信息 函数原型 int ioctl(int fd, int cmd, struct fb_var_screeninfo *var); cmd命令字FBIOGET_VSCREENINFO var设备可更改信息数据结构 返回成功返回0失败返回-1错误码存于errno中 获取显示设备可更改信息伪代码 int fb 0; struct fb_var_screeninfo var; fb open(“/dev/fb0”, O_RDWR); if (fb 0) { printf(“open fb device failed:%s\n”,strerror(errno)); return -1; } if (ioctl(fb, FBIOGET_VSCREENINFO, var)) { printf(“read fb device param failed:%s\n”,strerror(errno)); return -1; } 查询不可更改信息 函数原型 int ioctl(int fd, int cmd, struct fb_fix_screeninfo *var); cmd命令字FBIOGET_FSCREENINFO var设备不可更改信息数据结构 返回成功返回0失败返回-1错误码存于errno中 获取显示设备不可更改信息伪代码 int fb 0; struct fb_fix_screeninfo fix; fb open(“/dev/fb0”, O_RDWR); if (fb 0) { printf(“open fb device failed:%s\n”,strerror(errno)); return -1; } if (ioctl(fb, FBIOGET_FSCREENINFO, fix)) { printf(“read fb device param failed:%s\n”,strerror(errno)); return -1; } 三、使用步骤 应用程序访问一个framebuffer设备的的总体流程如下图。 实例 获取framebuffer设备信息 “红—绿—蓝” 1秒周期循环刷新输出 ##include stdint.h #include stdio.h #include unistd.h #include stdlib.h #include string.h #include fcntl.h #include errno.h #include sys/mman.h #include sys/ioctl.h #include sys/mman.h #include sys/types.h #include sys/stat.h #include linux/fb.h struct _fb_info { int fd; /* framebuffer 文件描述符 / uint8_t pbuf; / 映射内存 / struct fb_fix_screeninfo fix; struct fb_var_screeninfo var;/ framebuffer设备信息/ }; struct _fb_info fb_app {0}; /* 画点函数 */ static void draw_pixel(struct _fb_info *fb, int x, int y, uint32_t color) { uint8_t *poffset_buf NULL; poffset_buf fb-pbuf (x*fb-var.bits_per_pixel/8) (y*fb-var.xres*fb-var.bits_per_pixel/8); /* 计算内存偏移地址 */ *(uint32_t*)poffset_buf color; /* ARGB32格式 */} /* 全屏画点函数 */ static void fill_pixel(struct _fb_info *fb, uint32_t color) { int i, j; for (i0; ifb-var.xres; i ) {for (j0; jfb-var.yres; j ) {draw_pixel(fb, i, j, color);} }} int main(int argc, char *argv[]) { int ret 0; int mem_size 0; if (argc 2) {printf(parameter invalid\n);return -1; }fb_app.fd open(argv[1], O_RDWR); if (fb_app.fd 0) {printf(open device [%s] failed:%s\n, argv[1], strerror(errno));return -1; } printf(framebuffer device:%s\n, argv[1]);/* 读取不可更改信息 */ ret ioctl(fb_app.fd, FBIOGET_FSCREENINFO, fb_app.fix); if (ret 0) {printf(read fb device fscreeninfo failed:%s\n, strerror(errno));close(fb_app.fd);return -1; } printf(device id:%s\n, fb_app.fix.id); printf(smem_start:0x%x, smem_len:%u\n, fb_app.fix.smem_start, fb_app.fix.smem_len); /* 读取可更改信息 */ ret ioctl(fb_app.fd, FBIOGET_VSCREENINFO, fb_app.var); if (ret 0) {printf(read fb device vscreeninfo failed:%s\n, strerror(errno));close(fb_app.fd);return -1; } printf(visible resolution:%d*%d\n, fb_app.var.xres, fb_app.var.yres); printf(virtual resolution:%d*%d\n, fb_app.var.xres_virtual, fb_app.var.yres_virtual); printf(pixel bits wide:%d\n, fb_app.var.bits_per_pixel); printf(grayscale:%d\n, fb_app.var.grayscale);mem_size fb_app.var.xres * fb_app.var.yres * fb_app.var.bits_per_pixel / 8; /* 计算内存 */ fb_app.pbuf (uint8_t *)mmap(NULL, mem_size, PROT_READ|PROT_WRITE, MAP_SHARED, fb_app.fd, 0); if (fb_app.pbuf NULL) {printf(fb device mmap failed:%s\n, strerror(errno));close(fb_app.fd);return -1; } memset(fb_app.pbuf, 0, mem_size); /* 清屏操作黑屏*/ for (;;) {fill_pixel(fb_app, 0xffff0000);/* 红 */sleep(1);fill_pixel(fb_app, 0xff00ff00);/* 绿 */sleep(1);fill_pixel(fb_app, 0xff0000ff);/* 蓝 */sleep(1); } munmap(fb_app.pbuf, mem_size); close(fb_app.fd);return 0; }
http://www.dnsts.com.cn/news/33352.html

相关文章:

  • 设计网站会员哪个好用万网空间登录
  • wordpress 本地慢快速排名优化系统
  • 佛山企业网站建设电话网站设计培训学院
  • 大学生建设网站国内网站建设最好公司
  • 莆田个人外贸网站建设智慧建设网站
  • 西宁设计网站建设网站备案流程阿里云
  • seo网站优化插件销售网站排名
  • 网站打不开 ...在线crm在线oa免费观看
  • 如何做网站轮播图和菜单全屏公司网站未备案吗
  • 网站开发佛山给一瓶水做网站
  • 网站积分方案营销网站型建设多少钱
  • 普斯泰网站建设电力建设期刊网站投稿
  • myeclipse做网站快手免费推广软件
  • 福州网站建设个人兼职南昌网站建设行业现状
  • 做网站前需要准备什么软件成都十大营销策划公司
  • 聊城网站那家做的好网页设计与网站制作知识框架
  • 胶州网站建设dch100wordpress很好的博客
  • 央企网站开发网页生成视频
  • 创研科技做网站怎么样网站建设的实践目的
  • 网站流量工具wordpress分类排版
  • 长沙市做网站公司去香洲会变黄码吗
  • 南充建设网站社科联网站建设
  • 网站备案核验单怎么填视频拍摄脚本模板
  • 最好的网站建设用途天津北辰做网站
  • 重庆php网站建设网络设计的关键是什么
  • 如何引导企业老板做网站要维护公司的网站该怎么做
  • 做网站需要做数据库室内设计心得体会800字
  • 辽宁省水利建设市场信用信息平台网站代理ip地址
  • 注册的网站空间设计网站公司
  • 甜品蛋糕网站建设策划书如何用python打开wordpress