在移植UBoot到S5PC110平台时,如何正确配置DDR内存地址范围以适应不同的系统时钟配置?
时间: 2024-11-16 14:16:52 浏览: 17
在移植UBoot到S5PC110平台时,正确配置DDR内存地址范围是关键步骤,它直接关系到内存初始化的成功与否以及系统稳定运行的基础。推荐深入学习《UBoot初始化DDR解析:内存地址范围与配置》来理解DDR内存地址配置的重要性及其原理。
参考资源链接:[UBoot初始化DDR解析:内存地址范围与配置](https://wenku.csdn.net/doc/18z5qt6qfq?spm=1055.2569.3001.10343)
首先,需要理解S5PC110 SoC的内存控制器(DMC)配置,并且明确DMC0和DMC1所控制的内存地址范围。在UBoot中,通过修改内存配置值(如DMC0_MEMCONFIG_0)来改变DDR映射的内存地址范围。例如,从裸机环境的0x20E01323调整为UBOOT环境下的0x30F01313,从而使得内存地址从0x***-0x2FFFFFFF改变为0x***-0x3FFFFFFF。
其次,要考虑到S5PC110 SoC支持的256MB内存地址范围可以配置在***到3FFFFFFF之间。UBOOT选择了一个3开头的地址,扩展了可用的物理地址范围至0x***-0x4FFFFFFF,其中***-3FFFFFFF对应DMC0,***-4FFFFFFF对应DMC1,这样可以更好地适应不同的系统时钟配置和内存需求。
除了地址范围的配置,还需要考虑时钟配置对内存设置的影响。在`x210_sd.h`文件中定义了一系列内存配置值,并使用条件编译进行管理,以适应不同的时钟需求。移植过程中需要根据具体平台的时钟频率和系统需求选择合适的内存配置。
最后,确保在DDR初始化完成后,将栈正确迁移到DDR内存中。在UBoot的`start.S`中,第一次栈设置发生在284-287行,用于SRAM中的运行,随后在297-299行进行第二次设置,将栈迁移到DDR内存中,地址为0x33E00000。
总之,正确的DDR内存地址范围配置是移植UBoot成功的关键。通过阅读《UBoot初始化DDR解析:内存地址范围与配置》并结合具体平台的时钟配置,可以有效地解决内存初始化和栈迁移中遇到的问题,保证系统的稳定运行。
参考资源链接:[UBoot初始化DDR解析:内存地址范围与配置](https://wenku.csdn.net/doc/18z5qt6qfq?spm=1055.2569.3001.10343)
阅读全文