硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5577|回复: 16
收起左侧

[学习笔记] 【i.MX RT学习笔记1】i.MX RT的三种启动模式

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2017-10-27 01:56:56 | 显示全部楼层 |阅读模式
(本帖子的知识点仅供参考)
首次搞i,MX RT需要搞定的四个问题,启动方式,时钟树,电源和内核框架。先搞启动方式,这个也是最不放心的,因为i.MX是首次接触,需要认真学习下。
一、认识boot ROM
芯片自带96KB的boot ROM,这个应该是已经出厂固化好的启动引导代码,不需要用户去管。不管是那种启动方式,系统上电复位后,优先执行一段引导程序,然后根据BOOT_MODE[1:0],eFUSE和GPIO引脚的配置,选择进入那种启动方式。关于boot ROM中的代码实现了如下几个功能:
1.png

由于芯片自带的ROM是用于启动引导的,不是让用户刷程序用的,所以就得需要外部存储器来装代码了,也是boot Device,当前支持以下几种:
QQ截图20171027113834.png

这里面的每种boot Device,官方手册里面都进行详细的介绍说明,而且篇幅都很长。另外在手册启动章节的说明中,还提到了一个安全启动的问题,在boot ROM的代码中还有一部分HAB安全库,简单的说,实现的功能应该就是类似SEEGER的Flasher SECURE。
1.png



二、三种启动方式
当前支持如下三种启动方式,第四种保留未使用,对应的寄存器BOOT_MODE0[1:0]有两个对应的引脚进行控制,就跟STM32的boot0和boot1引脚差不多。
QQ截图20171027115432.png
针对这三种启动方式,手册中给了一个执行的流程图,比较重要,不过仅含Internal Boot和Serial Bootloader,而Boot From Fuse跟Internal Boot是类似的,所以流程图中没有做介绍。
1.  其中Serial Bootloader比较好理解,如果检测到是这种启动方式,直接通过USB或者串口下载程序即可,这个应该就类似STM32的串口ISP和USB DFU。
2.  Internal Boot的理解就要麻烦些了,如果检测到是这种启动方式,会继续执行boot ROM里面的程序。流程图里面的Download initial boot image,应该就是从前面说的boot Device里面优先读取出参数信息出来,然进行Authenticate image授权认证,如果通过了就行执行boot Device的程序。如果没通过的话,情况就复杂些了。Image Index镜像索引应该就是程序的入口地址,
  2.1 如果这个入口地址小于MAX Image Index最大的镜像索引,也就是说这个地址是有效性的,将设置Persistent bit(1+Image Index),并进行软件复位。这里不太好理解,不知道设置了什么。根据Persistent bit的说明,有可能是修改了下入口地址,也有可能是换个备选的boot Device,类似电脑启动,选择了硬盘优先启动,找不到硬盘,重新配置启动优先级,可以选择U盘启动。
QQ截图20171027122714.png

  2.2  如果这个入口地址大于MAX Image Index最大的镜像索引,也就是说这个地址是无效的。此时我们可以选择恢复之前的程序代码,也就是加载Serial EEPROM/ NOR中备份的代码,也可以选择不恢复,这时就根据Manufacturing Boot 的设置,可以选择从SD卡加载程序或者进入Serial Bootloader。
QQ截图20171027120338.png


三、第1种启动方式:Boot From Fuse
BOOT_MODE[1:0]  = 00的时候选择这种启动方式,跟Internal boot的区别就是启动过程不受GPIO引脚的影响,仅受eFUSE控制。
如果eFUSE的BOOT_FUSE_SEL = 0表示boot Device未编程,将直接跳转到Serial Bootloader执行。
如果eFUSE的BOOT_FUSE_SEL = 1表示boot Device有程序,将按照正常顺序执行功能。

、第2种启动方式:Serial Bootloader
BOOT_MODE[1:0]  = 01的时候选择这种启动方式,表示直接通过USB或者串口下载程序,类似STM32的串口ISP和USB DFU。

、第3种启动方式:Internal Boot
BOOT_MODE[1:0]  = 10的时候选择这种启动方式。在这种模式下,程序将继续执行boot ROM里面的程序,这部分程序主要实现初始化硬件、从boot Device中加载程序,然后跳转到相应地址去执行程序。如果过程中出错,将跳转到Serial Bootloader执行。另外,Internal Boot的启动受GPIO引脚和eFUSE的共同控制。
当BOOT_FUSE_SEL = 1的时候,所有的启动选项全部由eFUSE控制。
当BOOT_FUSE_SEL = 0的时候,GPIO引脚的控制优先级高于eFUSE。可以覆盖eFUSE的配置。NXP官方推荐实际产品中仅使用eFUSE,测试阶段可使用对应GPIO进行测试开发。


