题记:
整理电脑的时候,无意中发现了自己以前项目中写下的文档,也备份一下,毕竟每过一年,就老一年,记性也坏一年,呵呵!
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函数分配)