length函数的头文件_Framebuffer 应用编程中涉及的 API 函数
本節程序的目的是:打開 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 函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html二级下拉菜单模板,基于jQuer
- 下一篇: opencv入门_【OpenCV入门之十