当前位置: 首页 > news >正文

建设网站图片大全如何免费建网站赚钱

建设网站图片大全,如何免费建网站赚钱,建设网站的本质,有哪些网站可以做笔译《S32G3系列芯片——Boot详解》系列——Boot过程相关镜像详解#xff1a;IVT、DCD、App Boot镜像到底是什么#xff1f; 一、概述二、 IVT镜像2.1 IVT header的结构2.2 BCW和LCW的结构2.3 最后16个字节GMAC的概念 三、DCD镜像3.1 DCD相关的基本概念3.2 DCD header的结构3.3 D… 《S32G3系列芯片——Boot详解》系列——Boot过程相关镜像详解IVT、DCD、App Boot镜像到底是什么 一、概述二、 IVT镜像2.1 IVT header的结构2.2 BCW和LCW的结构2.3 最后16个字节GMAC的概念 三、DCD镜像3.1 DCD相关的基本概念3.2 DCD header的结构3.3 DCD指令3.3.1 写数据指令Write Data3.3.2 检查数据指令Check Data3.3.3 空指令指令NOP 四、Self-Test镜像4.1 自检的启动条件4.2 自检流程 五、应用程序启动镜像App Bootloader5.1 镜像结构5.2 RAM start pointer和RAM entry pointer5.3 μSDHC启动场景下的注意点 六、Serial Boot镜像七、结语 学习更多Boot相关内容获取HSE基于IVT安全启动方案 返回专栏总目录 《S32G3系列芯片——Boot详解》 Tip鼠标悬停双虚线关键词/句可获得更详细的描述 一、概述 S32G3系列芯片的正常启动需要一份有效的程序镜像主要包括以下部分 Image Vector Table (IVT)这是BootROM从启动设备读取的第一个镜像。IVT包含了启动过程中BootROM使用的必要数据如各个镜像的入口点、指向设备配置数据DCD的指针和其他指针。Device Configuration Data (DCD)提供了对设备进行配置的数据。Self-Test DCD用于执行自测。Application boot image用于启动应用程序的镜像BootLoader通常芯片使用方会自行开发这个镜像可以把它类比为linux中的uboot。Serial boot image包含通过串行接口启动时需要的数据实际上就是能跑在SRAM里面的App数据。 在详细认识每个镜像前先简单了解主分区和备份区的概念 在S32G3系列芯片中镜像的存储结构设计采用了主分区Primary Partition和备份区Backup Partition的概念旨在增强系统的可靠性和故障恢复能力。主分区包含当前运行的系统镜像它是系统启动和运行时主要读取和执行的代码和数据区域。而备份区则存储了系统镜像的一个副本用于在主分区损坏或更新失败时恢复系统。 这种设计允许系统在遇到软件故障或损坏时自动或通过用户指令切换到备份区的镜像从而快速恢复到一个已知良好的状态减少系统的停机时间。此外这也支持了更为安全和灵活的软件更新机制因为更新可以首先在备份区进行只有当新更新被验证无误后才将其作为主要运行镜像。这大大降低了软件更新导致系统不稳定或不可用的风险。 二、 IVT镜像 IVT的位置在BootROM中是有固定要求的BootROM启动后会直接从这个固定的特殊地址读取这个IVT镜像。对于不同类型的启动设备IVT距离设备基地址的偏移如下所示 BootROM在执行引导时根据启动设备的不同QuadSPI启动或μSDHC启动对于指向设备配置数据DCD、自检DCD、应用程序镜像以及HSE_H固件镜像的指针有不同的对齐要求。对于QuadSPI启动这些指针需要是8字节对齐的而对于μSDHC启动这些指针则需要是512字节块对齐的。 在S32G3系列芯片的启动过程中IVT包含了重要的启动配置信息和指向各镜像代码入口指针。IVT镜像的结构如下所示 地址大小(字节)字段名称备注0h4IVT header4字节镜像头标识常称为镜像的Magic number4h4保留未使用保留未使用8h4Self-Test DCD pointerprimarySelf-Test DCD镜像的位置主区Ch4Self-Test DCD pointer (backup)Self-Test DCD镜像的位置备份区10h4DCD pointerprimaryDCD镜像位置主分区14h4DCD pointer (backup)DCD镜像位置备份区18h4HSE_H firmware flash memory start pointerprimaryHSE_H固件的位置主分区1Ch4HSE_H firmware flash memory start pointer (backup)HSE_H固件的位置备份区20h4Application boot code flash memory start pointerprimary应用程序bootloader的位置主分区24h4Application boot code flash memory start pointer (backup)应用程序bootloader的位置备份区28h4Boot configuration wordboot的配置信息2Ch4Life cycle configuration wordLC配置信息30h4保留未使用保留未使用34h32Reserved for HSE_H firmware专门为HSE_H固件保留的字段54h156保留未使用保留未使用F0h16Galois Message Authentication Code (GMAC)IVT镜像前240字节的GMAC值 2.1 IVT header的结构 4个字节的固定值含义如下 2.2 BCW和LCW的结构 除了前面提到的IVT中存在各个镜像的entry pointer外还有两个内容需要大家关注下分别是Boot configuration wordBCW、Life cycle configuration wordLCW。 ——BCW的结构 4个字节BCW的32位功能划分如下 各位域字段区间含义如下 位域描述选项31:4保留—3BOOT_SEQ安全启动模式0 - 非安全启动。BootROM不执行应用程序镜像认证。1 - 安全启动。HSE_H固件在认证后执行应用程序镜像。2SWT启动目标看门狗0 - BootROM不配置SWT_01 - BootROM在启动目标启用之前用默认超时启用SWT_01:0BOOT_TARGET选择启动的目标核00 - Cortex-M7_001b - Cortex-A53_010 - 保留11 - 保留 ——LCW的结构 4个字节BCW的32位功能划分如下 各位域字段区间含义如下 位域描述选项31:24保留—7:4IN_FIELD0101 — 将生命周期状态推进到IN_FIELD。此字段值优先于OEM_PROD字段值。其他字段值将被忽略。3:0OEM_PROD1010 — 将生命周期状态推进到OEM_PROD。其他字段值将被忽略。 2.3 最后16个字节GMAC的概念 IVTImage Vector Table镜像中的GMACGalois Message Authentication Code是一种基于Galois Field算法通常是GF(2^128)的消息认证码用于验证数据的完整性和真实性。 IVT镜像最后16字节的GMAC是在镜像创建过程中计算出的一个值它用于在系统启动过程中验证镜像的完整性。具体来说启动前硬件或者引导程序会使用相同的算法和密钥对当前的镜像内容进行计算生成一个GMAC值并将其与镜像中存储的GMAC值进行比对。如果两个值匹配说明镜像未被篡改系统可以信任并执行该镜像如果不匹配则系统可能会拒绝启动该镜像以防止潜在的安全风险。 这种机制提供了一种安全措施确保了镜像在制作后至执行前没有被未经授权的第三方修改是系统安全启动的一个关键部分。 三、DCD镜像 3.1 DCD相关的基本概念 当设备复位后所有模块寄存器都会被设置成默认值。这些默认设置通常不是最佳的配置可能不会发挥出系统的最优性能。此外有些外设在使用前必须进行配置。 DCD即设备配置数据Device Configuration Data是BootROM用来配置设备上的外设的配置信息的。这些配置信息包含在DCD镜像中。BootROM通过在IVT中的指针来确定DCD镜像的位置。 DCD镜像的最大尺寸是8192字节8k。这意味着配置数据的总大小不能超过8192字节。BootROM在启动过程中会读取IVT中的DCD指针然后根据这些配置信息来初始化外设以确保外设能按照预期的方式工作例如设置时钟、电源管理、接口模式等从而达到系统的最佳性能。 DCD镜像结构如下所示它主要是由一系列DCD命令组成的大端字节序的数组也就是下表的第二行 3.2 DCD header的结构 3.3 DCD指令 上面提到DCD镜像实际上是一个由允许的DCD命令组成的大端字节序的数组主要包括以下三种类型的指令写数据Write Data、检查数据Check Data、空指令NOP。 3.3.1 写数据指令Write Data Write Data命令是一种用于将数据写入到目标地址的控制指令。该命令允许你将单字节、双字节或四字节值或位掩码写入到一系列相应的目标地址中。该命令的结构是一个大端big-endian字节数组这意味着在这个数组中数据的高位字节存储在低地址上而数据的低位字节存储在高地址上。指令格式如下所示 其中各字段的含义进一步解释如下 命令字节描述Length包括头部在内的整个写数据命令结构体的大小。Parameters该字节被划分为若干字段详见下文。Address数据将被写入的目标地址。可以指定一个或多个地址和数值/掩码对。相同的字节和标志参数适用于命令中的所有位置。Value/Mask要写入地址的数据值或位掩码。可以指定一个或多个地址和数值/掩码对。相同的字节和标志参数适用于命令中的所有位置。 其中Parameters字节的结构如下所示 位域描述选项7:5保留—4Data Set状态位显示目标位是否被成功覆写。 0 - 目标地址的位未被覆写 1 - 目标地址的位被覆写3Data Mask允许覆写目标地址的位。 0 - 所有位都可以被覆写 1 - 只有特定位可以被覆写2:0Bytes目标位置的宽度以字节为单位。 001 - 1字节 010 - 2字节 100 - 4字节 成功执行“Write Data”命令时该命令将根据Data Mask和Data Set值按照下表所示的方式向每个目标地址写入数据 在使用“Write Data”命令时BootROM将执行一系列检查以确保数据写入操作的有效性和安全性。下面是当处理写地址/值对列表时BootROM执行的检查 地址对齐性检查   BootROM会检查目标地址是否与在“参数字节”Parameters byte的Bytes字段中指定的数据宽度具有相同的对齐。地址对齐意味着例如如果你试图写入一个四字节32位的值目标地址必须是4的倍数。如果地址没有正确对齐BootROM不会写入任何值。 数值大小和位掩码宽度检查   BootROM还会检查写入的值是否超出了在Parameters byte的Bytes字段中指定的数据宽度所允许的大小或者位掩码是否宽于允许的宽度。如果任何值太大或任何位掩码太宽BootROM不会写入任何值。 目标地址范围检查   另外BootROM会检查目标地址是否位于允许的范围内。不是所有的内存区域都是可以让用户程序写入的。某些区域可能是受保护的有的可能是未映射的。如果任何地址不在允许的范围内BootROM不会写入任何值。 关于SRAM的特别说明SRAM在初始化之前不能使用“Write Data”命令写入数据这是因为SRAM在某些系统中是有64位ECC错误校正码保护的。在SRAM初始化完成之前如果写入数据将会触发ECC错误。SRAM初始化过程会确保每个存储位置有正确的ECC值以便后续的读写操作不会产生ECC错误。因此确保SRAM已经通过适当的过程初始化并设置好ECC值是非常重要的步骤。 3.3.2 检查数据指令Check Data “Check Data”命令是一种用于从源地址测试特定的1字节、2字节或4字节位掩码的指令。与写数据操作类似这个命令的结构同样是一个大端big-endian字节数组。其结构如下所示 其中各字段的含义进一步解释如下 命令字节描述Length整个检查数据命令结构包括头部的大小。用于确定可选的计数Count。Parameters该字节被划分为若干字段详见下文。Address要测试的源地址。Mask要测试的位掩码。Count可选的轮询计数。如果没有指定值此命令将无限期轮询直到满足退出条件。对于有限的值此命令轮询Count次。如果Count 0此命令表现为NOP无操作命令。 其中Parameters字节的结构如下所示 位域描述选项7:5保留—4Data Set启用目标地址的位检查。 0 - 目标地址的位被忽略 1 - 检查目标地址的位3Data Mask在Data Set字段设置为1时使能部分/全部位的检查。 0 - 检查掩码中的所有位 1 - 在目标地址检查掩码中的任何位2:0Bytes目标位置的大小以字节为单位。 001 - 1字节 010 - 2字节 100 - 4字节 此命令通过不断轮询直到满足退出条件或达到轮询计数。如果在达到轮询计数之前退出条件没有得到满足那么这个操作会被跳过。退出条件由Data Mask和Data Set值确定。执行逻辑如下所示 以下是“Check Data”命令无法读取字段的原因 地址对齐性问题   如果地址没有与在参数字节Parameters byte的Bytes字段中指定的数据宽度相同的对齐那么值不会被读取即对于给定的数据宽度只有当地址正确对齐时才能保证数据的正确读取。例如如果你试图读取一个4字节的值那么地址必须是4的倍数。 掩码宽度问题   如果掩码宽度超出了在参数字节的Bytes字段中指定的数据宽度所允许的范围那么值也不会被读取。这意味着掩码必须适用于指定的数据宽度内才能正确执行测试。 这个“Check Data”命令的使用场景包括检查硬件设备的状态寄存器确认特定的位是否已经被设置或清除这在等待设备就绪或检测特定事件发生时特别有用。通过指定要检查的位通过Data Mask和期望的位值通过Data Set可以精确地控制和测试所需的条件。 3.3.3 空指令指令NOP 该指令是个4字节的大端序的数组没什么实际作用其结构如下所示 四、Self-Test镜像 BootROM提供的自检功能是在设备经历电源开启复位POR后用来确保设备正确运行的一种机制。这一功能对于验证系统完整性至关重要并且能够在早期检测到故障从而使系统采取纠正措施或阻止其启动进入故障状态。 4.1 自检的启动条件 设备必须刚完成电源开启复位POR。自检完成状态ST_DONE在管理控制寄存器组MC_RGM中未被设置。这个标志用来指示自检是否已经运行过以避免在非POR的后续复位中不必要地重新运行。 4.2 自检流程 验证自检DCD镜像头BootROM首先验证自检镜像的头部确保它是有效的。将自检DCD镜像复制到内部内存如果头部有效BootROM将镜像复制到内部内存中执行。认证镜像如果生命周期LC状态是OEM_PROD或IN_FIELD且IVT_AUTH设置为1并且未启用外部控制则BootROM会认证镜像确保其来源可信。这个步骤是安全启动中的功能执行自检命令执行自检镜像中的命令。最后一个命令应该通过设置自检控制单元2STCU2中的RUNSW[RUNSW]为1来触发开始自检。 Tip   STCU2中的看门狗超时也会导致ST_DONE assert并且破坏性复位事件不会清除ST_DONE标志。因此这两种事件都不会导致BootROM重新运行STCU2自检。 自检DCD镜像的结构与标准DCD镜像的结构相同用于设备配置。BootROM使用IVT中提供的指针定位自检DCD镜像。自检DCD镜像的最大大小也是限制为8192字节镜像头结构如下所示 这一自检过程是BootROM执行的一系列自动化操作用于验证设备的硬件和配置。它对于维护系统的可靠性和安全性至关重要确保设备仅使用经过验证和确认的硬件设置启动。 五、应用程序启动镜像App Bootloader 5.1 镜像结构 在进行非安全启动IVT镜像的BCW中的BOOT_SEQ 0时应用程序启动代码Application Boot Code镜像必须符合如下结构。 偏移地址大小字节名称备注0h4Image header标志应用程序镜像的开始4h4RAM start pointer指向BootROM加载应用程序启动代码的RAM地址8h4RAM entry pointer指向复位后启动目标核的起始位置。对于Cortex-M7它对应于VTOR。对于A53它对应于代码执行的起始位置。这个指针应该在应用程序镜像被下载的SRAM区域内。Ch4Code length镜像中代码段的长度。10h48reserved保留未使用40h代码长度Code代码大小可以是任意大小直到系统SRAM的最大大小。 其中前四个字节的header的结构如下所示 5.2 RAM start pointer和RAM entry pointer 关于其中提到的RAM起始指针和RAM入口指针可能不是很好理解进一步解释如下 ram start pointer是指向要将应用程序启动代码第一个字节加载到的RAM地址。这意味着BootROM会从这个指定的内存地址开始将应用程序代码从存储介质如闪存复制到RAM中。ram entry pointer是指向应用程序实际开始执行的入口点的地址。这可以看作是系统重置后CPU开始执行代码的第一个地址。对于Cortex-M7核这个指针对应于VTOR向量表偏移寄存器的值而对于A53核它指向代码执行的起始点。 所以简单来说ram start pointer定义了代码在RAM中的加载位置而ram entry pointer定义了处理器从哪里开始执行代码这两者为BootROM提供了必要的信息来正确加载和启动应用程序。 5.3 μSDHC启动场景下的注意点 在通过μSDHC接口进行应用程序启动时若IVT的BCW中的BOOT_SEQ等于0BootROM会使用从34008000h到34079C00h的地址范围进行其内部操作。这一地址范围内的空间不应该被应用程序在启动周期间使用以避免潜在的冲突或数据损坏。 此外BootROM在μSDHC启动的情况下还会使用从34002000h开始的4KB SRAM内存空间用于ADMA高级直接内存访问。因此为了确保启动过程的顺利进行以及数据的完整性应用程序启动镜像在μSDHC启动的情况下也不应该与这个特定的内存位置重叠。 总之在设计应用程序启动逻辑时特别是在使用μSDHC作为启动介质的场景下需要避开BootROM使用的这些特定内存区域以保证启动流程的正确性和应用程序的稳定运行。这是因为BootROM需要这些特定的内存区域来执行其启动过程中的一些关键操作例如加载启动代码、临时存储数据等。如果应用程序不小心覆盖了这些区域可能会导致启动失败或运行时错误。 六、Serial Boot镜像 未使能安全启动的场景下Serial Boot镜像结构如下所示 偏移地址大小字节名称备注0h4Image header标志应用程序镜像的开始4h4RAM start pointer指向BootROM加载应用程序启动代码的RAM地址8h4RAM entry pointer指向复位后启动目标核的起始位置。对于Cortex-M7它对应于VTOR。对于A53它对应于代码执行的起始位置。只有Cortex-M7支持serial bootCh4Code length镜像中代码段的长度。10h48reserved保留未使用40h代码长度Code代码大小可以是任意大小直到系统SRAM的最大大小。 使能安全启动时镜像结构如下所示 地址偏移字节数名称注释0h4Image header标志镜像的开始4h4RAM start pointer指向BootROM加载应用程序启动代码的RAM地址。8h4RAM Entry pointer指向复位后启动目标核心的起始。对于Cortex-M7它对应于VTOR。仅支持Cortex-M7的串行启动Ch4Code length word镜像代码段的长度。10h4Auth mode保留给非安全启动。14h4NSKPUB Key SelectorNSK公钥选择器18h40Reserved保留未使用40h4096NSKPUBNXP公钥16个用于RSA认证。1040h256CSKPUB客户RSA认证的公钥。1140h256CSK SignatureCSKPUB认证的RSA签名。1240h代码长度Code代码可以是任何大小直至SRAM的最大大小。1240h 代码长度256Public key Signature镜像认证的公钥签名。 其中前四个字节的header的结构如下所示 Tip如果Serial Boot镜像是由NXP进行签名的话CSKPUB 和 CSK 签名字段是保留的 其中Code length word的结构如下所示 各位域字段的含义如下 位域字段描述31NO_ECHO表明不要从下一个串行阶段开始回显传入的串行数据。30 : 0CODE_SIZE要下载的串行启动代码的大小。 七、结语 本文仔细描述了启动过程中的关键组件IVT中断向量表、DCD设备配置数据和应用程序启动镜像等内容。通过详细的解析和对这些重要部分的讨论我们了解到它们是如何在设备的启动过程中发挥作用以及它们如何协同工作以确保系统的顺利启动和运行。 IVT作为镜像索引中心为系统启动寻找镜像提供了方向。DCD则确保了硬件设备在启动过程中得到正确的配置而应用程序启动镜像则是启动流程的终极载体。 一个稳定可靠的启动过程是系统整体性能的基石。希望本文能够帮助大家更好地理解和掌握启动相关镜像的复杂性也期待这些信息能够在你未来的工作中发挥出实际的帮助和价值。 返回专栏总目录 《S32G3系列芯片——Boot详解》
http://www.pierceye.com/news/802857/

