本节程序的目的是:打开 LCD 设备节点,获取分辨率等参数,映射 Framebuffer,最后实现描点函数。
5.2.1 open 函数
在 Ubuntu 中执行“man 2 open”,可以看到 open 函数的说明:

头文件:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
函数原型:
int open(const char *pathname, int flags); int open(const char
*pathname, int flags, mode_t mode);
函数说明:
① pathname 表示打开文件的路径;
② Flags 表示打开文件的方式,常用的有以下 6 种,
a. O_RDWR 表示可读可写方式打开;
b. O_RDONLY 表示只读方式打开;
c. O_WRONLY 表示只写方式打开;
d. O_APPEND 表示如果这个文件中本来是有内容的,则新写入的内容会接续到原来内容的后面;
e. O_TRUNC 表示如果这个文件中本来是有内容的,则原来的内容会被丢弃,截断;
f. O_CREAT 表示当前打开文件不存在,我们创建它并打开它,通常与 O_EXCL 结合使用,当没有文件时
创建文件,有这个文件时会报错提醒我们;
③ Mode 表示创建文件的权限,只有在 flags 中使用了 O_CREAT 时才有效,否则忽略。
④ 返回值:打开成功返回文件描述符,失败将返回-1。
5.2.2 ioctl 函数
在 Ubuntu 中执行“man ioctl”,可以看到 ioctl 函数的说明:

头文件:
#include <sys/ioctl.h>
函数原型:
int ioctl(int fd, unsigned long request, ...);
函数说明:
① fd 表示文件描述符;
② request 表示与驱动程序交互的命令,用不同的命令控制驱动程序输出我们需要的数据;
③ … 表示可变参数 arg,根据 request 命令,设备驱动程序返回输出的数据。
④ 返回值:打开成功返回文件描述符,失败将返回-1。
ioctl 的作用非常强大、灵活。不同的驱动程序内部会实现不同的 ioctl,APP 可以使用各种 ioctl 跟驱动程序交互:可以传数据给驱动程序,也可以从驱动程序中读出数据。
5.2.3 mmap 函数
在 Ubuntu 中执行“man mmap”,可以看到 mmap 函数的说明:

想更深刻地理解 mmap 的内部机制,可以看《嵌入式 Linux 驱动开发基础知识》中关于 mmap 的介绍。作为 APP 开发,只需要知道它的用法就可以了。
头文件:
#include <sys/mman.h>
函数原型:
void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);
函数说明:
① addr 表示指定映射的內存起始地址,通常设为 NULL 表示让系统自动选定地址,并在成功映射后返回该
地址;
② length 表示将文件中多大的内容映射到内存中;
③ prot 表示映射区域的保护方式,可以为以下 4 种方式的组合
a. PROT_EXEC 映射区域可被执行
b. PROT_READ 映射区域可被读出
c. PROT_WRITE 映射区域可被写入
d. PROT_NONE 映射区域不能存取
④ Flags 表示影响映射区域的不同特性,常用的有以下两种
a. MAP_SHARED 表示对映射区域写入的数据会复制回文件内,原来的文件会改变。
b. MAP_PRIVATE 表示对映射区域的操作会产生一个映射文件的复制,对此区域的任何修改都不会写回 原来的文件内容中。 ⑤ 返回值:若成功映射,将返回指向映射的区域的指针,失败将返回-1。


百问网技术论坛:http://bbs.100ask.net/
百问网官方wiki(资料下载):http://wiki.100ask.org/
线上课堂:https://www.100ask.net/index
百问网开发板:
淘宝:https://100ask.taobao.com/
天猫:https://weidongshan.tmall.com/
技术交流群(鸿蒙开发/Linux/嵌入式/驱动/资料下载)
QQ群:869222007
单片机-嵌入式Linux交流群:
QQ群:536785813

http://weixin.qq.com/r/M0hvd2-EwjK9rSsU9x0h (二维码自动识别)

百问科技公众号

http://weixin.qq.com/r/nkx-Z6jEa-UUrewE9xmM (二维码自动识别)

百问科技服务号

