[發明專利]一種變長數據的存儲方法與裝置有效
| 申請號: | 201310631997.6 | 申請日: | 2013-11-29 |
| 公開(公告)號: | CN103605485B | 公開(公告)日: | 2017-01-18 |
| 發明(設計)人: | 余世均;李紅京 | 申請(專利權)人: | 深圳市道通科技股份有限公司 |
| 主分類號: | G06F3/06 | 分類號: | G06F3/06;G06F17/30 |
| 代理公司: | 北京品源專利代理有限公司11332 | 代理人: | 胡彬 |
| 地址: | 518000 廣東省深圳市南山區西麗*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 變長 數據 存儲 方法 裝置 | ||
技術領域
本發明屬于數據隊列緩存技術,尤其涉及一種變長數據的存儲方法與裝置。
背景技術
數據隊列緩存技術,在計算機領域應用非常廣泛。在嵌入式應用中,經常用于外部設備與處理器之間進行數據交互,比如UART(Universal?Asynchronous?Receiver/Transmitter,異步串行通信接口)設備,當我們需要利用UART與外設進行指令和數據交互的時候,就需要將接收到的指令或數據保存在接收數據緩沖區中,然后再對接收到的數據或指令逐個進行處理,將設備的狀態和數據回送到主機,主機同樣也會建立數據收發緩沖區,緩存接收到的數據或將要被發送的指令。
通常的對于定長數據緩存方式,只要保存好數據輸入和輸出指針就能比較方便的實現數據的出入隊列。對于變長的數據,通過STL模板庫里的vector、list、queue能夠實現,變長數據的存儲,但是這樣編譯出的代碼冗長,執行效率明顯降低,在嵌入式編程實時性、代碼空間、內存空間要求非常嚴格的應用場合,就顯得非常吃力。
現有的環形數據緩存技術,大多以自定義一個緩存區域或使用STL模板為主。自定義一個數據緩存區域主要是開辟一塊空閑的內存空間,申請兩個指針變量,一個用于保存寫數據指針,另一個用于保存讀數據指針,當有新的數據需要保存的時候,就將數據放入寫數據指針指向的內存區域,而發送模塊需要發送的數據的時候就從讀數據指針所指向的內存塊取出數據,送入串行發送模塊,將數據發送出去。而STL模板的主要是申請一個數據容器(VECTOR、LIST、QUEUE等),需要出(入)隊列的時候通過調用pop或push方法按字節(或將接收/發送數據的緩存地址)取出并保存在容器中。
現有技術在嵌入式應用領域存在的缺點:
使用STL標準模板庫:
代碼冗長:代碼量會增大許多,在代碼空間有限的情況下很難實現。
執行效率低:由于STL模塊是標準的、通用性的容器,代碼會比自實現的緩存多,執行效率自然會變低。
容易產生內存碎片:如果用STL保存內存指針,會不停的申請和釋放內存,容易造成內存碎片。
使用環形數據緩存技術:
靈活性低:在使用環形數據緩存技術的時候,比較適用于定長的數據應用場合,對于變長的數據,需要自由的進行存取和訪問變得比較復雜。例如數據被分別存在內存的結尾和頭部的時候,無法使用得到緩存區域首地址的方式訪問緩存中的數據。
發明內容
本發明實施例提供一種變長數據的存儲方法與裝置,旨在解決現有技術中的數據包不能存放在一塊連續內存中的問題。
本發明實施例是這樣實現的,一種變長數據的存儲方法,所述方法包括:
查詢緩存區域的空閑空間大?。凰鼍彺鎱^域包括數據存指針存放區、數據讀指針存放區、保留區以及數據存放區;
當所述空閑空間大小大于變長數據的大小時,判斷所述變長數據的大小是否大于數據存放區中最后一組數據的末地址到數據存放區結束地址之間的內存大?。?/p>
是則在所述數據存放區中最后一組數據的末地址后設置數據緩存終止標識,并將所述變長數據從數據存放區的首址開始存入,否則將所述變長數據從數據存放區的最后一組數據的末地址后開始存入。
本發明實施例還提供一種變長數據的存儲裝置,所述裝置包括:
空間查詢單元,用于查詢緩存區域的空閑空間大?。凰鼍彺鎱^域包括數據存指針存放區、數據讀指針存放區、保留區以及數據存放區;
空閑空間大小判斷單元,用于當所述空閑空間大小大于變長數據的大小時,判斷所述變長數據的大小是否大于數據存放區中最后一組數據的末地址到數據存放區結束地址之間的內存大小;是則在所述數據存放區中最后一組數據的末地址后設置數據緩存終止標識,并將所述變長數據從數據存放區的首址開始存入,否則將所述變長數據從數據存放區的最后一組數據的末地址開始存入。
本發明的緩存區域包括數據存指針存放區、數據讀指針存放區、保留區以及數據存放區,在判斷變長數據的大小大于數據存放區中最后一組數據的末地址到數據存放區結束地址之間的內存大小時,通過在數據存放區中最后一組數據的末地址后設置數據緩存終止標識,并將變長數據從數據存放區的首址開始存入,使得存放的數據始終存放在一塊連續的內存中,在存取數據時相當于直接在內存內訪問,不需要開辟新的內存區域,實時性高,數據存取相對較快,穩定性強,所有數據緩存區域是一塊連續的內存,都會被循環利用,且不會不停的分配和釋放內存,所以不存在內存碎片,且這種實現方式,占用代碼空間小。
附圖說明
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市道通科技股份有限公司,未經深圳市道通科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310631997.6/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:滑輪試驗臺
- 下一篇:一種咖啡壺蒸氣開關檢測機的充氣測力裝置
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





