TC3xx学习笔记-启动过程详解(一)

article/2025/6/27 5:57:26

文章目录

    • 前言
    • Firmware启动过程
      • BMHD Check流程
        • ABM启动
        • Internal Flash启动
        • Bootloader Mode
        • Processing in case no valid BMHD found
        • Processing in case no Boot Mode configured by SSW
    • 总结

前言

之前介绍过UCB BMHD的使用,它在启动过程中起着重要的作用,本文详细介绍TC3xx的启动过程中的硬件启动阶段-Boot Firmware

Firmware启动过程

在这里插入图片描述
Firmware存储在BootRom中

BROM是内置在芯片内的一块存储区域,这块存储区通常为只读存储区,可用于存储Firmware程序,之后,由Firmware引导程序启动。如下,为Tc3xx的BROM地址,8开头带cache,A开头不带cache在这里插入图片描述
在这里插入图片描述
SSW在CPU0上执行——所有其他cpu在引导期间保持Halt状态,由用户软件启动,而:

BootROM中的SSW起始地址为CPU0程序计数器寄存器中的复位值。从这个位置获取一条指令,这是任何设备启动后执行的第一条指令

-在此入口点之后,固件立即检查testmode,如果选择testmode,则执行跳转到测试固件

最后一条SSW指令执行跳转到第一条用户代码指令。根据用户选择的启动配置,可以从不同的位置获取第一个用户指令

启动软件包含根据以下一项或多项初始化设备的过程

-先前存储在专用闪存位置的信息

-专用寄存器/内存位置的特殊位/字段的当前状态

-触发ssw执行的事件类型(最后一次重置事件)

-应用于外部(配置-)引脚的值(可选)
在这里插入图片描述
在这里插入图片描述

BMHD Check流程

在这里插入图片描述
在这里插入图片描述
BMHD从0-3依次进行check,如果找到有效的BMHD,则不会check后面的了

BMHD校验有效后,会获取PINDIS,如果=0,且DMU_HF_PROCONTP.BML等于0时
会获取STSTAT.HWCFG [3],当为0时,通过HWCFG4,5来确认要执行的模式,否则从BMHD中的BMI字段获取启动模式
在这里插入图片描述

ABM启动

Alternate Boot Mode备用启动模式处理由备用启动模式标头的内容控制。表47中定义了单个备用启动模式头的结构。
在这里插入图片描述
当选择ABM启动时,BMHD中的STAD地址需要设置为ABMHD的地址

ABMHD可以是pflash上的任意一块地址

而在ABMHD中的STADABM中定义用户的起始地址

在这里插入图片描述
ABM模式可以校验用户的内存区域,在上图的Code CRC校验处,可以作为简单的校验用户的boot

使用的应该是和BMHD一样的校验算法
校验失败时,如果是从HW启动的(在BMHD阶段会Set BOOT_PIN Flag),则会再次根据PIN4,5的状态来加载是ASC还是Generic BSL01 Generic,10 ASC

BOOT_PIN在如下寄存器中:
在这里插入图片描述

Internal Flash启动

内部flash启动,一般正常启动时用的就是这种方式
-这是通常的简单启动模式,其中执行是从内部flash开始的

-起始地址由启动模式头(BMHDx.STAD)定义

如果是HW PIN方式,则需要PIN4,5都为高电平

如果不是HW PIN方式,则根据BMHD中的BMI的HWCFG寄存器位决定,需要设置为111

Bootloader Mode

根据HW PIN或BMHD中的HWCFG来决定选哪个内部boot
在这里插入图片描述

Processing in case no valid BMHD found

如果上述序列没有找到有效的引导模式标头,则SSW不会执行用户代码。SSW准备设备,以便用户可以连接、安装有效的Boot Mode Headers、将应用程序代码写入PFlash或安装其他设备配置。
在这里插入图片描述

  1. 检查设备是否启用了“默认配置”—条件是HSM启动被禁用
    (DMU_SP_PROCONHSMCCFG.HSMBOOTEN=0)和启动模式锁定未激活
    (DMU_HF_PROCONTP.BML = 00 b)
    a)如果是-在SCU_STMEM1寄存器中设置标志BOOTMODE_CONFIGURED=1,继续下一步

    b)如果不是-指示“No Boot Mode configured”(在SCU_STMEM1寄存器中重置标志BOOTMODE_CONFIGURED),然后转到步骤4

    注意: 这种Case下, Processing in case no Boot Mode configured by SSW将会被执行
  2. initialize security sensitive RAMs
  3. 检查是否收到Reset后暂停请求(CBS_OSTATE.HARR=1)(eg:debugger)

    a)如果是,将BOOT_CFG安装为Flash方式内部启动-对应0b111

    b)如果不是- install BOOT_CFG to Generic BSL mode-对应0b100,将CPU0程序暂存内存(CPU0_PSPR)的第一个地址作为用户码起始地址安装到BOOT_ADDR中,然后执行步骤5
  4. 在PFLASH0的逻辑扇区S40中安装偏移量为0x0020的地址(即0xA000A020),作为用户代码启动地址进入BOOT_ADDR
  5. 保存启动模式信息,以便HSM和应用软件可用

    a)配置启动模式BOOT_CFG -在SCU_STMEM1寄存器中

    b)配置启动地址BOOT_ADDR -在SCU_STMEM2[31:2](地址是word对齐的-位[1:0]在这里不改变)
  6. 当没有找到有效的BMI时配置锁步监控功能-设置SCU_LCLCON0.LSEN0=0 (disable lockstep for CPU0)