length函数的头文件_Framebuffer 应用编程中涉及的 API 函数相关推荐

  1. strlen函数在哪个头文件_第二十七中、字符串处理函数-strlen、strcat、strncat

    接下来几章我们来了解下常用的字符串处理函数,要使用这些函数需要引入头文件string.h. 1. strlen函数 strlen函数可以得到字符串的实际长度.它的函数原型是: size_t strle ...

  2. 标准C函数库头文件、POSIX标准库头文件和Windows API函数库头文件说明

    1. 标准C函数库头文件 名字 源自 描述 <assert.h> 包含断言宏,被用来在程序的调试版本中帮助检测逻辑错误以及其他类型的bug. <complex.h> C99 一 ...

  3. c++常用函数所在头文件一览

    c++常用函数所在头文件一览 函数           包含              类别              功能 _atold             math.h            ...

  4. 【Android 内存优化】libjpeg-turbo 函数库交叉编译与使用 ( 交叉编译脚本编写 | 函数库头文件拷贝 | 构建脚本配置 | Android Studio 测试函数库 )

    文章目录 一.交叉编译 Shell 脚本参考 二.NDK r16b 版本配置 三.libjpeg-turbo 交叉编译 Shell 脚本 四.执行 libjpeg-turbo 交叉编译 Shell 脚 ...

  5. c+pow函数的头文件_pow()函数以及C ++中的示例

    c+pow函数的头文件 C ++ pow()函数 (C++ pow() function) pow() function is a library function of cmath header ( ...

  6. c语言 recv_sin,C++_C语言中经socket接收数据的相关函数详解,recv()函数: 头文件:#incl - phpStudy...

    C语言中经socket接收数据的相关函数详解 recv()函数:头文件: #include #include 定义函数: int recv(int s, void *buf, int len, uns ...

  7. linux延时函数及头文件,linux延时函数

    应用程序的延时函数: 头文件: #include 函数:unsigned int sleep (unsigned int seconds);//n秒 此外:int usleep (useconds_t ...

  8. [Cherno C++ 笔记 P1~P10]安装、链接器、变量、函数、头文件

    [Cherno C++ 笔记 P1~P10]安装.链接器.变量.函数.头文件 系列博客 前言 视频链接 P1~P4 安装部分 P5 C++是如何工作的 第一个C++程序 代码如何编译为二进制文件 第一 ...

  9. 单片机sleep函数的头文件_C语言中的sleep() 函数

    展开全部 关于sleep()函数在windows系统和linux系统下是两个不同的函数,差别较大,但功能是相同的,都是将进程挂起e68a8462616964757a686964616f31333337 ...

最新文章

  1. java中ssh如何理解
  2. 边工作边刷题:70天一遍leetcode: day 3
  3. SAP ERP里如何创建一个新的material类型
  4. 装逼 | 10个JS精简代码无形装逼集合,最为致命,记得收藏好
  5. 用谷歌浏览器来模拟手机浏览器
  6. linux系统安装redis,外部无法访问
  7. pip 源使用阿里云镜像加速
  8. BScroll 使用(Vue)
  9. 示波器wvf导入matlab,运动控制系统实验
  10. 关于服务器等级的正确的是什么,腾讯天龙八部手游服务器等级限制是什么
  11. python3 打点计时
  12. virtualbox-修改硬盘的序列号等信息
  13. NFDATA定义的一个细节
  14. iOS转前端之如何适配不同屏幕尺寸方案
  15. 2014522420145238 《信息安全系统设计基础》 第五次实验
  16. 如何在Android上玩经典复古游戏
  17. 阅读--收集--尝试
  18. Real-Time Loop Closure in 2D LIDAR SLAM 翻译和总结(一)
  19. kali win10双系统_win10安装kalilinux双系统详细步骤
  20. Retrace AV推出新型涂料添加剂,可在30分钟内灭杀新冠病毒

热门文章

  1. html5折叠卡片,基于HTML5折叠卡片式下拉菜单代码
  2. 优先队列默认是小顶堆吗_一分钟带你读懂什么是堆?
  3. android 抓取webview中的所有图片_如何一键提取PDF文档中的所有图片?
  4. android对象申明,Kotlin中的对象表达式和对象声明的具体使用
  5. python程序显示自己的版权_手把手教你Pycharm皮肤主题及个性化设置,python程序员必备-Go语言中文社区...
  6. LaTeX:equation, aligned 书写公式换行,顶部对齐
  7. 面试题2021-2-24
  8. linux基本命令以及命令常用选项
  9. 【转】MyEclipse快捷键大全
  10. 跨域技术(JSONP与CROS)