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系列单片机支持安全启动,以确保启动过程中加载的代码是经过验证和加密的。安全启动通常涉及以下步骤:
生成密钥:生成用于加密和验证的密钥。
加密用户应