电子发烧友 电子发烧友
  • 首页
  • 技术
    可编程逻辑
    MEMS/传感技术
    嵌入式技术
    模拟技术
    控制/MCU
    处理器/DSP
    存储技术
    EMC/EMI设计
    电源/新能源
    测量仪表
    制造/封装
    RF/无线
    接口/总线/驱动
    EDA/IC设计
    光电显示
    连接器
    PCB设计
    LEDs
    汽车电子
    医疗电子
    人工智能
    可穿戴设备
    军用/航空电子
    工业控制
    触控感测
    智能电网
    音视频及家电
    通信网络
    机器人
    vr|ar|虚拟现实
    安全设备/系统
    移动通信
    便携设备
    物联网
    区块链
    HarmonyOS
    RISC-V MCU
    光伏
    ChatGPT
    IGBT
    充电桩
    氮化镓
    BLDC
    逆变器
    5G
    电机控制
  • 资源
    技术文库
    新品速递
    电路图
    元器件知识
    电子百科
    最新技术文章
  • 下载
    在线工具
    常用软件
    电子书
    datasheet
  • 专栏
    电子说
    专栏
  • 社区
    论坛
    问答
    小组
    技术专栏
    社区之星
    试用中心
    HarmonyOS技术社区
    2023电子工程师大会
  • 研究院
  • 活动
    设计大赛
    硬创大赛
    社区活动
    线下会议
    在线研讨会
    小测验
  • 学院
    直播
    课程
  • 视频
  • 企业号
  • 华秋智造
  • 工具
    PCB在线检查
    datasheet查询
    选型替代查询
    免费样品申请
    免费评测试用
    工程师专区
    技术子站
0
  • 聊天消息
  • 系统消息
  • 评论与回复
查看更多
查看更多
查看更多
  • 0

    关注
  • 0

    粉丝
  • 0

    动态
VIP于 到期 续费
  • 个人中心
  • 内容管理
  • 积分兑换
    当前积分:
  • 修改资料
  • 退出登录
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
下载中心
  • 推荐
  • 分类
  • 资料
  • 软件
  • 工具
  • 排行榜
  • DataSheet

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

3天内不再提示

System Boot启动的分析

汽车电子技术 来源:程序猿搬砖 作者:程序猿搬砖 2023-03-02 16:29 次阅读

Boot Mode

I.MX6ULL使用BOOT_MODE[1:0]两个 寄存器来确定通电或者复位时的启动方式,下面这个表格列举了具体的四种启动方式:

图片Boot From Fuses: 从熔丝引导启动,这个启动与Internal Boot模式很像,但这种方式对于GPIO配置的启动 参数无效,需要使用eFuses专用的配置进行引导。它的配置只能修改一次,后面就不能再修改了,所以这种方式基本不用。

Serial Downlo ader: 通过 USB或者 UART 下载一个镜像引导程序到内部的 RAM中启动。

Internal Boot: 从内部boot code启动。boot code是固定在SOC上面的一段代码,boot code还会对 硬件进行初始化(如果初始化系统 时钟频率)。根据BOOT_CFG的配置选择从启动设备进行启动,跳转到指定的镜像文件地址开始执行。如果在启动过程中遇到了错误,则会从Serial Downloader进行启动。

开发板开关电路图分析

下面这张图展示了开发板上面连接的具体引脚图片以BOOT_MODE0为例,管脚芯片内部接了一个100K的下拉电阻,默认状态是低电平(值0),当把开关拨到ON后电源接通,引脚通过一个10K的电阻接到了一个3.3V的电源,通过计算可得到引脚上分到了3V的电压为高电平,则引用值是1。

Internal Boot 配置

I.MX6ULL提供BOOT_MODE[1:0]与其它的24根LCD引脚共通组成了复杂的启动配置选项,但是在使用时能用到的只有其中少部分,其它大部分都是默认下拉接地(即值是0)不需要额外配置,如下图:图片其中BT_CFG4全部下拉接地了,这一组就忽略它。下面这张图给出了BT_CFG1BT_CFG2的配置与其功能:图片