相关文章:

  • 设计网站专题页包括那些项目个人做网站要买什么域名
  • 建网站 方法中信建设有限责任公司获奖
  • 做宠物商品的网站无锡自适应网站开发
  • 网站后台怎样登陆做网站数据库及相关配置
  • 昆明seo网站排名网站代码 输入文字 跳出内容
  • 济南建站公司网站广州市网站设计
  • 网站模板做的比较好的公司网站制作汇报会
  • 个人网站图片海外网站备案
  • 兰州手机网站制作公司哪家好网店分销平台
  • 百度建立自己的网站网络工程师培训课程
  • 微网站的制作过程海南注册公司怎么注册
  • 公司网站制作投标建站行业都扁平化设计
  • 男女做a视频网站wordpress询价功能
  • 网站建设视频百度网盘下载我做网站价格
  • 江苏省建设集团有限公司网站首页东莞网络推广外包
  • 梁平网站建设莱芜网络营销
  • 自学网站建设需要什么学历学校网站建设总结报告
  • 增城新塘网站建设平面设计技术培训机构
  • 游戏网站开发视频运动品牌网页设计
  • 成都比较好的网站建设公司做视频后期的网站
  • 重庆网页搜索排名提升专业seo优化推广
  • 手机免费代理ip网站模板网站的优势有哪些
  • dede地方门户网站模板做网站备案
  • 域名访问网站的知识站酷网官网进入
  • 6入空间网站免费观看wordpress转盘抽奖源码
  • 手机网站怎么开发工具网站开发中如何实现gps定位
  • sql2008做网站焦作网站建设哪家便宜
  • hao123网站源码制作2015最新仿制作链接怎么做
  • 做网站源代码需要买吗做任务得佣金的网站
  • 网站开发php还是jsp中式风格装修效果图