查看: 2523|回复: 1

[分享] i.MX RT1050学习笔记8-SEMC

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32012
    最后登录
    2024-4-9
    发表于 2021-4-1 09:39:43 | 显示全部楼层 |阅读模式
    i.MX RT1050学习笔记8-SEMC

    1 前言
    在介绍RT1050启动的时候说到RT支持各种外部存储器启动,其中一个外部存储器接口就是SEMC(Smart External Memory Controller),其可以支持SDRAM,SRAM,NOR Flash, NAND Flash,还可以支持8080显示器,接下来就对其简单介绍一下。

    2 SEMC
    RT10529 使用SEMC 外设来管理扩展的存储器,SEMC 是Smart External Memory Controller 的缩写,译为智能的外部存储控制器。它可以用于驱动包括SRAM、SDRAM、NorFlash、NAND Flash 等类型的存储器以及使用8080 接口协议(DBI 接口)的显示器和设备。本章节中我们只讲述SEMC控制SDRAM的功能。SEMC 支持使用8、16 位的方式访问SDRAM,最多支持控制4 个SDRAM存储器,每个SDRAM存储器最大容量为512Mb(64MByte),支持使用ARM内核的AXI 接口控制SDRAM。

    下面介绍一下SEMC的基本特征。
    ①支持8个存储区域,每个存储区域大小可达512Mbit
    ②支持AXI接口和IP总线接口
    ③SDRAM:支持8/16位模式,支持4片选信号
    ④NAND:支持8/16位模式,不支持 HW ECC,对于AXI写操作支持32位传输
    ⑤NOR:支持16位模式,支持异步模式,仅支持IP操作,支持ADMUX和AADM
    ⑥SRAM:支持16位模式,支持异步模式,支持ADMUX和AADM

    以上的一些特征只是我挑了一部分说了一下,对于其具体的特征大家可以自行参考官方文档参考指南。
    (注:在这里的ADMUX和AADM分别为Address/Data Multiple模式以及Advanced Address/Data Multiple模式,其中Address/DataMultiple模式简单的来说就是数据线可以当地址线使用,其中ADMUX模式最大支持16位数据选址,而AADM则最大支持24位选址。)

    2.1 SEMC的结构

    SEMC的模块框架图如下图所示:

    1.1.png

    从图中,我们可以清楚地看到SEMC的五个部分,分别是AXI接口控制器,IP总线接口控制器,AXI/IP仲裁器,存储器控制器和IO控制器。从图中就可以清楚地看出我们可以通过AXI和IP两种接口去访问存储器接口器,然后通过IO接口对外部存储器进行读写操作。

    2.2 AXI和IP
    SMEC支持使用IP 命令和AXI 命令控制外部存储器。

    2.2.1 AXI
    AXI 是AdvancedeXtensible Interface 的缩写,这是ARM 公司提出的AMBA 协议的一部分,是一种高性能、高带宽、低延迟的片内总线。
    在RT1052 中,地址0x80000000~0xDFFF FFFF 的1.5GB 空间是分配给SEMC的外部存储器的映射区域,使用SEMC 控制的SDRAM、NOR、 PSRAM、NAND 以及 8080 接口的设备共用该空间,在初始化存储设备参数的时候可在该区域指定具体映射的基地址。例如指定SDRAM使用0x8000 0000 作为基地址,NAND Flash 使用0000 作为基地址。当访问这些映射的地址时,会触发AXI 命令,从而使SEMC外设产生控制时序从对应的外部存储器中访问数据。

    2.2.2 IP
    使用IP 命令访问实际上就是通过向相应的寄存器写入配置,从而使SEMC 产生访问时序的方式。相关的寄存器有IP 命令控制寄存器IPCR0/1/2、IP 命令寄存器IPCMD以及收发数据寄存器IPRXDAT/IPTXDAT。控制的流程如下:
    (1) 通过IPCR0/1/2 以及IPTXDAT 寄存器设置好要访问的设备地址、传输的数据大小、写屏蔽(即类似UDQM、LDQM的配置)以及要传输的数据;
    (2) 通过IPCMD 寄存器设置好要发送的访问指令,例如控制SDRAM时的预充电(PRECHARGE)、行有效(ACTIVE)、读写等指令(READ/WRITE)等;
    (3) 等待IP命令执行完成;
    (4) 若是读访问,可通过IPRXDAT寄存器得到存储器返回的数据。使用IP 命令控制SEMC 时,可以通过NXP 提供的库函数SEMC_SendIPCommand 来实现。

    2.3 IO接口定义

    下表列出SEMC复用引脚相关信息。
    1.2.png
    1.3.png
    1.4.png

    我们从这张表中不难看出只有NOR和SRAM支持ADMUX(Address/Data MUX Mode)。

    3 SEMC应用实例
    我们在使用SEMC时,一般应用上会使用SDRAM和NAND比较多,使用SDRAM来扩展RAM,使用NAND作为启动设备和存储设备,至于NOR则是更多的使用串行NOR,并行NOR现在也不怎么多见了,外置SRAM则成本太高,用的概率则也不会太多。下面我们举SDRAM和NAND的例子来说明一下SEMC的具体使用方法。

    3.1 SEMC-SDRAM
    一般用户会采用外加SDRAM来增加RAM大小。根据引脚定义描述表进行硬件连接,一般都不会出什么问题。
    (注意DQS:在这里需要注意的一点就是DQS这个信号,在使用SDRAM时,需要将RT1052 的这个SEMC_DQS引脚悬空,然后在软件配置方面必须开启该引脚的SION 功能。SEMC的模块控制寄存器MCR[DQSMD]位置1,即配置为使用DQS 引脚的读选通信号。寄存器位MCR[DQSMD],它用于选择DQS 的读选通模式,可选值分别为使用内部回环的读选通信号(kSEMC_Loopbackinternal)和从DQS 引脚得到的读选通信号(kSEMC_Loopbackdqspad),DQS 信号用于接收方更准确地接收数据,应用时需要把它设置成kSEMC_Loopbackdqspad才能以高频率的时钟访问SDRAM。)

    NXP官方的SDK提供了非常方便的初始化函数,分别是初始化SEMC控制器的SEMC_Init和初始化SDRAM控制器的SEMC_ConfigureSDRAM。具体的应用细节大家可以参考NXP的SDK包中SEMC的实例程序。
    (注意:在一些应用中常常希望能够把SDRAM用作C程序的堆、栈又或者是具有初始值的全局变量,甚至是希望在调试阶段直接把代码下载到SDRAM中运行,在这些情况下我们必须把SDRAM的初始化过程确保初始化C语言运行环境时或下载代码到SDRAM时存储器已经能正常访问。在这里我们可以通过两种方法去实现,第一种则是针对debug时,使用脚本文件来进行初始化;第二种则是针对从外部存储器启动的情况下,通过配置iamge文件中DCD数据进行初始化,具体操作我会在后面的文章中作详细的介绍。)

    3.2 SEMC-NAND
    NXP官方的SDK提供了非常方便的初始化函数,分别是初始化SEMC控制器的SEMC_Init和初始化SDRAM控制器的Nand_Flash_Init。而且还提供了相关的读写命令函数,都在SDK包里的fsl_semc_nand_flash.c文件里,大家可以自行去参考,在这里则不再多说了。
    (注意:同SARAM一样,如果使用NAND作为启动设备时,则需要进行提前初始化,但是这里得注意一点的就是NAND不支持XIP,所以其也不支持debug。)

    ————————————————
    版权声明:本文为「小猫爪」的原创文章

    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-24 18:42
  • 签到天数: 206 天

    [LV.7]常住居民III

    18

    主题

    311

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2743
    最后登录
    2024-4-9
    发表于 2021-4-12 12:57:09 | 显示全部楼层
    签到一波
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-23 14:03 , Processed in 0.122114 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表