AM5728配置DMM_LISA_MAP修改内存工作模式

在测试AM5728时发现,ARM读完SD card中的MLO文件后没有后续操作,推断是由于我们的硬件更改导致的内存加载出错,研究TI给出的《AM572x Technical Reference Manual》,需要配置相关的寄存器。

硬件更改

原TI AM5728使用EMIF0接口和EMIF1接口,使用interleaving模式配置2GB的内存,每个EMIF接口连接两个512MB的内存芯片。为降低功耗,平衡性能和成本,现更改为单EMIF接口连接两个256MB的芯片,并且在ECC内存接口增设ECC DDR保证内存运行的可靠性。

EMIF1EMIF2ECC
TI AM57282 x 512MB2 x 512MB/
ZHX星务主板2 x 256MB/128MB

寄存器详解

根据TRM 15.2.3.5.1.2所述,在系统启动时,需要合理更改DDR的寄存器配置,主要有以下四种:

  • DMM_LISA_MAP_3
  • DMM_LISA_MAP_2
  • DMM_LISA_MAP_1
  • DMM_LISA_MAP_0

参考DMM_LISA_MAP_i的寄存器表格可以重置DDR的启动功能和映射大小。

上图为寄存器的内容,SYS_SIZE为配置的内存总大小,SDRC_MAP为interleaving的配置方式,可选只使用EMIF1、只使用EMIF2、或者EMIF1和EMIF2交叉存取的方式,如果工作在非交叉存取的模式,SDRC_INTL不需要配置。

在这里插入图片描述

U-BOOT配置寄存器

在TI-SDK的U-BOOT源码board/ti/board.c中,以下程序完成了对TI AM5728 EVM的内存配置:

static const struct dmm_lisa_map_regs beagle_x15_lisa_regs = {
	.dmm_lisa_map_3 = 0x80740300,
	.is_ma_present  = 0x1
};

void emif_get_dmm_regs(const struct dmm_lisa_map_regs **dmm_lisa_regs)
{
	if (board_is_am571x_idk())
		*dmm_lisa_regs = &am571x_idk_lisa_regs;
	else
		*dmm_lisa_regs = &beagle_x15_lisa_regs;
}

根据原设置使用寄存器3的内容0x8074 0300可以看出内存的配置如下:
在这里插入图片描述

根据硬件配置,我们的内存设置如下:
图4 修改后内存工作模式
参考:TI wiki

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

言京谅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值