关于eFUSE涉及到很多寄存器,具体如下。现在有个问题就是这个eFUSE的BOOT_FUSE_SEL怎么配置,下载程序的时候配置下还是怎么个情况,有待后面实际操作板子研究,
1.png
2.png


具体boot Device中选择哪种外设,由eFUSE中的BOOT_CFG1[7:4]进行选择:
1.png



下面是一个FlexSPI NOR的启动流程:
QQ截图20171027140938.png




回复

使用道具 举报

54

主题

145

回帖

307

积分

高级会员

积分
307
发表于 2017-10-27 09:39:04 | 显示全部楼层
喜欢楼主的笔记,学习学习
回复

使用道具 举报

1

主题

196

回帖

199

积分

高级会员

积分
199
QQ
发表于 2017-10-27 10:36:49 | 显示全部楼层
关注本帖,
看到NXP官网上有卖板子的信息了,可惜玩不转支付,着急  [s:147]
回复

使用道具 举报

0

主题

46

回帖

46

积分

新手上路

积分
46
发表于 2017-10-27 12:27:31 | 显示全部楼层
这都开始啦。。。
回复

使用道具 举报

36

主题

2050

回帖

2158

积分

至尊会员

积分
2158
发表于 2017-10-27 14:17:25 | 显示全部楼层
666,搞起[s:141]
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

14

主题

238

回帖

280

积分

高级会员

积分
280
发表于 2017-10-27 17:16:23 | 显示全部楼层
如果eFUSE的BOOT_FUSE_SEL = 0表示boot Device有程序,将按照正常顺序执行功能。  应该是BOOT_FUSE_SEL = 1  吧?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
 楼主| 发表于 2017-10-27 17:36:37 | 显示全部楼层

回 miaoqiongb 的帖子

miaoqiongb:如果eFUSE的BOOT_FUSE_SEL = 0表示boot Device有程序,将按照正常顺序执行功能。  应该是BOOT_FUSE_SEL = 1  吧? (2017-10-27 17:16) 
对,谢谢指出
回复

使用道具 举报

7

主题

69

回帖

90

积分

初级会员

积分
90
发表于 2017-10-27 17:56:47 | 显示全部楼层
搞块四层核心板(LCD接口,SDRAM), 估计很多人想买
回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2017-10-27 22:32:01 | 显示全部楼层
跟着版主一起学,[s:151]
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2017-10-29 10:17:08 | 显示全部楼层
跟着汉子哥一起学习,求带飞
回复

使用道具 举报

3

主题

13

回帖

3

积分

新手上路

积分
3
发表于 2017-11-6 22:43:00 | 显示全部楼层
能从QSPI启动吗,我看那个HyperFlash价格挺贵的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
 楼主| 发表于 2017-11-7 01:47:57 | 显示全部楼层

回 天才少年 的帖子

天才少年:能从QSPI启动吗,我看那个HyperFlash价格挺贵的 (2017-11-06 22:43) 
可以,看这个说明
http://www.armbbs.cn/forum.php?mod=viewthread&tid=51514
回复

使用道具 举报

6

主题

87

回帖

105

积分

初级会员

色不异空 空不异色 色即是空 空

积分
105
发表于 2017-11-7 08:42:58 | 显示全部楼层
虽然接触I.MX系列处理器有6、7年了,对这种启动方式也是早有接触,但真正了解其具体执行过程,还是看楼主介绍的。
楼主让更多的人明白了他所明白的,无为(不为自己的为是无为)而无不为(没有办不到的事情),或许这就是楼主比我们懂更多单片机知识和实际经营的原因吧。
成就他人就是成就自己
回复

使用道具 举报

4

主题

122

回帖

134

积分

初级会员

积分
134
发表于 2017-11-13 17:58:34 | 显示全部楼层
总觉得代码放在外部,人家用读卡器就直接复制了。还要高加密算法。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
 楼主| 发表于 2017-11-13 20:21:46 | 显示全部楼层

回 hance2000 的帖子

hance2000:总觉得代码放在外部,人家用读卡器就直接复制了。还要高加密算法。 (2017-11-13 17:58)
支持硬件加密的,不必担心。boot rom里面已经集成好库了,无需用户去管。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
 楼主| 发表于 2018-5-4 12:48:29 | 显示全部楼层
回过头来重新看我之前写的这帖子,似乎比之前明白的多一些了。
回复

使用道具 举报

2

主题

109

回帖

115

积分

初级会员

积分
115
发表于 2018-5-4 13:05:00 | 显示全部楼层
bd7qw 发表于 2017-10-27 10:36
关注本帖,
看到NXP官网上有卖板子的信息了,可惜玩不转支付,着急  [s:147]

买安富莱的板子啊,很好支付
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-12 18:52 , Processed in 0.323236 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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