0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCU上简单易用的特定外设配置功能 - XMCD

痞子衡嵌入式 来源:痞子衡嵌入式 2023-10-29 16:01 次阅读

从i.MX RT1160/ RT1170 B0以及后续的RT1180开始,BootROM引入了XMCD新功能,其用途与传统DCD功能(之前文章介绍过)类似。DCD可以实现对芯片指定外设的配置,常常用于配置SEMC去初始化 SDRAM。但DCD仅支持寄存器操作,因此用户需要从寄存器角度去理解去配置,这种方式较为复杂且对用户来说不够友好,对于具有复杂时序配置要求的外设来说更加难以使用。

基于此,BootROM推出了XMCD,以一种对用户更友好更直观的方式对 SDRAM/HyperRAM等外设进行配置。

不过大家可能并不熟悉该功能或者还没真正的去使用过,今天就以RT1170上的XMCD为例带大家一探究竟。

1. 何为XMCD

XMCD全称ExternalMemory Configuration Data,是i.MX RT11xx系列芯片BootROM中的新功能,与DCD类似,用于应用程序启动前对系统外设进行特定配置。XMCD数据块位于IVT头偏移0x40的位置,由XMCD头和外设特定配置块组成。 XMCD支持配置的设备类型及相应的配置块如下所示:

HyperRAM/APMemory (FlexSPI接口) – FlexSPI RAM 配置块

SDRAM (SEMC接口) – SEMC SDRAM 配置块

XMCD头的定义如图1所示:

da478efa-762f-11ee-939d-92fbcf53809c.png

图1 XMCD头

其中,[19:16]和[15:11]域仅对FlexSPI接口的外设有效,当选择SEMC接口时,这些区域被忽略,设为0即可。[11:0]域用于设置XMCD数据块的总大小,等于XMCD头大小+配置块大小。

下面分别介绍两种外设配置块:

1.1 FlexSPI RAM配置块

FlexSPI RAM 配置块用于配置连接到FlexSPI接口的HyperRAM或者APMemoryPSRAM外设。提供了简化版和完整版两种配置方式供用户选择。

其中,简化版配置可以满足大部分HyperRAM 或 APMemory 外设的典型应用。如图2所示,用户仅需要简单配置设备类型,频率,PINMUX等参数即可成功初始化外设。

da50aa08-762f-11ee-939d-92fbcf53809c.png

图 2 简化版配置

当然,如果用户需要启用一些高级功能,XMCD还提供了完整的512字节FlexSPI RAM配置块以支持灵活的配置。具体的配置内容详见RT1170 Reference Manual的10.8.2.2章节。

1.2 SEMC SDRAM配置块SEMC SDRAM配置块用于配置连接到SEMC接口的SDRAM设备。与FlexSPI类似,也提供了简化版和完整版两种配置方式供用户选择。

XMCD提供了68字节数据结构用于SDRAM配置,图3展示了数据结构的前10字节内容。当选择简化配置时(即图中config_option设为0x00),仅需要配置该数据结构的前9个字节,即时钟频率,设备大小和port大小,不过该配置仅适用于连接到CS0的SDRAM外设且SDRAM相关参数是固定的,若外设连接到其他CS或当前参数无法成功初始化SDRAM,则需要使用完整配置。

若选择完整配置(即图中config_option设为0xFF),则需要配置整个68字节。完整数据结构详见Reference Manual第10.8.3.1章节。

da5c0a9c-762f-11ee-939d-92fbcf53809c.png

图3 SDRAM配置数据结构(前10字节)

2. 如何使用XMCD

2.1 SDK的使用

RT1170 SDK从 2.12.0开始,就已经加入了XMCD功能且boot的时候默认使用XMCD初始化SDRAM,并采用简化版配置。

任意打开一个示例工程,都会包含xmcd.c/h文件,当工程选项预编译宏里有XIP_BOOT_HEADER_XMCD_ENABLE=1时被使能。

da6a7014-762f-11ee-939d-92fbcf53809c.png

图4工程文件中的XMCD

不过SDK里面仅实现了使用XMCD简化配置初始化SDRAM,对于FlexSPI外设的初始化或者完整配置需要用户参考现有XMCD代码,结合前面介绍的SEMC/FlexSPI配置块的定义进行具体配置。

2.2 使用MCUBootUtility工具

NXP-MCUBootUtility是一款功能强大的一站式安全加密启动工具,其v5.3.2版本可以支持XMCD功能进行FlexSPI和SEMC外设的配置。

下载地址:https://github.com/JayHeng/NXP-MCUBootUtility/releases/tag/v5.3.2

该工具的XMCD配置界面如图5所示:

da6e9586-762f-11ee-939d-92fbcf53809c.png

图5XMCD配置界面

该工具目前只有简化配置支持界面直接配置,完整配置需要用户生成相应的XMCD bin文件(该文件由XMC头与外设配置块组成)然后导入。

选择Use XMCD option即可进行外设的简化配置,如图6所示,选择SEMC或FlexSPI接口,然后在下方对应区域填入所需参数即可。

da729370-762f-11ee-939d-92fbcf53809c.png

图6

XMCD简化配置

配置完XMCD后,用户需要再准备一份应用程序,该应用程序链接到对应外设地址中,且不用带boot header,然后导入工具,执行All-In-One Action 操作就可以成功生成可启动文件并下载到板卡中去执行。

图7是读回来的可启动文件,可以看到在IVT头偏移0x40的位置便是相应的XMCD数据。

da78db2c-762f-11ee-939d-92fbcf53809c.png

