hi3516cv610管理ddr的内存,具体操作
目前实现了3中的ddr内存管理
1、cv610_20s nand_flash 管理ddr内存
2、cv610_10b nor_flash 管理ddr内存
3、cv610_20s nor_flash 管理ddr内存
3.1)这里是想给 mmz分配更多内存
3.2)这里是想给 os分配更多内存
一、cv610_20s nand_flash 管理ddr内存分配
1)进入ko脚本里修改MMZ内存大小及起始地址
load3516cv610_20s_debug脚本
cv610_20s的ddr大小为 128MByte
分配状况
Linux os 32MByte 系统起始地址 0x4000 0000
MMZ 96MByte MMZ起始地址 0x4200 0000
默认 load3516cv610_xxx内存分配情况
也就是说给OS内存32Mbyte,MMZ内存96MByte
MMZ的起始地址 0x4200 0000 ,怎么算的呢?
0x4000 0000肯定是16进制数据
OS内存占 32MByte
32MByte = 32x1024 KByte = 32768 KByte = 32768x1024 Byte = 33554432 Byte(10进制)
33554432 Byte——> 转为16进制 0x200 0000
系统的起始地址为 0x4000 0000,则
0x4000 0000
+ 0x200 0000
= 0x4200 0000
所以 mmz_start= 0x4200 0000
也就是说 MMZ内存起始地址为 0x4200 0000
MMZ内存总共大小为 96MByte
想给OS内存更大空间
令mmz_size = 80MByte
os_size = 48MByte
48MByte = 48x1024 KByte = 49152 KByte = 49152x1024 Byte = 50331648 Byte(10进制)
50331648 Byte——>转为16进制 0x300 0000
系统起始地址 0x4000 0000
0x4000 0000
+ 0x300 0000
= 0x4300 0000
所以 mmz_start= 0x4300 0000
也就是说 MMZ内存起始地址为 0x4300 0000
MMZ内存总共大小为 80MByte
2)进入uboot修改OS内存大小
一共4条命令
给OS内存分配 48MByte空间
setenv bootargs 'mem=48M console=ttyAMA0,115200 clk_ignore_unused root=ubi0:ubifs rootfstype=ubifs rw ubi.mtd=3 mtdparts=nand:512K(boot),512K(env),4M(kernel),32M(rootfs)'; sa
setenv bootcmd 'nand read 0x41000000 0x100000 0x400000; bootm 0x41000000'; sa
一定要 save,不然分配的空间不生效
save
reset
然后就修改成功了
二、cv610_10b nor_flash 管理ddr内存分配
因为cv610_10b的ddr只有 64MByte
关于./ko/load3516cv610/load3516cv610_10b_debug脚本默认分配的size
就是说
os_size = 32M
mmz_size = 32M
目前我们想分配更多的OS内存
令os_size = 36MByte
mmz_size = 28MByte
36MByte = 36x1024 KByte = 36x1024x1024 Byte = 37,748,736 Byte(10进制)
37,748,736 Byte——>转为16进制 0x240 0000
系统起始地址 0x4000 0000
0x4000 0000
+ 0x240 0000
= 0x4240 0000
所以 mmz_start= 0x4240 0000
所以mmz_size = 28M
./ko/load3516cv610/load3516cv610_10b_debug脚本为
2)进入uboot修改OS内存大小
此命令为 nor_flash命令
setenv bootargs 'mem=36M console=ttyAMA0,115200 clk_ignore_unused root=/dev/mtdblock3 rootfstype=jffs2 rw mtdparts=sfc:512K(boot),512K(env),4M(kernel),10M(rootfs)'; save
setenv bootcmd 'sf probe 0; sf read 0x41000000 0x100000 0x400000; bootm 0x41000000';
一定要save才能生效
save
reset
uboot启动参数修改成功
板端启动成功
三、cv610_20s nor_flash 管理ddr内存分配
3.1)这里是想给 mmz分配更多内存
就是说
os_size = 32M
mmz_size = 96M
目前我们想分配更多的MMZ内存
令os_size = 28MByte
mmz_size = 100MByte
28MByte = 28x1024 KByte = 28x1024x1024 Byte = 29360128 Byte(10进制)
29360128 Byte——>转为16进制 0x1C0 0000
系统起始地址 0x4000 0000
0x4000 0000
+ 0x1C0 0000
= 0x41C0 0000
所以 mmz_start= 0x41C0 0000
所以mmz_size = 100M
./ko/load3516cv610/load3516cv610_20s_debug脚本为
2)进入uboot修改OS内存大小
此命令为 nor_flash命令
setenv bootargs 'mem=28M console=ttyAMA0,115200 clk_ignore_unused root=/dev/mtdblock3 rootfstype=jffs2 rw mtdparts=sfc:512K(boot),512K(env),4M(kernel),10M(rootfs)'; save
setenv bootcmd 'sf probe 0; sf read 0x41000000 0x100000 0x400000; bootm 0x41000000';
save
reset
uboot启动参数修改成功
板端启动成功
3.2)这里是想给 os分配更多内存
就是说
os_size = 32M
mmz_size = 96M
目前我们想分配更多的 OS内存
令os_size = 36MByte
mmz_size = 92MByte
36MByte = 36x1024 KByte = 36x1024x1024 Byte = 37748736Byte(10进制)
37748736 Byte——>转为16进制 0x240 0000
系统起始地址 0x4000 0000
0x4000 0000
+ 0x240 0000
= 0x4240 0000
所以 mmz_start= 0x4240 0000
所以mmz_size = 92M
./ko/load3516cv610/load3516cv610_20s_debug脚本为
2)进入uboot修改OS内存大小
此命令为 nor_flash命令
setenv bootargs 'mem=36M console=ttyAMA0,115200 clk_ignore_unused root=/dev/mtdblock3 rootfstype=jffs2 rw mtdparts=sfc:512K(boot),512K(env),4M(kernel),10M(rootfs)'; save
setenv bootcmd 'sf probe 0; sf read 0x41000000 0x100000 0x400000; bootm 0x41000000';
save
reset
uboot启动参数修改成功
板端启动成功
3.3)给 os分配更大的运行内存,将 os_size = 44MB,mmz_size = 84MB操作
os_size=44M
44M=46,137,344 = 0x2C0 0000
0x4000 0000
+0x2C0 0000
=0x42C0 0000
ko的load3516cv610_20s_debug脚本为:
mmz_start = 0x42C0 0000
mmz_size = 84M
os_size, uboot里修改
setenv bootargs 'mem=44M console=ttyAMA0,115200 clk_ignore_unused root=/dev/mtdblock3 rootfstype=jffs2 rw mtdparts=sfc:512K(boot),512K(env),4M(kernel),10M(rootfs)'; save
setenv bootcmd 'sf probe 0; sf read 0x41000000 0x100000 0x400000; bootm 0x41000000';
save
reset