龙芯2K1000的DDR从64bit改为32bit

运行环境

CPU:龙芯2K1000

运行操作系统:Linux3.10

调试环境:Ubuntu18.04.6

调试模块:DDR

为测试使用,DDR从64bit改为32bit,从PMON修改

1、注释掉(#为注释) Targets/LS2K/conf/ls2k 中的内存条选项。
#option AUTO_DDR_CONFIG # for DIMM recognize


注:修改 Targets/LS2K/conf/ls2k 文件需要重新执行 make cfg 命令。
2、根据内存颗粒的配置修改 Targets/LS2K/ls2k/start.S 中的 s1 值。
dli s1, 0xc0a18404
s1 的参数定义在 Targets/LS2K/ls2k/ddr_dir/ddr_config_define.h 中,例如: 

以华芯 HXB15H4G160CF 为例,查看手册。 

根据手册显示,参数为 256Mb x 16 那一列参数。 

实际板卡上的内存颗粒芯片挂载在 MC0 上,共 4 颗总大小 2GB,根据内存颗粒
的芯片手册和实际硬件情况最后 s1 的配置结果为 0xc0a18404 

在本例中,将64bit改为32bit主要修改如下

放开宏CONFIG_DDR_32BIT

如果Targets/LS2K/conf/ls2k定义了option DDR_S1=0xc1a18404,则直接在ls2k配置中修改,如果没有定义,则在 Targets/LS2K/ls2k/start.S 修改S1中的值。
在本例中,ls2k中定义如下

option DDR_S1=0xc1a18404

依据上文介绍,将第27bit置1,同时将[14:8]定义的值修改为实际的一半

再将内核设备树中memory的值改成实际值

memory {

name = "memory";

device_type = "memory";

#ifdef NOGPU

reg =  <0 0x00200000 0 0x0ce00000 // 200MiB at 2MiB

#else

reg =  <0 0x00200000 0 0x0ee00000 // 200MiB at 2MiB

#endif

1 0x10000000 0 0x20000000>; // 1462 -- 512 MiB at 2G

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT砖员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值