簡體   English   中英

Linux:創建 mmap()able 虛擬文件(例如 SPI 內存)

[英]Linux: create mmap()able virtual file (e.g. SPI memory)

我有一個 char 設備,可以訪問外部 SPI memory,我想 mmap() 外部 memory 以便我可以從程序訪問它,就好像它是正常的 ZCD69B4957F06CD818D7B3D691

如果我在 char 設備文件上使用通常的 mmap() 頁面重新映射實現,它只會讓我看到設備 memory 區域,而不是它的虛擬 char 文件...

有什么訣竅可以讓我這樣做嗎?

TIA

如果字符設備驅動程序提供了mmap實現,它就可以工作。 它不這樣做可能有一個很好的理由:

Memory 訪問指令在總線上創建 memory 事務。 SPI memory 不能以這種方式尋址(盡管 SPI controller 可能使用內存映射 I/O,這是針對其自己的寄存器級接口,而不是 ZCD69B4957F06CD828D917BF3D61980DE 內容) 我想你可以用 memory 總線接口構建一個 SPI memory controller,但你會失去 SPI 標准的設備獨立性。

模擬 memory 區域是可能的(抓取 memory 的頁面,將其標記為不可訪問,並處理訪問沖突(SIGBUS 和 SIGSEGV),但這將非常低效。有時你會發現虛擬機這樣做,但性能非常壞的。

聽起來您需要某種驅動程序來將 memory 區域訪問轉換為通過面向字符的接口發送的命令。 這可能是一個非常簡單的塊設備驅動程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM