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

在北京大学生做家教的网站淘宝网页

在北京大学生做家教的网站,淘宝网页,如何知道网站流量,可以做产品推广的软件有哪些以下内容源于朱有鹏嵌入式课程的学习与整理#xff0c;如有侵权请告知删除。 一、步骤总结 步骤1#xff1a;打开设备文件 步骤2#xff1a;获取设备信息 步骤3#xff1a;mmap函数做映射 步骤4#xff1a;填充framebuffer 二、步骤分析 1、打开设备文件 设备文件为/dev…以下内容源于朱有鹏嵌入式课程的学习与整理如有侵权请告知删除。 一、步骤总结 步骤1打开设备文件 步骤2获取设备信息  步骤3mmap函数做映射 步骤4填充framebuffer 二、步骤分析 1、打开设备文件 设备文件为/dev/fb0。 2、获取设备信息 应用层通过使用ioctl函数配合相关的命令码来获取想要的设备信息。 比如 ret ioctl(fd, FBIOGET_FSCREENINFO, finfo); 比如 ret ioctl(fd, FBIOPUT_VSCREENINFO, vinfo); 1LCD的硬件信息 相关硬件信息定义在x210_kernel\include\linux\fb.h文件中。 2struct fb_fix_screeninfo结构体 该结构体用来表示LCD的那些不可修改的属性比如物理分辨率等等。 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 reserved[3]; /* Reserved for future compatibility */ }; 在应用层使用ioctl函数来获取LCD设备那些不可修改的属性信息时所使用的命令码是FBIOGET_FSCREENINFO。因为这些属性信息是不可修改的所以不可能存在表示修改这些属性信息的命令码FBIOPUT__FSCREENINFO。 3struct fb_var_screeninfo 结构体 该结构体用来表示LCD的那些可以修改的属性比如屏幕的分辨率等等。 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 Graylevels instead of colors */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 *//* 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 FB_SYNC_* */__u32 vmode; /* see FB_VMODE_* */__u32 rotate; /* angle we rotate counter clockwise */__u32 reserved[5]; /* Reserved for future compatibility */ }; 在应用层使用ioctl函数来获取LCD设备那些可以修改的属性信息时所使用的命令码是FBIOGET_VSCREENINFO。因为这些属性信息可以修改所以存在表示对这些属性信息进行修改的命令码FBIOPUT__VSCREENINFO。 3、mmap函数做映射 在linux系统中使用“ man 2 mmap ”得知mmap函数的原型与用法。 函数原型 void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);参数说明 第一个参数表示映射到哪个物理地址写NULL表示自动分配第二个参数表示被映射的内存的大小第三个参数表示权限第四个参数表示当前的映射结果能否被多个进程共享第五个参数表示文件节点第六个参数表示偏移量。返回值表示映射结果的内存的开始地址。补充说明 需要包含头文件#include sys/mman.h 可以利用该函数把内核中那段作为显示缓冲区的内存映射到当前进程的用户空间。做完了mmap后fb在当前进程中就绪随时可以去读写LCD显示器。 4、填充framebuff的例子 例子1刷背景 使用四个字节表示一个像素即(0x)xx xx xx xx后三者表示RGB前一表示透明度 使用draw_back()函数来实现参数为屏幕的长度、宽度、颜色。 void draw_back(unsigned int width, unsigned int height, unsigned int color) {unsigned int x, y;for (y0; yheight; y){for (x0; xwidth; x){*(pfb y * WIDTH x) color;}} } 例子2写字、画线、图片显示等 见博客s5pv210——LCD的原理和实战_天糊土的博客-CSDN博客 三、代码与测试 1代码 #include stdio.h #include sys/types.h #include sys/stat.h #include fcntl.h #include linux/fb.h #include sys/ioctl.h #include sys/mman.h// 宏定义 #define FBDEVICE /dev/fb0// 旧开发板 //#define WIDTH 800 //#define HEIGHT 480 // 新开发板 #define WIDTH 1024 #define HEIGHT 600#define WHITE 0xffffffff // test ok #define BLACK 0x00000000 #define RED 0xffff0000 #define BLUE 0xff0000ff #define GREEN 0xff00ff00 // test ok #define GREENP 0x0000ff00 // 一样说明前2个ff透明位不起作用// 函数声明 void draw_back(unsigned int width, unsigned int height, unsigned int color); void draw_line(unsigned int color);// 全局变量 unsigned int *pfb NULL;int main(void) {int fd -1, ret -1;struct fb_fix_screeninfo finfo {0};struct fb_var_screeninfo vinfo {0};// 第1步打开设备fd open(FBDEVICE, O_RDWR);if (fd 0){perror(open);return -1;}printf(open %s success.\n, FBDEVICE);// 第2步获取设备的硬件信息ret ioctl(fd, FBIOGET_FSCREENINFO, finfo);if (ret 0){perror(ioctl);return -1;}printf(smem_start 0x%x, smem_len %u.\n, \finfo.smem_start, finfo.smem_len);ret ioctl(fd, FBIOGET_VSCREENINFO, vinfo);if (ret 0){perror(ioctl);return -1;}printf(xres %u, yres %u.\n, vinfo.xres, vinfo.yres);printf(xres_virtual %u, yres_virtual %u.\n,\vinfo.xres_virtual, vinfo.yres_virtual);printf(bpp %u.\n, vinfo.bits_per_pixel);// 修改驱动中屏幕的分辨率vinfo.xres 1024;vinfo.yres 600;vinfo.xres_virtual 1024;vinfo.yres_virtual 1200;ret ioctl(fd, FBIOPUT_VSCREENINFO, vinfo);if (ret 0){perror(ioctl);return -1;}// 再次读出来检验一下ret ioctl(fd, FBIOGET_VSCREENINFO, vinfo);if (ret 0){perror(ioctl);return -1;}printf(修改过之后的参数\n);printf(xres %u, yres %u.\n, vinfo.xres, vinfo.yres);printf(xres_virtual %u, yres_virtual %u.\n, \vinfo.xres_virtual, vinfo.yres_virtual);printf(bpp %u.\n, vinfo.bits_per_pixel);// 第3步进行mmapunsigned long len vinfo.xres_virtual * vinfo.yres_virtual *\vinfo.bits_per_pixel / 8;printf(len %ld\n, len);pfb mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);if (NULL pfb){perror(mmap);return -1;}printf(pfb %p.\n, pfb);//第4步填充framebuffdraw_back(WIDTH, HEIGHT, WHITE);//背景draw_line(RED);//线条close(fd);return 0; }void draw_back(unsigned int width, unsigned int height, unsigned int color) {unsigned int x, y;for (y0; yheight; y){for (x0; xwidth; x){*(pfb y * WIDTH x) color;}} }void draw_line(unsigned int color) {unsigned int x, y;for (x50; x600; x){*(pfb 200 * WIDTH x) color;} } 2测试 将上面的代码文件命名为app.c然后使用命令“ arm-linux-gcc app.c -o app ”进行编译接着在开发板系统上运行“./app.c”。
http://www.zqtcl.cn/news/525209/

