題記:
整理電腦的時候,無意中發現了自己以前項目中寫下的文檔,也備份一下,畢竟每過一年,就老一年,記性也壞一年,呵呵!
ST710X MEMORY MAP(V1.3)
修訂記錄
l 2008/11/09 V1.0 XXX
初稿
l 2008/12/05 V1.1 XXX
增加cisco項目配置情況
l 2008/12/08 V1.2 XXX
修正上個版本問題
l 2008/12/11 V1.3 XXX
修正上個版本問題
一 注意事項
1 ST7101平臺的MEM MAP大體相同,但根據具體應用,每個項目會有所改動。
2 ST7101使用2片內存
其中一片的起始地址爲0X8400 0000,大小爲128M。存我們的微碼,主程序,AV MEM1。
另外一片的起始地址爲0XB000 0000,大小爲64M。存AV MEM2, 爲VIDEO使用。
3 當微碼或AV MEM1的尺寸發生改變後,一定需要同時修改配置文件hmp_7109_board.mem (定義1,2,3塊內存邊界)和hmp_7109.h(定義第2塊內存內部詳細分配情況)
4 當主程序,Sysmem ,Nocache的尺寸發生改變,但第2塊內存總大小保持不變,只需要修改配置文件hmp_7109.h
5 我們目前對內存的修改基本上都是基於內存0X8400 0000。到目前爲止,我們沒有更改過內存0XB000 0000。
二 DVT6010內存配置
參考版本:test7
一 內存0XB000 0000
起始地址 | 0xb0000000 - 0xb4000000 |
名稱 | AV MEM2(VIDEO) |
尺寸 | 64M |
二 內存0X8400 0000
1 系統的配置概況:(注:修改hmp_7109_board.mem)
起始 地址 | 0x84000000- 0x84500000 | 0x8450 0000 – 0x88f0 0000 | 0x88F0 0000- 0X8C00 0000 |
名稱 | 微碼 | Elf文件的各個分段 + heap + Stack | AV MEM1 |
尺寸 | 5M | 74M | 49M |
2 系統的詳細配置:(注:太小的section沒有列出來)
開始地址 – 結束地址 | 尺度大小 | 用途名稱 |
0x8400 0000 - 0x8450 0000
| 5 M
| 音視頻微碼,ST默認爲6M,爲省空間,我們修改其爲5M |
0x8450 0000 – 0x84E1 34A0 | 9.1 M | .text (可執行程序的代碼段) |
0x84E1 34A0 – 0x8569 DD00 | 8.5 M | .rodata (程序中的只讀數據) |
0x8569 DD00 – 0x85A2 0000 | 3.5 M | .data (已初始化的靜態和全局數據) |
0x85A2 0000 – 0x885B 8DA0 | 43.6M | .bss (未初始化的靜態和全局數據) |
0x885B 8DA0 – 0x88F0 0000
| 9.3 M | .heap + .stack (系統的堆和棧,堆向上增,棧向下減) |
0x88F0 0000 – 0x8C00 0000 | 49 M | AV MEM1 |
| 128 M |
|
|
|
|
1 第三方已經使用的內存分析:
(1) 從.bss中,ST開闢了一個30M的數組。其中3M作爲NoCacheMemory,5M爲ST驅動使用。
2 可供Digivision使用的內存分析:
(1) 在.bss中,共有43.5-30=13.5M爲我們使用;(全局或者靜態數據)
(2) 在.bss中,還有30-3-5 =22 M 爲我們malloc使用;(注意:需要調用我們RTOS_Malloc分配函數)
(3) 在.heap和.stack,共享9M。建議留2M爲stack使用,所以我們最多可以malloc 7M。(直接通過malloc函數分配)
二 DVT6020內存配置
參考版本:test36
一 內存0XB000 0000
起始地址 | 0xb0000000 - 0xb4000000 |
名稱 | AV MEM2(VIDEO) |
尺寸 | 64M |
二 內存0X8400 0000
1 系統的配置概況:(注:修改hmp_7109_board.mem)
起始 地址 | 0x84000000- 0x84500000 | 0x8450 0000 – 0x88d0 0000 | 0x88d0 0000- 0X88f0 0000 | 0x88f0 0000- 0X8c00 0000 |
名稱 |
微碼 | Elf文件的各個分段 + heap + Stack |
NDS 專用 |
AV MEM1 |
尺寸 | 5M | 72M | 2M | 49M |
2 系統的詳細配置:(注:太小的section沒有列出來)
開始地址 – 結束地址 | 尺度大小 | 用途名稱 |
0x8400 0000 - 0x8450 0000
| 5 M
| 音視頻微碼,ST默認爲6M,爲省空間,我們修改其爲5M |
0x8450 0000 – 0x84EA B500 | 9.6 M | .text |
0x84EA B500 – 0x856B 7FA0 | 8 M | .rodata |
0x856B 7FA0 – 0x85A1 F18C | 3.4 M | .data |
0x85A1 F18C – 0x86D7 ECD8 | 19.5M | .bss |
0x86D7 ECD8 – 0x88CF FFFC
| 31.5M | .heap + .stack |
0x88CF FFFC – 0x88F0 0000 | 2 M | NDS專用的一段固定地址空間 |
0x88F0 0000 – 0x8C00 0000 | 49 M | AV MEM1
|
| 128 M | 內存大體上分3部分來管理 |
1 第三方已經使用的內存分析:
(1) 從AV MEM1中,NDS分配了2M,並且此內存空間地址固定。
(2) 從.bss中,NDS申請了一個6.5M的未初始化的數組。SecMemory[1024*1025*5.5],SecNCacheMemory[1024*1024], 並分別用指針*sec_partition_stfae, *sec_ncache_partition_stfae指向。
(3) 從.heap中,ST malloc了28M內存(*system_partition_stfae指向),ST malloc了3M內存(* ncache_partition_stfae指向)。其中根據ST統計:在system_partition_stfae中有5M ST驅動已經使用。
2 可供Digivision使用的內存分析:
(1) 在.bss中, 現在大小爲19.5M,但其中NDS申請了兩個數組,共計6.5M.(注意:.bss段的大小不需要我們人爲指定,它是根據程序實際使用的數組大小而計算出來的)
(2) 在.heap和.stack,現在共享31.5M內存,其中已經申請了28M,故剩餘的 3.5M爲我們malloc和.stack共同享有。(注意:直接通過malloc函數分配)
(3) RTOS_Malloc使用的內存都是從system_partition_stfae 28M中分配出來。
二 8488內存配置
參考版本:test0
內存0XB000 0000
起始地址 | 0xb0000000 - 0xb4000000 |
名稱 | AV MEM2(VIDEO) |
尺寸 | 64M |
二 內存0X8400 0000
1 系統的配置概況:(注:修改hmp_7109_board.mem)
起始 地址 | 0x84000000- 0x84600000 | 0x8460 0000 – 0x88f0 0000 | 0x88F0 0000- 0X8C00 0000 |
名稱 | 微碼+ CISCO | Elf文件的各個分段 + heap + Stack | AV MEM1 |
尺寸 | 5M + 1M | 73M | 49M |
2 系統的詳細配置:(注:太小的section沒有列出來)
開始地址 – 結束地址 | 尺度大小 | 用途名稱 |
0x8400 0000 - 0x8460 0000
| 6 M
| 音視頻微碼,ST默認爲6M,爲省空間,我們修改其爲5M + 1M |
0x8450 0000 – 0x84E1 34A0 | 9 M | .text (可執行程序的代碼段) |
0x84E1 34A0 – 0x8569 DD00 | 8 M | .rodata (程序中的只讀數據) |
0x8569 DD00 – 0x85A2 0000 | 6.0 M | .data (已初始化的靜態和全局數據) |
0x85A2 0000 – 0x885B 8DA0 | 42 M | .bss (未初始化的靜態和全局數據) |
0x885B 8DA0 – 0x88F0 0000
| 8 M | .heap + .stack (系統的堆和棧,堆向上增,棧向下減) |
0x88F0 0000 – 0x8C00 0000 | 49 M | AV MEM1 |
| 128 M |
|
|
|
|
1 第三方已經使用的內存分析:
(1) 從.bss中,ST開闢了一個30M的數組。其中3M作爲NoCacheMemory,5M爲ST驅動使用。
2 可供Digivision使用的內存分析:
(1) 在.bss中,共有43.5-30=13.5M爲我們使用;(全局或者靜態數據)
(2) 在.bss中,共有30-3-5 =22 M 爲我們使用;(注意:需要調用我們RTOS_Malloc分配)
(3) 在.heap和.stack,共享8M。建議留2M爲stack使用,所以我們最多可以malloc 6M。(通過malloc函數分配)