<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式機器視覺(jué)系統中ARM與DSP的數據通信設計方案

嵌入式機器視覺(jué)系統中ARM與DSP的數據通信設計方案

作者: 時(shí)間:2012-12-29 來(lái)源:網(wǎng)絡(luò ) 收藏

  3 軟件設計

  3.1 Linux驅動(dòng)程序

  在Linux操作系統下,設備文件有3種類(lèi)型:字符設備、塊設備、網(wǎng)絡(luò )設備,各自對應一種類(lèi)型的設備驅動(dòng)程序。這里的HPI接口的驅動(dòng)程序屬于字符設備驅動(dòng)程序。

  Linux下的驅動(dòng)程序是為相應的設備編寫(xiě)多個(gè)基本函數,填充file_operations結構體。其中定義了實(shí)現各種操作函數。如下所示:

  open和release完成設備的打開(kāi)和關(guān)閉。mmap為內存地址映射操作。下面是本文中的HPI接口的驅動(dòng)程序的設備入口hpi_open函數,它負責打開(kāi)、準備設備。

  任何時(shí)候對字符設備(HPI)接口進(jìn)行打開(kāi)操作,都會(huì )調用設備的open入口點(diǎn)(hpi_open)。所以open函數(hpi_open)必須對將要進(jìn)行的I/O操作做好必要的準備工作,例如設備是獨占的,則open函數必須將設備標記成忙狀態(tài),如上面例程中的①處兩行所示。

  3.2 驅動(dòng)程序中映射的實(shí)現

  由于在Linux系統中,用戶(hù)應用程序不能直接對驅動(dòng)程序的內存空間進(jìn)行操作,因此必須用到內存映射機制。內存映射是指把內核中的特定的內存空間映射到用戶(hù)空間的內存中去。

  mmap系統調用映射一個(gè)設備,意味著(zhù)使用戶(hù)空間的一段地址關(guān)聯(lián)到設備內存上,實(shí)際上就是對設備的訪(fǎng)問(wèn)。

  mmap方法是file_operations結構的一部分,要實(shí)現映射必須分兩步:

  1)調用內核中的remap_page_range函數,它的功能是:構造用于映射一段物理地址的新頁(yè)表,實(shí)現了內核空間與用戶(hù)空間的映射,其原型如下:

  函數參數的確切含義如下:unsigned long virt_add為重映射開(kāi)始處的虛擬地址。這個(gè)函數為虛地址空間virt_add和virt_add+size之間的范圍構造頁(yè)表。unsigned long phys_add為虛擬地址應該映射到的物理地址。unsigned long size為被重映射的區域的大小,以字節為單位。pgprot_t prot為新VMA所請求的“保護”屬性。驅動(dòng)程序不必修改保護,在vma->vma_page_prot中找到的參數可不加改變地使用。

  本課題中使用mmap調用的代碼如下:

  這樣就為DSP的HPI接口所對應的總線(xiàn)物理地址:0x10000000(對應nGCS2)在vma->vm_start和vma->vm_end之間構造了新的頁(yè)表。

  hpi_mmap_add=mmap(NULL,length,PROT_READ|PROT_WRITE,MAP_SHARED,hpi_fd,0)其中參數start指明描述字fd對應的“文件”在進(jìn)程地址空間內的映射區的開(kāi)始地址,必須是頁(yè)面對齊的地址,通常設為NULL,讓內核去自動(dòng)選擇開(kāi)始地址。任何情況下,mmap的返回值為內存映射區的開(kāi)始地址。這樣通過(guò)對hpi_mmap_add操作,實(shí)現對起始地址為0x10000000的內存段操作。

通信相關(guān)文章:通信原理




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>