OverLay 原理與實現

2021-08-02 05:44:46 字數 1281 閱讀 9462

overlay技術:

分類: 大體分為軟體overlay   硬體 

本文主要介紹 軟體實現overlay。至於硬體實現的方式或者說策略,目前能找到的資源有限,且自己還沒有弄清楚,所以當前情況下暫不介紹。

所謂overlay 即 實現 記憶體區域的重複利用。ram在soc上,是乙個快速但單位面積較大的元件,而單位面積較大代表成本較高。有乙個降低成本的方法,是將程式**放在較慢但單位面積較小的flash或rom上,當系統需要執行裡面的某些程式**時,才載入到記憶體裡執行。

overlay區域可是放置 rw data 也可以是 ro data。  

需要注意的前提是:

1、模組a 和 模組b 不同時存在使用的可能。

2、當要替換掉 overlay 區域內的資料時,若有必要,請軟體實現儲存。

3、實現overlay的rw 、ro 應當是位置無關的。

4、overlay的相關區域的移動儲存由軟體負責實現。

下面以arm m系列的 sct檔案進行說明:

lr_irom1 0x00000000 0x0000f000  

er_irom2 +0 0x0000ee00

rw_iram1 0x20010000 0x00003ff0  

rw_iram2 0x20013ff0 uninit 0x00000010  

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; overlay rawdata buffer0 and someoverlay function

rw_ovelay_raw0 0x20020000  overlay 0x2000

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; overlay rawdata buffer0 and someoverlay function

}lr_iromx 0x0000f000 0x0000300  

er_iromx 0x20021000  overlay  

}以上 檔案中,ram區域 0x20020000  ~  0x200220 實現了overlay機制。其中,初始化存在的是touchdataprocesslib.o(rawdata0)的內容。

當需要overlayfunc.o 中的功能時候,則由軟體將相應的 overlayfunc.o  (funcinfohead) 、 overlayfunc.o  (+ro) 複製到

對應的overlay區域。 這樣就可以在0x20020000  ~  0x200220 訪問到overlayfunc.o  的內容。

50 overlay 如何實現跨主機通訊?

上一節我們在 host1 中執行了容器 bbox1,今天將詳細討論 overlay 網路跨主機通訊的原理。在 host2 中執行容器 bbox2 bbox2 ip 為 10.0.0.3,可以直接 ping bbox1 可見 overlay 網路中的容器可以直接通訊,同時 docker 也實現了 dn...

Stream ResultSet實現原理與應用實踐

這篇我們來深入聊聊stream resultset的實現原理和應用實踐。原理解析 stream resultset的實現方式mysql官方文件中沒有說明,這裡我們只有自食其力閱讀原始碼了。首先和組內mysql大牛一起看了mysql select過程原始碼,這裡就不貼 了,直接說結論 mysql中沒有...

LVS Keeplived原理與實現

常用的軟負載均衡由如下幾種 nginx keeplived lvs keeplived haproxy keeplive dns負載均衡 lvs是四層負載均衡,也就是說建立在osi模型的第四層 傳輸層之上,傳輸層上有我們熟悉的tcp udp,lvs支援tcp udp的負載均衡。lvs的 主要通過修改...