相关文章:

  • 英铭网站建设网站如何推广引流
  • 关于电子商务网站建设的现状企业公示信息查询系统山西
  • 网站开发 翻译长春建站企业
  • dedecms网站网站解析一般什么时候
  • 制作网站的技术北京律师24小时电话
  • 可拖拽 网站建设如何做自媒体和网站签约赚点击
  • 做网站选哪个语言怎么登录百度app
  • 国发网站建设网站优化主要优化哪些地方
  • 快速微信网站开发定制网站建设费用预算
  • 网站制作叫什么知名网站建设制作
  • 网络营销网站建设公司h5应用
  • 网站开发合同要上印花税吗南江红鱼洞水库建设管理局网站
  • 疏通下水道网站怎么做wordpress 恢复初始化
  • 电脑商业网站怎的做软文推广渠道
  • 自己做网站需要买什么如何做微信商城网站
  • 有了网站开发app是不是更容易自建网站管理
  • 网站将要准备建设的内容有哪些做外贸有效的网站
  • 网站设计博客网站内容添加
  • 网站建站行业新闻微盟开店怎么收费
  • 网站的建设参考文献郑州网站建设中国建设建设银行
  • 重庆那些公司的网站是网易做的电信100m光纤做网站
  • 网站怎么设计产品营销策略包括哪些内容
  • 天元建设集团有限公司破产重组河源seo排名
  • 网站权重什么意思seo的搜索排名影响因素有
  • 建设报名系统是正规网站吗计算机培训班出来好找工作吗
  • 网站上的文章用秀米可以做吗宁波外客网络科技有限公司
  • 网站底部导航代码成品视频直播软件推荐哪个好一点ios
  • 上海电商网站开发公司垫江网站建设价格
  • 门户网站建设存在问题与不足商城网站开发项目文档
  • wordpress建站方便吗wordpress加入海报功能