System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及軟件存儲,具體涉及一種數據傳輸過程中減少驅動內存拷貝的方法及設備驅動。
技術介紹
1、在嵌入式linux平臺上的圖像處理領域,圖像傳感器的數據接入廣泛采用了v4l2(video?for?linux?2)或其類似驅動程序。這種選擇背后的原因在于v4l2為圖像數據的高效傳輸提供了一個強大而靈活的框架。具體而言,v4l2驅動程序通過為每個連接的設備創建一個由多個緩沖區(buffer)組成的隊列來工作。這些緩沖區設計用于循環利用,當一個緩沖區被填滿后,它會被標記為“就緒”,等待應用程序讀取其內容。一旦數據被讀取,該緩沖區就會被重新加入隊列,準備再次接收新的圖像數據。這種方式不僅保證了數據流的連續性,同時也提高了數據傳輸的效率。
2、然而,盡管v4l2及其類似驅動程序在設計上考慮到了高效性,但在實際應用中仍存在一些挑戰。其中一個顯著問題是,由于這些緩沖區在設計時就被賦予了特定的角色,即作為臨時存儲區域用于數據的傳輸,因此它們通常不能直接用于應用程序內部的數據處理。這意味著,為了確保數據的一致性和完整性,必須將緩沖區中的數據復制到應用程序預先分配的內存空間中。這個過程被稱為內存拷貝,雖然看似簡單,但對于資源有限的嵌入式系統而言,卻是一個不容忽視的性能開銷。內存拷貝操作不僅會占用寶貴的處理器時間,還可能導致系統的整體吞吐量下降,尤其是在處理高分辨率或高速度的圖像數據時,這種影響尤為明顯。
3、針對上述問題,目前已有多種優化策略,比如ros2的零拷貝技術嘗試改進數據結構以降低拷貝次數,以及直接將v4l2中的
4、綜上,由于v4l2驅動是通用的驅動程序框架,單純從應用層降低拷貝次數是無法觸及從v4l2的數據拷貝;并且,直接將v4l2驅動的buffer拿到應用中使用,由于生命周期限制導致的穩定性問題,實際應用中這種方式被認為是不安全的。因此,對于嵌入式linux平臺上的圖像處理應用而言,優化數據處理流程,特別是減少不必要的內存拷貝,依然是提升系統性能的一個重要方向。
技術實現思路
1、有鑒于此,本申請實施例提供一種數據傳輸過程中減少驅動內存拷貝的方法及設備驅動,以達到減少不必要的驅動內存拷貝,提高數據傳輸效率與系統性能的目的。
2、本申請實施例提供以下技術方案:一種數據傳輸過程中減少驅動內存拷貝的方法,應用于ubuntu平臺,包括:
3、在視頻設備驅動的應用層創建用于與視頻設備驅動進行數據傳遞的內存池,其中,所述內存池中設有若干個可傳遞至所述視頻設備驅動的內存塊;
4、初始化所述視頻設備驅動,從所述應用層的內存池中獲取若干個所述內存塊,分別作為若干個緩沖區列入所述視頻設備驅動的緩沖區隊列中,所述視頻設備驅動從所述緩沖區隊列中獲取目標緩沖區,并獲取該緩沖區的物理地址,根據獲取到的所述緩沖區的物理地址,將對應的圖像數據保存至該緩沖區;
5、通過所述視頻設備驅動的應用層獲取圖像數據保存完成后的所述緩沖區,并將該緩沖區傳遞至應用流程使用;
6、待所述應用流程使用完成后,將所述緩沖區作為所述內存塊返回至所述內存池中。
7、根據本申請一種實施例,還包括:對所述視頻設備驅動中用于獲取當前緩沖區物理地址的定位模塊進行修改,以通過所述定位模塊在所述視頻設備驅動每次獲取緩沖區物理地址時均對該緩沖區進行定位并獲取該緩沖區的物理地址。
8、根據本申請一種實施例,所述內存池中的每個所述內存塊均設有使用標記,所述使用標記顯示為該內存塊當前的使用狀態,初始化所述視頻設備驅動后,根據所述內存塊的使用標記,從所述應用層的內存池中獲取若干個所述內存塊;其中,所述使用狀態包括:該內存塊目前在設備驅動中、該內存塊目前在應用中、該內存塊目前在空閑中。
9、根據本申請一種實施例,所述視頻設備驅動從所述緩沖區隊列中獲取目標緩沖區,并獲取該緩沖區的物理地址,包括:
10、所述視頻設備驅動從所述緩沖區隊列中獲取目標緩沖區,并通過該緩沖區的配置信息獲取該緩沖區的物理地址;所述緩沖區的配置信息包括該緩沖區的使用標記、物理地址、空間大小。
11、根據本申請一種實施例,從所述應用層的內存池中獲取若干個所述內存塊,還包括:對所述內存池中的所述內存塊的所述使用標記進行更新。
12、根據本申請一種實施例,還包括:所述視頻設備驅動將對應的圖像數據保存至目標緩沖區后,將該緩沖區放入出數據隊列中,并將所述出數據隊列及對應的緩沖區索引同時傳遞至所述應用層。
13、根據本申請一種實施例,所述緩沖區索引與所述出數據隊列中緩沖區的物理地址對應。
14、根據本申請一種實施例,所述視頻設備驅動為v4l2設備驅動。
15、本申請還提供一種設備驅動,所述設備驅動在進行視頻數據傳輸時執行如上述的數據傳輸過程中減少驅動內存拷貝的方法。
16、與現有技術相比,本說明書實施例采用的上述至少一個技術方案能夠達到的有益效果至少包括:本專利技術實施例限制使用在自研驚蟄arch64芯片的ubuntu平臺上,通過改造視頻設備驅動的方式實現,如v4l2設備驅動。本專利技術實施例修改了傳統buffer(緩沖區)的含義,使得在每次v4l2設備驅動獲取buffer目標地址時均進行buffer定位和物理地址獲取,同時在應用層創建內存池,從應用池中獲取內存塊,將buffer的生命周期擴展到應用級別,使得整個流程中數據從驅動中生產出來后,直接存儲到了目標位置,在后續的應用流程中成功避免了數據拷貝。本專利技術實施例有效減少了不必要的驅動內存拷貝,優化了數據處理流程,提高了數據傳輸效率與系統性能。
本文檔來自技高網...【技術保護點】
1.一種數據傳輸過程中減少驅動內存拷貝的方法,應用于Ubuntu平臺,其特征在于,包括:
2.根據權利要求1所述的數據傳輸過程中減少驅動內存拷貝的方法,其特征在于,還包括:
3.根據權利要求1所述的數據傳輸過程中減少驅動內存拷貝的方法,其特征在于,所述內存池中的每個所述內存塊均設有使用標記,所述使用標記顯示為該內存塊當前的使用狀態,初始化所述視頻設備驅動后,根據所述內存塊的使用標記,從所述應用層的內存池中獲取若干個所述內存塊;其中,所述使用狀態包括:該內存塊目前在設備驅動中、該內存塊目前在應用中、該內存塊目前在空閑中。
4.根據權利要求3所述的數據傳輸過程中減少驅動內存拷貝的方法,其特征在于,所述視頻設備驅動從所述緩沖區隊列中獲取目標緩沖區,并獲取該緩沖區的物理地址,包括:
5.根據權利要求3所述的數據傳輸過程中減少驅動內存拷貝的方法,其特征在于,從所述應用層的內存池中獲取若干個所述內存塊,還包括:對所述內存池中的所述內存塊的所述使用標記進行更新。
6.根據權利要求1所述的數據傳輸過程中減少驅動內存拷貝的方法,其特征在于
7.根據權利要求6所述的數據傳輸過程中減少驅動內存拷貝的方法,其特征在于,所述緩沖區索引與所述出數據隊列中緩沖區的物理地址對應。
8.根據權利要求1所述的數據傳輸過程中減少驅動內存拷貝的方法,其特征在于,所述視頻設備驅動為V4L2設備驅動。
9.一種設備驅動,其特征在于,所述設備驅動在進行視頻數據傳輸時執行如權利要求1至8任一項所述的數據傳輸過程中減少驅動內存拷貝的方法。
...【技術特征摘要】
1.一種數據傳輸過程中減少驅動內存拷貝的方法,應用于ubuntu平臺,其特征在于,包括:
2.根據權利要求1所述的數據傳輸過程中減少驅動內存拷貝的方法,其特征在于,還包括:
3.根據權利要求1所述的數據傳輸過程中減少驅動內存拷貝的方法,其特征在于,所述內存池中的每個所述內存塊均設有使用標記,所述使用標記顯示為該內存塊當前的使用狀態,初始化所述視頻設備驅動后,根據所述內存塊的使用標記,從所述應用層的內存池中獲取若干個所述內存塊;其中,所述使用狀態包括:該內存塊目前在設備驅動中、該內存塊目前在應用中、該內存塊目前在空閑中。
4.根據權利要求3所述的數據傳輸過程中減少驅動內存拷貝的方法,其特征在于,所述視頻設備驅動從所述緩沖區隊列中獲取目標緩沖區,并獲取該緩沖區的物理地址,包括:
5.根據權利要求3所述的數據傳輸過程中減少驅動...
【專利技術屬性】
技術研發人員:宋廣發,陳悠湛,陳忠民,安君,蘇彥強,梁爽,
申請(專利權)人:北京超星未來科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。