Embedded System Studying note 12/21
DMA, Direct Memory Access
----
DMA 是攸關系統效能的重要元件
在系統裡經常要做資料搬移
這些事一般我們會靠一個外部的硬體幫忙做掉
不然 CPU光處理這些垃圾事, 正事都不用辦了
之前寫好的 USB shell這次正好派上用場
讓我在不寫任何一行 code 的情況下, 驗證 DMA的功能...
實驗是這樣進行的
首先準備一個檔案, 大小剛好是 64KB
1. 把檔案用 wr 的命令, 寫到記憶體 0x32000000 的地方
2. 用 DMA 把資料搬到 0x32800000
3. 用 rr 命令把檔案讀出來
4. 最後用 Araxis Merge 這個變態的 merge tool 幫我做 binary 比對
照這個想法, 寫出來的命令異常的簡單...
----
再來就想個辦法, 好好包裝一下 DMA, 看怎麼設計比較好...
----
DMA 是攸關系統效能的重要元件
在系統裡經常要做資料搬移
這些事一般我們會靠一個外部的硬體幫忙做掉
不然 CPU光處理這些垃圾事, 正事都不用辦了
之前寫好的 USB shell這次正好派上用場
讓我在不寫任何一行 code 的情況下, 驗證 DMA的功能...
實驗是這樣進行的
首先準備一個檔案, 大小剛好是 64KB
1. 把檔案用 wr 的命令, 寫到記憶體 0x32000000 的地方
2. 用 DMA 把資料搬到 0x32800000
3. 用 rr 命令把檔案讀出來
4. 最後用 Araxis Merge 這個變態的 merge tool 幫我做 binary 比對
照這個想法, 寫出來的命令異常的簡單...
step.1
wr 0x32000000 c:\fw.bin
step.2
w4 0x4B000000 0x32000000 ; source addr
w4 0x4B000004 0x0 ; source addr increment
w4 0x4B000008 0x32800000 ; destination addr
w4 0x4B00000C 0x0 ; destination addr increment
w4 0x4B000010 0x58201000 ; DMA control addr
w4 0x4B000020 0x3 ; DMA GO
step.3
rr 0x32800000 65536 c:\fw1.bin
step.4
最後用 Araxis Merge 比對 fw1.bin 和 fw2.bin
----
再來就想個辦法, 好好包裝一下 DMA, 看怎麼設計比較好...
留言