Processing in case no Boot Mode configured by SSW

如果最初没有找到有效的启动模式头,并且上述序列(在没有找到有效BMHD的情况下进行处理)在其第一步退出(因为设备的“默认配置”被禁用)- SSW不能选择任何启动模式,这意味着不会有效地退出SSW。

在这种情况下,SSW流程是(参见图20):

检查设备是否允许调试访问

—if yes - enable debug access by installing CBS_OSTATE.IF_LCK to 1 (done using CBS_OEC register)

else -enter endless NOP loop
在这里插入图片描述
-没有设置启动模式,SSW会进入无限循环。

-如果调试接口没有被HSM锁定,调试器仍然可以连接到设备重新编程

此处的CBS_OSTATE在手册中查不到,需要到OCDS文档中查,目前没有该文档。对应为Cerberus寄存器中的OSCU寄存器中的OSTATE
在这里插入图片描述
在这里插入图片描述

总结

硬件Firmware启动需要Check BMHD,在开发过程中,通过四个BMHD设置不同的起始地址(第一个BMHD设置为Boot起始地址,后面设置为APP起始地址),可以实现Boot不存在时,单APP也可以正常启动。跳转到BMHD的起始地址后,后面的启动过程就是用户可以修改的了,后面会再介绍~


http://www.hkcw.cn/article/eiiQDLNbkW.shtml

相关文章

Docker 镜像制作

目录 镜像制作及原因 快照方式制作镜像 Dockerfile 制作镜像 为什么需要 Dockerfile Dockerfile 指令 常见问题 镜像制作及原因 镜像制作是因为某种需求,官方的镜像无法满足需求,需要我们通过一定手段来自定义镜像来满足要求。 制作镜像往往因为以…

模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》

一、前言:重新认识vector的复杂性 在C开发者中,std::vector常被视为"动态数组"的简单实现,但其底层机制实则蕴含着深刻的工程智慧。本篇将通过: 多维度源码剖析(GCC/Clang/MSVC三平台实现对比)…

散列表(哈希表)

1 散列表的引入 如果我们叭者几个学生按照顺序存储存入到下面这个数组的话,那么每一次的查找方法只有顺序查找或者折半查找,最低的时间复杂度也就只可以下降到(logn),但是时间复杂度还是可以下降,下降到O(1) 我们只要把对应的学号…

【基于阿里云搭建数据仓库(离线)】Data Studio创建资源与函数

Data Studio支持在您的数据分析代码中引用自定义的资源和函数(支持MaxCompute、EMR、CDH、Flink),您需要先创建或上传资源、函数至目标工作空间,上传后才可在该工作空间的任务中使用。您可参考本文了解如何使用DataWorks可视化方式…

【计算机网络】第3章:传输层—拥塞控制原理

目录 一、PPT 二、总结 (一)拥塞的定义 (二)拥塞产生的原因 (三)拥塞控制的目标 (四)拥塞控制方法分类 1. 端到端拥塞控制 2. 网络辅助拥塞控制 (五)…

嵌入式鸿蒙开发环境搭建操作方法与实现

Linux环境搭建镜像下载链接: 链接:https://pan.baidu.com/s/1F2f8ED5V1KwLjyYzKVx2yQ 提取码:Leun vscode和Linux系统连接的详细过程1.下载Visual Studio Code

结构型设计模式之装饰模式

文章目录 1. 装饰模式概述2. 模式结构3. 装饰模式与继承的区别4. 装饰模式的优缺点优点缺点 5. C#代码示例5.1 基本示例 - 饮料与调料5.2 更复杂的示例 - 文本格式化器 6. C#中装饰器模式的实际应用6.1 C# I/O 流处理6.2 ASP.NET Core 中间件 7. 装饰模式与其他设计模式的比较8…

开发的几种格式,TCP的十个重要机制