BT_CFG2[4:3]: I.MX6ULL支持两个 SD/eMMC,00是SD1/eMMC1,01是SD2/eMMC2。10与11是保留未使用,可见实际起作用的是BT_CFG2[3]这个引用的值决定了从哪一张SD卡启动。BT_CFG2[3]对应了I.MX6ULL手册中的LCD_DATA11引用。I.MX6ULL开发板上面0用于外接SDK卡,1用于板载的eMMC。

BOOT_CFG1[3]: 当从 SD/EMMC 启动的时候设置启动速度,当从 NAND 启动的话设置 NAND 数量。图片

BOOT_CFG1[7:4]的配置如下图:图片图中某些位是用x来表示的,即这个位不管是0还是1都是同等的启动效果。

更完整的详解表格如下图:图片

实例启动配置表:

启动方式 BOOT_MODE0 BOOT_MODE1 BOOT_CFG2[3] BOOT_CFG1[3] BOOT_CFG1[7:4]
USB 0 1 0 0 0000
SD 1 0 0 0 010x
eMMC 1 0 1 0 011x
NAND 1 0 0 0 100x

通过以上的配置可将指定具体的启动设备,如果了启动设备之后,boot code会从指定设备中读取镜像文件来执行。

镜像文件分析

I.MX6ULL使用的是小端模式,手册中使用大端模式的地方会特意说明。

通过对 LED驱动实现最终烧写的load.mix文件得到如下图表:图片

IVT(Image Vector Table)

图片上面这个表格详细的描述了IVT+BOOT DATA+ DCD在不同启动设备中的固定位置(相对设备起始地址的偏移量)以及从起始地址开始可用的初始化加载范围,SD/eMMC启动模式偏移量为1KB,整个初始化加载范围是4KB,则IVT+BOOT DATA+DCD可使用的范围是3KB。

图片

  • header: 描述了整个IVT
Tag Length Version
0xD1 0x0020(32) 0x40
  • entry: 0x87800000,bin文件第一条指令地址,这个地址是在 DDR中的地址。
  • boot data: 0x877FF420,相对于IVT的起始地址: 0x877FF400偏移了32个字节。
  • dcd: 0x877FF42C,即dcd的数据在DDR中的地址。entry的地址是0x87800000,那可以计算(减去3KB: 0xC00)得到IVT的起始地址是: 0x877FF400。dcd的起始地址相对于IVT起始地址偏移了44个字节(ivt+boot data结构,即: 0x2C), IVT的地址加上0x2C得到dcd的地址是: 0x877FF42C。
BOOT DATA
  • start: 描述了整个load.mix(烧写到SD卡中的文件)的起始地址(在DDR中),包括了偏移的1KB,entry地址(链接起始地址)为:0x87800000 - 0x1000(4KB) = 0x877FF000。
  • length: 描述了整个load.mix的大小,在烧写的时候写入的是0x00200000,即2MB大小,整个镜像文件的大小不能超过2MB。
  • plugin: 0x00000000,没有插件设置成0
DCD(Device Configura tion Data)

DCD数据的作用则是在boot code启动加载的时候对三件设备进行配置以及检查,通过配置寄存器的写入数据可快速高效的实现寄存器或者DDR的初始化。

  • header: 头部结构描述了整个DCD的长度
Tag Length Version
0xD2 0x01E8(488) 0x40
  • Wri te Data Command: 对指定寄存器进行数据写入操作 每一个Command的都有一个头部,描述了这个Command需要执行的指令长度, Parameter的第0、1、2三位描述了指定目标的长度,0x04(100)表示指令目标(指令对应的Value)的长度是4字节。Length描述了整个Command有484个字节的指令数量,包含了头 信息,那实际操作的指令是: (484 - 4) / 8 = 60,即当前Command有60条写寄存器数据的操作指令。
Tag Length Parameter
0xCC 0x01E4(484) 0x04

除了Write Data Command还有Check data commandNOP command以及Unlock command指令块。

