小猫爪:i.MX RT1050学习笔记10-SDRAM的提前初始化

小猫爪:i.MX RT1050学习笔记10-SDRAM的提前初始化

1 前言

前面提到我们可以在运行APP之前对RT的SDRAM进行初始化,确保其可以作为RT的外部RAM正常运行,大致有使用脚本和使用DCD,接下来我们来看看具体操作。

2 使用脚本

这种方式只适用在IDE debug环境下,如果我想将代码运行至SDRAM中进行debug,则可以采用这种方式。

在IAR环境中,脚本文件可以在如下界面中设置:
在这里插入图片描述我们打开该文件,看一看里面在干什么:

  __writeMemory32(0xffffffff, 0x400FC068, "Memory");
  __writeMemory32(0xffffffff, 0x400FC06C, "Memory");
  __writeMemory32(0xffffffff, 0x400FC070, "Memory");
  __writeMemory32(0xffffffff, 0x400FC074, "Memory");
  __writeMemory32(0xffffffff, 0x400FC078, "Memory");
  __writeMemory32(0xffffffff, 0x400FC07C, "Memory");
  __writeMemory32(0xffffffff, 0x400FC080, "Memory");

里面都是一些往一些地址寄存器写数据,在这里我只截取一段。

在KEIL环境中,脚本文件可以在如下界面中设置:
在这里插入图片描述打开该文件:

  _WDWORD(0x400FC068,0xffffffff);
  _WDWORD(0x400FC06C,0xffffffff);
  _WDWORD(0x400FC070,0xffffffff);
  _WDWORD(0x400FC074,0xffffffff);
  _WDWORD(0x400FC078,0xffffffff);
  _WDWORD(0x400FC07C,0xffffffff);
  _WDWORD(0x400FC080,0xffffffff);

里面也都是一些往一些地址寄存器写数据,在这里我只截取一段。

所以我们只要把跟初始化SDRAM相关的寄存器值加到初始化脚本中,就可以在debug 代码之前将SDRAM成功初始化。

3 使用DCD

还有一种方法,则是使用镜像中的DCD数据对SDRAM接口进行提前初始化,RT1050的bootROM会先读取镜像中的DCD数据,对SDRAM接口进行初始化。在镜像分解那一章我已经对DCD进行了详细的解析。

4 使用config tools快速得到初始化数据

我们已经了解到怎样提前初始化数据,接下来介绍一种方法可以快速计算出初始化SDRAM后的相关寄存器值。

扫描二维码关注公众号,回复: 13586790 查看本文章

这需要用到NXP官方的工具MCUXpresso Config Tools ,下载链接为:https://www.nxp.com.cn/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-config-tools-pins-clocks-peripherals:MCUXpresso-Config-Tools

打开MCUXpresso Config Tools,选择第二项 :

在这里插入图片描述
然后随便找一个NXP的官方demo,这里我使用的是IAR版的hello world工程(一定得是NXP的官方例程,因为它是根据一定的结构和文件名来工作的)。

然后选择其他工具的设备配置数据选项(DCD),如下:

在这里插入图片描述
打开后如下:

在这里插入图片描述可以看到跟SDRAM有关的寄存器我们可以看得清清楚楚,在这个界面我们非常轻易看懂每一个寄存器每一位代表着什么,比如我点开SEMC_SDRAMCR1,如下:

在这里插入图片描述可以看到这个寄存器非常清楚地罗列出了,我们可以非常清晰方便的对其进行配置。

配置完我们则可以将其值放入debug脚本中,或者点击更新代码按钮更新DCD数据:

在这里插入图片描述更新的DCD数据最后在工程文件的dcd.c中,可以直接点击代码预览查看代码:

在这里插入图片描述
END

猜你喜欢

转载自blog.csdn.net/Oushuwen/article/details/109309910