基本信息
文件名称:NXP 系列:i.MX RT 系列_(4).i.MX RT系列编程基础.docx
文件大小:25.35 KB
总页数:25 页
更新时间:2025-06-12
总字数:约1.33万字
文档摘要

PAGE1

PAGE1

i.MXRT系列编程基础

1.引导程序和启动模式

i.MXRT系列单片机支持多种引导程序和启动模式,这些模式为开发者提供了灵活的启动选项,以满足不同的应用需求。引导程序(Bootloader)是单片机在上电或复位后首先执行的代码,它负责初始化硬件并加载用户应用程序。启动模式则决定了单片机从哪个存储器中加载引导程序。

1.1引导程序概述

引导程序是嵌入式系统中非常重要的组件,它在系统启动时执行以下任务:

初始化硬件,包括时钟、电源管理、外设等。

加载用户应用程序到RAM中。

跳转到用户应用程序的入口点。

i.MXRT系列单片机支持多种引导程序,包括NXP官方提供的引导程序和用户自定义的引导程序。官方提供的引导程序通常具备以下特点:

支持多种存储器类型,如SPIFlash、QuadSPIFlash、I2C、UART等。

提供安全启动选项,支持加密和验证。

具有较高的可靠性和稳定性。

1.2启动模式

i.MXRT系列单片机支持多种启动模式,包括:

内部存储器启动:从内部Flash启动。

外部存储器启动:从外部存储器(如SPIFlash、QuadSPIFlash、I2C、UART等)启动。

USB启动:从USB设备启动。

JTAG启动:通过JTAG接口启动。

启动模式的选择通常通过设置启动配置寄存器(BootConfigurationRegister,BCR)来实现。BCR通常位于系统控制模块(SystemControlModule,SCM)中,可以通过编程来设置不同的启动模式。

1.3配置启动模式

配置启动模式的方法如下:

通过硬件引脚设置:某些引脚在上电时的状态可以确定启动模式。

通过编程设置:通过编程BCR寄存器来设置启动模式。

1.3.1硬件引脚设置

硬件引脚设置通常在单片机的用户手册中有详细说明。例如,i.MXRT1052可以通过以下引脚设置启动模式:

BOOT_MODE[1:0]:确定启动模式。

BOOT_CFG1[2:0]:确定启动设备类型。

BOOT_CFG2[2:0]:确定启动设备的配置。

1.3.2编程设置

通过编程设置启动模式通常涉及修改BCR寄存器。以下是一个示例代码,展示如何通过编程设置i.MXRT1052从外部SPIFlash启动:

#includefsl_clock.h

#includefsl_common.h

#includefsl_iomuxc.h

//设置启动模式

voidconfigureBootMode(void){

//设置BOOT_CFG1[2:0]为001,表示从SPIFlash启动

IOMUXC_GPR-GPR1=(IOMUXC_GPR-GPR1~IOMUXC_GPR_GPR1_BOOT_CFG1_MASK)|

(0x01IOMUXC_GPR_GPR1_BOOT_CFG1_SHIFT);

//设置BOOT_CFG2[2:0]为000,表示SPIFlash配置为8位模式

IOMUXC_GPR-GPR1=(IOMUXC_GPR-GPR1~IOMUXC_GPR_GPR1_BOOT_CFG2_MASK)|

(0x00IOMUXC_GPR_GPR1_BOOT_CFG2_SHIFT);

//设置BOOT_MODE[1:0]为01,表示启动模式为SPIFlash

IOMUXC_GPR-GPR1=(IOMUXC_GPR-GPR1~IOMUXC_GPR_GPR1_BOOT_MODE_MASK)|

(0x01IOMUXC_GPR_GPR1_BOOT_MODE_SHIFT);

}

intmain(void){

//配置启动模式

configureBootMode();

//初始化系统时钟

CLOCK_SetSimSafeDivs();

//初始化其他外设

//...

//跳转到用户应用程序

//...

while(1){

//用户应用程序主循环

}

}

1.4安全启动

i.MXRT系列单片机支持安全启动,以确保启动过程中加载的代码是经过验证和加密的。安全启动通常涉及以下步骤:

生成密钥:生成用于加密和验证的密钥。

加密用户应