簡體   English   中英

將PCIe驅動程序從Linux移植到FreeBSD

[英]Porting PCIe driver from Linux to FreeBSD

我在Linux上編寫了一個相當大的PCIe驅動程序,現在我需要在FreeBSD上移植它。 我還不知道BSD版本,但我認為在這一點上它是無關緊要的,因為我想了解一般在移植過程中必須修改哪些主要項目。

好處是驅動程序被分區為獨立於操作系統的“庫”層(OSI)和操作系統,因此它已經有一個“框架”允許將其移植到其他操作系統上,我希望大部分工作都是專注於OSI方面。 到目前為止,我看到了以下大塊工作:

  1. init代碼,即將驅動程序“插入”系統的特定於操作系統的代碼(類似於Linux中的init_module,cleanup_module)
  2. 代碼在內核的PCI核心子系統中注冊驅動程序
  3. 字符驅動程序注冊碼4)DMA操作

我還應該注意什么? 此驅動程序是一個進行硬件加密的設備,因此它是卸載設備(來自NIC的入口數據包正常進入系統,然后轉移到設備)。

如果有有用的Web鏈接來描述BSD驅動程序開發/移植(類似於LDD),我很樂意接受它:)

在2011年,Jeff Roberson(以及后來的Mellanox)添加了一些墊片來簡化移植Linux驅動程序,這使得大部分代碼可以按原樣使用,當他將Linux InfiniBand驅動程序移植到FreeBSD時。 所以,假設我是Linux驅動程序開發世界的新手,我首先看一下:

https://svnweb.freebsd.org/base/head/sys/ofed/include/linux/

在哪里可以找到許多必需的Linux驅動程序API及其FreeBSD本機對應物的實現。

有約翰-馬克,另一個快速入門文檔這里 ,對於那些誰已經熟悉的司機寫作很有幫助。

如果您希望從頭開始,我認為FreeBSD架構手冊將是一個有用的起點。

此外,還有Kirk McKusick,Robert Watson和George Neville-Neil的書,題為“FreeBSD操作系統的設計和實現”,此時的最新版本是第2版,第8章是詳細的設備驅動程序。

大多數設備驅動程序只是硬件操作的包裝器以適應OS接口,因此如今,分層良好的驅動程序應該相對容易移植。

如果您有疑問,或者是硬件供應商,您還可以加入各種FreeBSD郵件列表(freebsd-drivers @等)。

暫無
暫無

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

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