自定义协议中, 我们有几种常见的数据格式: 1.xml 通过标签来组织数据 请求: 优势: 让数据的可读性变更好了 劣势: 标签非常繁琐,传输的时候也占用更多网络带宽(maven会使用xml来管理项目配…

ASP.NET Core OData 实践——Lesson9绑定和未绑定的Function和Action(C#)

大纲 概念支持的接口主要模型设计控制器设计数据源FunctionBound FunctionUnbound Function重载(overload) ActionBound ActionUnbound Action重载(overload)Bound ActionUnbound Action 主程序服务文档模型元文档 代码地址参考资…

描述性统计——让数据说话

第03篇:描述性统计——让数据说话 写在前面:大家好,我是蓝皮怪!前两篇我们聊了统计学的基本概念和数据类型,这一篇我们要正式进入数据分析的第一步——描述性统计。别被名字吓到,其实就是用一组数字&#x…

【MySQL基础】库的操作:创建、删除与管理数据库

MySQL学习: https://blog.csdn.net/2301_80220607/category_12971838.html?spm1001.2014.3001.5482 前言: 在上一篇我们已经讲解了数据库的基本内容,相信大家对数据库已经有了一些自己的理解,从这篇开始我们就开始正式进入如何…

国足抵达雅加达备战世预赛 力争两连胜晋级希望

中国男足国家队于6月2日晚抵达印度尼西亚首都雅加达,准备参加5日举行的2026美加墨世界杯亚洲区预选赛18强赛第9轮对阵印尼队的比赛。当地时间晚上10时30分,中国队在主教练伊万科维奇的带领下走出雅加达苏加诺-哈达国际机场,随后乘坐大巴前往酒店。伊万科维奇表示,中国队在…

中国龙舟文化“划”向全世界

央视网消息:这个端午假期,热气腾腾的“端午经济”成为消费活力升级的缩影。“国潮”风引领文化消费新风尚,传统文化元素与现代技术交融,非遗体验“烟火气”满满,打造出独特的“国潮端午”氛围,持续火热的国潮消费也一路“火”到了海外。这段时间,在义乌国际商贸城做3D打…

马斯克宣布离职:不想为政府政策负责 “政府效率部”成替罪羊

埃隆马斯克在接受美国哥伦比亚广播公司采访时提到,他并不想公开反对美国政府,但也不愿意为政府所做的一切承担责任。他表示,他领导的“政府效率部”成了所有问题的替罪羊,无论是真是假的裁员都归咎于这个部门。马斯克还表示,他对国会共和党正在讨论的数万亿美元减税与支出…

韩国5名候选人竞逐总统 李在明领跑民调

韩国第21届总统大选于当地时间6月3日6时正式开始,全国共设有14295个投票站。没有参加提前投票的选民凭本人身份证件前往指定投票站即可参加投票,投票将于当日20时结束。本次大选共有7位候选人进行了登记,但其中两位先后宣布退出,并表示支持国民力量党候选人金文洙。因此,选…

学者:李在明若胜将大幅调整外交政策 韩国大选临近决策点

韩国总统大选即将于3日迎来正式投票。根据选前多项民调结果,共同民主党候选人李在明仍以明显优势领先国民力量党的金文洙和改革新党的李俊锡。金文洙与李俊锡合并无望的情况下,李在明距离总统宝座仅一步之遥。2日举行的选前最后一场记者会几乎成为了李在明的“总统政策说明会…

2025/6月最新Cursor(0.50.5版本)一键自动更换邮箱无限续杯教程

使用前检查: 使用前请先看左下角,是否获取到Cursor的版本号 如果没有请先在 功能页面 -→ 自定义Cursor路径 选择你Cursor的安装的路径,并开启后重启YCursor,获取到版本后才能正常使用功能 检查软件左下角的权限标识是否为绿色 如…

算法:二分查找

1.二分查找 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 二分查找算法要确定“二段性”&#xff0c;时间复杂度为O(lonN)。为了防止数据溢出&#xff0c;所以求mid时要用防溢出的方式。 class Solution { public:int search(vector<int>& nums, int tar…

Elasticsearch 读写流程深度解析

在数据驱动的数字化浪潮中&#xff0c;Elasticsearch 凭借其毫秒级搜索响应与水平扩展能力&#xff0c;已成为现代数据架构的核心引擎。本文将深入剖析其读写流程的设计思想、实现细节与工程权衡&#xff0c;揭示这一分布式系统的精妙架构。 一、 架构基石&#xff1a;分布式设…

2024年第十五届蓝桥杯Scratch10月stema选拔赛真题——数字卡片排序

2024年第十五届蓝桥杯Scratch10月stema选拔赛真题——数字卡片排序 题目可点下面去处&#xff0c;支持在线编程~ 数字卡片排序_scratch_少儿编程题库学习中心-嗨信奥 程序演示可下下面去处&#xff0c;支持获取素材和源码~ 数字卡片排序-scratch作品-少儿编程题库学习中心-嗨…