boot code根据启动设备的不同从固定的地址开始加载镜像文件之后并对镜像文件进行解析,通过IVT中的地址将数据拷贝到DDR中指定的地址,读取DCD初始化硬件(比如DDR)之后,开始执行bin文件0x87800000的第一条指令。这样就实现了从SD/eMMC/NAND等设备的启动了。

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

    关注

    31

    文章

    5271

    浏览量

    119655
  • 启动
    启动
    +关注

    关注

    0

    文章

    27

    浏览量

    13870
  • 复位
    复位
    +关注

    关注

    0

    文章

    169

    浏览量

    24159
收藏 人收藏

    评论

    相关推荐

    u-boot启动流程分析

    今天给大家全面的分析一下u-boot启动流程。整理这篇文章花费时间较长,中间很长时间未更新,希望这篇文章对大家有所帮助。
    发表于 07-12 15:16 698次阅读
    u-<b class='flag-5'>boot</b><b class='flag-5'>启动</b>流程<b class='flag-5'>分析</b>

    U-BOOT启动流程分享

    Bootloader移植(下)U-BOOT 启动流程u-boot启动三个2启动步骤(重点)U-boot
    发表于 01-18 10:17

    基于S3C44B0的U-Boot启动分析和移植实现

    U-Boot 是sourceforge网站上的一个开源项目,是当今比较流行、功能强大的BootLoader,能支持多种体系结构。本文在阐述U-Boot启动过程之后,对其在S3C44B0上移植过程中的要点加以
    发表于 08-27 09:08 37次下载

    U-Boot启动及移植分析

    bootloader 开发是嵌入式系统必不可少而且十分重要的部分,U-Boot 为功能强大的bootloader 开发软件。本文详细分析了U-Boot启动流程,并结合其源码,阐述了
    发表于 09-01 16:34 27次下载

    Porting U-Boot to the Control

    in details. As the development of the embedded system, the U-Boot is getting more andmore useful of the boot load
    发表于 01-25 15:45 13次下载

    适于OMAP的多级启动Boot Loader

    通过对OMAP启动方式的分析,针对OMAP需要从外部Flash启动、耗时大、风险高的缺点,提出了一种多级启动Boot Loader设计方案
    发表于 10-25 17:04 0次下载

    STM32F09x不使用BOOT脚实现System Bootlo

    STM32F09x不使用BOOT脚实现System Bootloader升级代码
    发表于 12-07 18:17 0次下载

    适于OMAP多级启动Boot Loader

    适于OMAP多级启动Boot Loader
    发表于 10-27 10:21 5次下载
    适于OMAP多级<b class='flag-5'>启动</b><b class='flag-5'>Boot</b> Loader

    Linux0.11-引导启动程序(boot

    址0x90000(576KB)处,并把启动设备中后 2kB字节代码(boot/setup.s)读入到内存0x90200处,而内核的其它部分(system 模块)则被读入到从地址0x10000开始处,因为当时
    发表于 05-15 14:40 1297次阅读
    Linux0.11-引导<b class='flag-5'>启动</b>程序(<b class='flag-5'>boot</b>)

    HAB boot启动流程与实现步骤

    在《深扒HAB boot 启动安全性》中,小编介绍了HAB boot启动流程(如图1所示),其中的1、2、3验证步骤本质上就是验签过程。
    的头像 发表于 08-12 09:39 1434次阅读

    聊一聊汽车控制器的启动——BOOT

    你有没有遇到过电脑新安装了软件,然后提示你Reboot的场景?这里的Reboot,大家都知道是重启,而Boot就是启动的意思。但你有没有想过为什么电脑启动会叫做Boot?
    的头像 发表于 02-03 17:34 2229次阅读

    Spring Boot启动 Eureka流程

    在上篇中已经说过了 Eureka-Server 本质上是一个 web 应用的项目,今天就来看看 Spring Boot 是怎么启动 Eureka 的。 Spring Boot 启动 E
    的头像 发表于 10-10 11:40 793次阅读
    Spring <b class='flag-5'>Boot</b><b class='flag-5'>启动</b> Eureka流程

    Spring Boot启动原理

    来指定依赖,才能够运行。我们今天就来分析讲解一下 Spring Boot启动原理。 1. Spring Boot 打包插件 Spring Boo
    的头像 发表于 10-13 11:44 581次阅读
    Spring <b class='flag-5'>Boot</b>的<b class='flag-5'>启动</b>原理

    安全启动Secure Boot流程

    安全启动-Secure Boot 除了NSPE和SPE两个环境的沟通流程之外,secure boot也是Trusted Firmware很重要的设计环节。 Secure boot最主要
    的头像 发表于 11-02 16:45 1215次阅读
    安全<b class='flag-5'>启动</b>Secure <b class='flag-5'>Boot</b>流程

    单片机boot0和boot1怎么设置

    单片机Boot0和Boot1简介 Boot0和Boot1是单片机启动模式选择引脚,用于选择单片机的启动
    的头像 发表于 08-22 09:50 1199次阅读

    精选推荐

    更多
    • 文章
    • 资料
    • 帖子
    • AI+工业4.0时代加速到来,VSP One如何引领数据管理新时代

      章鹰观察
      42分钟前
      103 阅读
    • 电流探头在辐射预测试的原理分析

      电磁兼容EMC
      45分钟前
      89 阅读
    • 一座数智工厂,看见汽车制造的诗与远方

      脑极体
      44分钟前
      110 阅读
    • 如何判断盲/埋孔HDI板有多少“阶”?

      PCB学习酱
      46分钟前
      101 阅读
    • 飞凌嵌入式FET6254-C核心板为智能运动控制系统强力赋能

      飞凌嵌入式
      19小时前
      188 阅读
    • PSD813F1中文资料,pdf (PSD单片机可编程外围芯

      李伟
      122
      10积分
      68下载
    • drmaa2os统一作业管理的Go API

      李丽华
      7.06 MB
      2积分
      3下载
    • raylib简单易用的视频游戏编程库

      大彭
      30.41 MB
      2积分
      2下载
    • LyMaster在线接口管理系统

      张英
      3.59 MB
      2积分
      1下载
    • DIY Arduino nRF24L01遥控器

      康大争
      0.12 MB
      2积分
      10下载
    • 【RA-Eco-RA2E1-48PIN-V1.0开发板试用】3、RTC点阵屏时钟

      jf_01200635
      10小时前
      33 阅读
    • 如何判断盲/埋孔HDI板有多少“阶”?

      邹梦雨
      1天前
      70 阅读
    • 【社区工程师专题系列第七期】没有兴趣推动是不会有成就的——李海

      ElecFans小喇叭
      1天前
      215 阅读
    • Banana Pi BPI-R3路由器开发板运行 OrayOS物联网系统

      sinovoip
      1天前
      308 阅读
    • 嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口硬件原理

      jf_13411809
      1天前
      409 阅读

    推荐专栏

    更多

      玻璃钢生产厂家周口彩绘玻璃钢雕塑加工定制武汉学校玻璃钢雕塑银川仿真人物玻璃钢雕塑公司鹤壁室内不锈钢玻璃钢人物雕塑海南卡通玻璃钢雕塑惠州景观玻璃钢动物雕塑定加工玻璃钢方形弧线雕塑曲靖玻璃钢仿真雕塑益丰玻璃钢雕塑钦州玻璃钢雕塑制作厂家福建展会玻璃钢雕塑加工广州商业广场玻璃钢卡通雕塑定制浦城玻璃钢雕塑厂家金昌玻璃钢雕塑玻璃钢雕塑的不同之处新疆乌鲁木齐玻璃钢雕塑阳江玻璃钢动物雕塑哪家便宜不可替代的玻璃钢花盆潍坊玻璃钢商场美陈景观河北欧式玻璃钢雕塑供应商玻璃钢雕塑用树脂加消泡剂吗南充玻璃钢广场雕塑杭州常见玻璃钢雕塑摆件花园玻璃钢花盆价格辽宁玻璃钢雕塑供应常用玻璃钢花盆有哪些商场雕塑飞马玻璃钢组合雕塑2018圣诞商场美陈无锡拉丝玻璃钢雕塑报价黄浦玻璃钢花盆香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

      玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化