STM32N6 如何配置EMMC启动 LAT1581

关键字:STM32N6,FSBL,EMMC,BootROM

1. 引言

ST官方手册UM3234"How to proceed with boot ROM on STM32N6 MCUs"中 对STM32N6的各种启动模式进行了详细的介绍,但客户在使用STM32N6配置eMMC 启动过程中仍会遇到了一些问题。本文重点介绍eMMC启动配置,涉及到了常见的 STM32N6 eMMC启动配置中的问题,供大家参考。

2. BootROM

STM32N6(内核为Arm-Cortex-M55)没有内置Flash,上电复位后,首先执行 BootROM代码,BootROM根据配置确定启动源及启动顺序。BootROM代码固化在 STM32N6中的ROM中,是多级启动序列的第一级,它根据检测到的启动类型,执行 BootROM代码的不同分支。STM32N6的启动类型根据Boot Mode的设置不同,分为 Flash Boot 和Serial Boot。 Flash Boot 需要将Boot0 和Boot1都设置为0,支持的 Flash设备包括sNOR,HyperFlash,SD 卡与eMMC 。Serial Boot则需要将Boot0设 置为1,Boot1设置为0,包括USB Boot和UART Boot,对于Serial Boot本文不做讨 论,只重点讨论属于Flash Boot的eMMC 启动设置。

3. eMMC启动

3.1. Boot Mode设置

首先,我们需要确定STM32N6 Boot Mode,对于eMMC启动,属于Flash Boot, 需要将Boot0和Boot1均设置为0。参见下表1,其中列出了更多Boot Mode的设置细 节。

表1. STM32N6 Boot Mode设置

3.2. Flash Boot Source 设置

eMMC启动需要设置BOOTROM_CONFIG_2(OTP11),其中 BOOTROM_CONFIG_2[8 :5]是flash_boot_source 的选项,如下表2所示。设置为2 时,从SDMMC1外设启动,设置为8时,从SDMMC2启动。

表2. STM32N6 OTP Flash Boot Source设置

需要注意的是,STM32N6有多种封装。STM32N6xxX0(264 Pins)和 STM32N6xxL0(223 Pins)有两个SDMMC接口;STM32N6xxB0(198 Pins)和 STM32N6xxI0(178 Pins)只有一个SDMMC接口(SDMMC1),即只能从SDMMC1 启动;而STM32N6xxA0(169 Pins),STM32N6xxZ0(142 Pins)没有一个SDMMC 接口,不能从eMMC启动。

SDMMC1/2在Boot器件使用1根数据线(SDMMC_D0)、CMD及CK与eMMC 设备交互。具体如下表3所示。

表3. STM32N6 SDMMC Boot管脚

3.3. VDDIO与HSLV设置

STM32N6中,VDDIO4/5是独立的外部供电,VDDIO4对PC[1], PC[12:6], 和 PH[9,2]十个 I/O供电,VDDIO5对PC[0], PC[5:2], 和 PE[4]六个 I/O供电,这些管脚与 SDMMC外设相关。VDDIO4 对应SDMMC1,VDDIO5 对应SDMMC2(见前表3)。 关于电源管理部分,请参阅RM0486 第13章Power Control部分。这里当供电电压 VDDIO采用1.8V时,需要注意使能 HCONF1(OTP124)中的HSLV_VDDIO4或/和 HSL_VDDIO5以激活HSLV(高速低压模式),详见下表4。

表4. STM32N6 OTP HSLV 设置

3.4. SDMMC外设设置

STM32N6 BootROM代码首先会对SDMMC1或SDMMC2接口进行设置, SDMMC1与SDMMC2配置相同,具体见下表5。

图5. STM32N6 BootROM 针对eMMC 启动的SDMMC 设置

3.5. eMMC设备设置与时序

STM32N6 上电复位后BootROM会发送 GO_PRE_IDLE_STATE命令(参数为 0xF0F0F0F0 的CMD0,eMMC设备EXT_CSD[162] 可以保持默认,不用设置 RST_n_ENABLE)。eMMC设备如果设置了BOOT_PARTITION_ENABLE,则识别并进 入引导模式(5种操作模式之一)。STM32N6(主机)发送CMD0后,需要eMMC设 备给出应答(ACK)。eMMC设备在CMD线拉低50ms之内给出应答(010)之后,开 始准备引导数据,并遵循eMMC规范,STM32N6支持V5.1,在CMD线拉低1秒之 内,开始在数据线上向主机发送第一个引导数据。主机必须保持CMD线为低以读取所有 引导数据。eMMC设备引导流程如下图1所示(摘自eMMC 规范V5.1)

图1. eMMC 引导流程

STM32N6 eMMC Boot不支持DDR数据传输,也不支持HS200模式,仅支持SDR 数据传输,在该单倍数据率模式(SDR)下,设备数据输出和主机采样都在时钟上升沿完 成。eMMC具体时序图如下图2所示(摘自eMMC spec V5.1):

图2. eMMC 启动模式时序

eMMC设备启动应答模式如下图3所示:

图3. eMMC 启动应答模式

备注:图1,图2,图3均摘自eMMC规范。

要实现上述时序,需要对eMMC设备进行相应配置。下表6中列出了主要的eMMC 设备相关寄存器的设置。

表6. eMMC设备寄存器设置

当完成所有配置后,则可以进行启动测试。测试前需要将FSBL烧录到eMMC。FSBL 或应用中可以对SDMMC设置进行修改,比如使用4线通信(取决于硬件设计)及高速 模式等,以提升eMMC设备数据分区的读写速度。

4. 小结

ST 官方手册UM3234对STM32N6的各种启动模式已有详细介绍,基于给客户快速 开发参考的目的,本文针对eMMC启动设置,结合规范进行了一个专题介绍。其中并没 有对规范进行过多的介绍,需要的客户可以参阅JEDEC STANDARD,Embedded Multi Media Card (e•MMC) Electrical Standard (V5.1)。

意法半导体公司及其子公司 ("ST")保留随时对 ST 产品和 / 或本文档进行变更的权利,恕不另行通知。买方在订货之前应获取关于 ST 产 品的最新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息,请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财 产。 本文档是ST中国本地团队的技术性文章,旨在交流与分享,并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致,请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档(包括代码,电路图等)信息, 我们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。

相关推荐
逆小舟1 小时前
【STM32】IIC→OLED显示
stm32·单片机·嵌入式硬件
Geek__19921 小时前
STM32F103 ADC DMA采样与均值滤波处理实战指南
c语言·stm32
沉在嵌入式的鱼1 小时前
STM32--HX711称重传感器
stm32·单片机·嵌入式硬件·hx711·称重传感器
richxu202510011 小时前
嵌入式学习之路>单片机核心原理>(3)定时器
单片机·嵌入式硬件·学习
Geek__19922 小时前
记录FreeRtos消息调试问题
c语言·stm32·mcu
小琦QI2 小时前
STM32F407VET6+CCE4503学习笔记---IOLINK server
笔记·stm32·学习
Darken032 小时前
基于单片机STM32中的OLED显示屏
stm32·单片机·oled·显示屏
Bona Sun2 小时前
单片机手搓掌上游戏机(十九)—pico运行doom之硬件连接
c语言·c++·单片机·游戏机
Darken032 小时前
什么是SPI协议?
单片机·spi