RT image架构解析

RT ROM启动image的时候,会从固定的位置抓取IVT。根据IVT里面的信息进行boot。
本文重点介绍下IVT的架构。

为何要有IVT

  • 做过MCU开发的小伙伴应该都清楚,我们制作一个app存放到固定的位置,reset后bootloader就会将其 boot起来。
  • 以NXP的K65为例,我们做的image,起始4byte为SP,紧接着的4byte为PC。然后将image烧写到内部 flash的0xa000处,reset板子后,K65的flashloader就将image boot起来。
  • 但是RT有多个外部的boot device,比如SD,Flexspi nand等。我们无法做到将一个image写到固定的 地址,然后让ROM去boot它。
  • 所以我们需要对原始的image包裹一层IVT,IVT里面记录了image的运行地址,PC等等。ROM从固定的位 置读取IVT,根据IVT里面的信息进行boot。这就是IVT的由来。

IVT架构

1472831-20180829095614833-747688059.png

  • Boot device memory是指当前image存储的device中的布局
  • Dest memory指image运行时的image布局
  • 如果是XIP boot的话,这两者是一样的
  • Non-xip的话,一个是存储device中的image布局,另一个就是运行的image布局

  • IVT参数详解
    • hader
      ROM根据header来判断是否为合法的IVT,可以设置为0x412000D1
    • entry
      image的PC或者vector table的base address
    • boot data
      ROM根据boot data里面的信息,将boot image拷贝length长度到start处
    • csf
      image的签名数据存储地址,secure boot会对image进行认证。证书的信息都在csf中

IVT存在哪里

  • ROM规定了不同的device中IVT的offset,如下图。
    1472831-20180829095639146-1155057360.bmp

  • ROM根据不同的device,从offset处获取IVT。根据IVT中的boot data的start address来判断是否为XIP。如果是XIP,则不处理。否则将image copy到start address处运行。然后根据entry进行boot

今天我们讲解了IVT的由来,架构,ROM怎么对IVT进行处理
下一次我们来看看怎么制作image,看看怎么给image加IVT,怎么生成签名\加密的image。

转载于:https://www.cnblogs.com/richard-xiong/p/9550057.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值