图7 可启动文件中的XMCD数据

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16984

    浏览量

    350276
  • 寄存器
    +关注

    关注

    31

    文章

    5310

    浏览量

    119994
  • 应用程序
    +关注

    关注

    37

    文章

    3240

    浏览量

    57599

原文标题:MCU上简单易用的特定外设配置功能 - XMCD

文章出处:【微信号:pzh_mcu,微信公众号:痞子衡嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在嵌入式系统中,主控MCU集成多种片外设设计

    本文导读随着MCU的快速发展,MCU内部往往集成了多种外设。同种外设在不同MCU中的实现可能千差万别,但AW
    的头像 发表于 05-25 09:04 1.1w次阅读
    在嵌入式系统中,主控<b class='flag-5'>MCU</b>集成多种片<b class='flag-5'>上</b><b class='flag-5'>外设</b>设计

    EFM32系列32位MCU的GPIO配置

    ,为避免意外影响GPIO的配置,可以按引脚锁定其GPIO配置。另外,针对部分外设线路有、下拉电阻的配置需求,这就需要与
    发表于 07-08 04:20

    学习CubeMX配置STM32的各个外设功能

    前言一节我们讲解了STM32CubeMX的基本使用和工程的配置,那么这一节我们正式来学习CubeMX配置STM32的各个外设功能了今天我们
    发表于 08-13 06:15

    STM32CubeMX配置MCU外设的过程是怎样的

    STM32与LAN9252的通信主要涉及哪些内容?STM32CubeMX配置MCU外设的过程是怎样的?
    发表于 10-18 06:02

    MCU模块的功能有哪些

    外设时钟等;初始化RAM区;MCU的功耗控制;MCU的复位控制;获取复位原因.模块提供的服务接口功能三、配置1、时钟
    发表于 11-01 07:32

    采用高性能MCU且支持BLE功能的IoT节点参考设计

    。特性 通过一个系统示例来展示如何构建支持 BLE 的简单物联网节点以对节点进行 BLE 访问和控制在此示例中,TM4C1294 MCU 和 CC2650 已配置为主 BLE 中心节点和从属 BLE
    发表于 09-22 07:15

    恩智浦推“简单易用”型USB微控制器 提供众多增强功能

    恩智浦半导体近日宣布,推出最新简单易用且经USB-IF认证的USB微控制器系列LPC11U6x。该系列延续了恩智浦屡获殊荣的LPC11Uxx产品组合的简单易用性和设计灵活性,提供众多增
    发表于 02-10 17:04 842次阅读

    你知道MCU还可以简单功能增强吗_如何增强?

    本文首先介绍了MCU的特点,其次阐述了MCU功能,最后介绍了如何使用MCU进行简单功能增强。
    发表于 04-23 14:16 1612次阅读

    基于标准的MCU内核和外设适用于特定的应用

    微控制器本质是通用设备,能够满足各种控制任务。它们的发展追踪了对功能强大,成本低但功能强大的设备的需求,因此它们现在可以支持各种终端产品。主要是,它们在灵活性,成本和性能方面的平衡选择用于相对
    的头像 发表于 01-17 08:08 4124次阅读
    基于标准的<b class='flag-5'>MCU</b>内核和<b class='flag-5'>外设</b>适用于<b class='flag-5'>特定</b>的应用

    单片机的控制外设是什么?和控制外设的使用资料说明

    端口,让处理器来控制。只要处理器给了足够的信息,外设就能完成特定的一组任务(个人理解o.O)。举例来说(以下只是简单举例,实际还有更多的应用); GPIO:配置好需要的引脚之后,就可以
    发表于 08-07 17:33 0次下载
    单片机的控制<b class='flag-5'>外设</b>是什么?和控制<b class='flag-5'>外设</b>的使用资料说明

    主板特定配置指南

    主板特定配置指南
    发表于 05-10 20:53 8次下载
    主板<b class='flag-5'>特定</b><b class='flag-5'>配置</b>指南

    如何使用MCU进行简单功能增强

    系列MCU可以通过多种集成混合信号功能帮助部署简单的传感解决方案。为扩展这些低成本MCU功能,TI为25个常见系统级
    的头像 发表于 11-10 09:37 614次阅读

    通过RT-Thread Studio配置N32L406片外设DAC的功能

    本文通过 RT-Thread Studio 配置 N32L406 片外设 DAC 的功能,通过使用dac_open,dac_write,dac_close函数实现DAC的使用,不需要
    的头像 发表于 08-15 14:32 1278次阅读
    通过RT-Thread Studio<b class='flag-5'>配置</b>N32L406片<b class='flag-5'>上</b><b class='flag-5'>外设</b>DAC的<b class='flag-5'>功能</b>

    XMCD – i.MX RT11xx系列简单易用特定外设配置功能

    从i.MX RT1160/ RT1170 B0以及后续的RT1180开始,BootROM引入了XMCD功能,其用途与传统DCD功能(之前文章介绍过)类似。DCD可以实现对芯片指定外设
    的头像 发表于 10-26 09:25 1807次阅读
    <b class='flag-5'>XMCD</b> – i.MX RT11xx系列<b class='flag-5'>简单</b><b class='flag-5'>易用</b>的<b class='flag-5'>特定</b><b class='flag-5'>外设</b><b class='flag-5'>配置</b><b class='flag-5'>功能</b>

    车规MCU功能安全外设驱动

    功能安全外设驱动(SPD) 车规MCU功能安全外设驱动(SPD)是为了满足汽车电子系统的功能
    的头像 发表于 10-27 17:34 1471次阅读
    车规<b class='flag-5'>MCU</b><b class='flag-5'>功能</b>安全<b class='flag-5'>外设</b>驱动