加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • mmap概念
    • 用法
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-LCD顯示圖片編程示例之介紹mmap

11/21 17:17
1137
閱讀需 3 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

mmap概念

存儲映射 I/O這種高級 I/O方式,它的一個(gè)非常經(jīng)典的使用場景便是用在 Framebuffer 應(yīng)用編程中。通過 mmap()將顯示器的顯示緩沖區(qū)(顯存)映射到進(jìn)程的地址空間中,這樣應(yīng)用程序便可直接對顯示緩沖區(qū)進(jìn)行讀寫操作。

為什么這里需要使用存儲映射 I/O 這種方式呢?其實(shí)使用普通的 I/O 方式(譬如直接 read、write)也是可以的,只是,當(dāng)數(shù)據(jù)量比較大時(shí),普通 I/O 方式效率較低。假設(shè)某一顯示器的分辨率為 1920 * 1080,像素格式為ARGB8888,針對該顯示器,刷一幀圖像的數(shù)據(jù)量為 1920 x 1080 x 32 / 8 = 8294400 個(gè)字節(jié)(約等于 8MB),這還只是一幀的圖像數(shù)據(jù),而對于顯示器來說,顯示的圖像往往是動態(tài)改變的,意味著圖像數(shù)據(jù)會被不斷更新。

在這種情況下,數(shù)據(jù)量是比較龐大的,使用普通 I/O 方式必然導(dǎo)致效率低下,所以才會采用存儲映射I/O 方式。

用法

void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);

下面介紹一下 mmap 函數(shù)的各個(gè)參數(shù)作用:

addr:指定映射的虛擬內(nèi)存地址,可以設(shè)置為 NULL,讓 Linux 內(nèi)核自動選擇合適的虛擬內(nèi)存地址。

length:映射的長度;

prot:映射內(nèi)存的保護(hù)模式,可選值如下:

PROT_EXEC:可以被執(zhí)行;

PROT_READ:可以被讀取;

PROT_WRITE:可以被寫入;

PROT_NONE:不可訪問;

flags:指定映射的類型,常用的可選值如下:

MAP_FIXED:使用指定的起始虛擬內(nèi)存地址進(jìn)行映射;

MAP_SHARED:與其它所有映射到這個(gè)文件的進(jìn)程共享映射空間(可實(shí)現(xiàn)共享內(nèi)存);

MAP_PRIVATE:建立一個(gè)寫時(shí)復(fù)制(Copy on Write)的私有映射空間;

MAP_LOCKED:鎖定映射區(qū)的頁面,從而防止頁面被交換出內(nèi)存;

fd:進(jìn)行映射的文件句柄;

offset:文件偏移量(從文件的何處開始映射);

飛凌嵌入式

飛凌嵌入式

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。

保定飛凌嵌入式技術(shù)有限公司,創(chuàng)建于2006年,是一家專注嵌入式核心控制系統(tǒng)研發(fā)、設(shè)計(jì)和生產(chǎn)的高新技術(shù)企業(yè),是國內(nèi)較早專業(yè)從事嵌入式技術(shù)的企業(yè)之一。 經(jīng)過十幾年的發(fā)展與積累,公司擁有業(yè)內(nèi)優(yōu)秀的軟硬件研發(fā)團(tuán)隊(duì),在北京及保定建立兩大研發(fā)基地,在蘇州、深圳設(shè)有華東、華南技術(shù)服務(wù)中心,并在北美、歐洲以及亞太等其他國家和地區(qū)擁有國際業(yè)務(wù)網(wǎng)絡(luò)。公司研發(fā)的智能設(shè)備核心平臺廣泛應(yīng)用于物聯(lián)網(wǎng)、工控、軌道交通、醫(yī)療、電力、商業(yè)電子、智能家居、安防、機(jī)器人、環(huán)境監(jiān)測等諸多領(lǐng)域。收起

查看更多

相關(guān)推薦

電子產(chǎn)業(yè)圖譜