回答
嵌入式系統,特別是實時嵌入式系統,通常有很多靜態分配的數據和/或放置在內存中特定位置的數據。內存映射告訴你這些事情在哪裏,當你遇到問題並需要檢查系統的狀態時,這可能會有所幫助。例如,您可能會轉儲所有內存,然後在事實之後進行分析;在這種情況下,內存映射對於查找您懷疑可能與問題相關的對象來說非常方便。
在代碼方面,您的系統可能會記錄一個硬件異常,該異常指向檢測到異常的指令地址。查看函數的內存位置,並結合對函數的反彙編,可以幫助您分析這些問題。
細節真的取決於你正在構建的是什麼樣的嵌入式系統。如果你提供更多的細節,人們可以提供更好的答案。
我不確定我是否理解這個問題。你似乎暗示「存儲器映射」是嵌入式系統獨有的東西,或者它是有形的軟件組件。它既不是;它僅僅是對應用程序內存使用情況的描述。
不管平臺如何,所有的應用程序都有一個內存映射,區別在於,通常在嵌入式系統上,應用程序作爲一個單一的整體實體進行鏈接,因此得到的內存佈局是指整個系統而不是單個進程因爲它可能在GPOS平臺上的應用程序中。
它是確定內存映射的鏈接器和鏈接器腳本,鏈接器將能夠輸出描述應用佈局和分配的映射報告文件。無論操作系統或體系結構如何,嵌入式和桌面應用都是如此。
RTOS的存儲器映射與任何計算機的存儲器映射沒有太大的不同。它定義了哪個硬件駐留在哪個處理器的地址上。該硬件可以是RAM,ROM,閃存,串行端口,並行端口,定時器,中斷向量或處理器可尋址的任何其他部分。
存儲器映射還描述了您打算如何爲系統設計中有限的資源(如RAM,ROM或Flash)進行預算。例如,如果有多個任務正在運行,則RAM可能會被映射,以便每個任務都有它自己分配給它的特定RAM區域。
反過來,RAM的每個任務的部分將被映射,以便堆棧有特定的區域,另一個用於靜態變量,可能更多的是堆(s)。
當你在目標上有一個操作系統時,它會動態地處理很多事情。但是,如果您的應用程序是設備上唯一的軟件,則必須自己管理這些決策,通常在編譯/鏈接時間。搜索「鏈接腳本」獲取更多線索,
內存映射是系統內存的佈局。它存在於嵌入式系統和普通應用程序中。雖然它在正常的應用程序中存在,但由於系統的限制,在嵌入式系統中它的使用是非常值得讚賞的。
存儲器映射通過鏈接器腳本或鏈接器命令文件進行管理。它將諸如Flash或內部RAM(L1P,L1D,L2,L3)或外部RAM(DDR)或ROM或外設(端口,串行,並行,USB等)或特定設備寄存器或I/O端口等資源映射到適當的固定地址在系統的內存空間中。
在嵌入式系統的情況下,根據存儲器配置或電路板和性能要求的限制,文本段或數據段或BSS等段也可以放在適當的存儲器中。
有些情況下,各種版本的開發板將有不同的內存和外設配置。在這種情況下,我們可能需要根據存儲器配置和電路板外圍設備編輯鏈接器腳本,作爲電路板啓動時的基本檢查點。
內存映射也可以幫助定義共享內存,它可以在多線程應用程序和多核應用程序中發揮關鍵作用。
可以通過反向追蹤崩潰地址並將其映射到系統內存來調試崩潰,以獲得可能導致問題的庫或對象的高級概念。
- 1. 內存映射UIImage
- 2. 內存映射文件C++
- 3. GPU - 系統內存映射
- 4. Windows內存映射文件
- 5. 內存映射文件.NET
- 6. 緩存到內存的映射
- 7. 內存映射存儲引擎
- 8. 內存映射文件的使用
- 9. C++:內存映射文件上的Fetch_add
- 10. 內存映射庫的文件名osx
- 11. 內存映射的IO概念細節
- 12. 哈希映射的內存分配
- 13. 內存映射文件的位置
- 14. numpy數組的內存映射文件
- 15. 共享內存中的C++ STL映射
- 16. 內存映射文件的Java NIO
- 17. 計算C++映射的內存
- 18. 澄清誰決定內存映射和端口IO映射
- 19. 內存映射文件 - 映射結構而不是文件?
- 20. 部分取消映射Win32內存映射文件
- 21. 低延遲分佈在內存哈希映射(計數映射)
- 22. 不帶內存映射文件的共享內存
- 23. 截斷內存映射文件
- 24. 無法映射共享內存
- 25. 追加到內存映射文件
- 26. 內存映射文件問題
- 27. 使用fork時如何映射內存?
- 28. 鏈接增強內存映射文件
- 29. C++類對象內存映射
- 30. 從內存中獲取grails url映射