uboot启动流程_AURIX TC3xx单片机介绍-启动过程介绍2

AURIX TC377,TC387,TC397用户启动程序流程

用户启动程序是在Boot Firmware之后运行的程序(即用户程序里的第一级Boot Loader,类似Linux的Uboot),初始化过程是CPU0完成的。用户可以根据不同的复位事件来选择不同的执行路径。

AURITX 2代芯片的主要启动过程如下(该阶段只有在Cold Power on Reset时才会执行,其他的Reset是不会执行的):

  1. 第一个阶段,初始化PSW寄存器,以便可以在User1模式下使用最大深度中断堆栈深度。之后会判断复位类型,看是Application Reset,还是Power On Reset还是CPU0 Reset。
  2. 第二阶段主要有三个部分:1)初始化EVR,同时确保寄存器内容是所需的配置值;2)执行LBIST测试,以保证系统安全;3)MONBIST检查,以便确保第二级电压监控和Alarm产生路径是好的。
  3. 第三阶段,设置好系统以支持函数调用。这主要包括Context Save Area的初始化和Stack Pointer(A10)的初始化。至此没有全局变量使用。
  4. 第四阶段是初始化时钟和Flash Wait State的值。对于ADAS的应用,在PLL初始化之前,MMIC芯片需要使能,MMIC芯片可以给CPU提供时钟。出于功能安全考虑,RAM的MBIST需要执行,会初始化所有RAM的功能安全特性。这个阶段是只有在发生Power on Reset时才会执行,对于其他类型Reset,这个阶段的动作是不需要执行的,因为Clock和Flash模块会保持复位前的状态。
  5. 第五阶段是可选的,主要是为了SMU Alarm处理的设置,更多的是功能安全的考虑。
  6. 第六阶段包含如下步骤:1)通过设置CPU_PCON,CPU_DCON寄存器使能Cache;2)设置系统支持中断和Trap的处理,通过设置BIV和BTV寄存器,同时还需要设置中断和Trap向量表;3)初始化CPU0和其他CPU共享的全局变量;4)启动其他CPU。多核CPU的启动时链式的,是通过一个CPU启动另一个CPU,然后再去启动下一个CPU;
  7. 下一步就是将PC的控制权交给OS。对于多核操作系统,StartCore()和StartOS()会在每个CPU里调用的。同时这些核的在启动时会同步,只有多个核都启动成功了,才继续后面程序的运行。
  8. 过程请参考下面两张图:

f565dfce0835e55311d1604357781a5a.png

7638085c85a7d959595c3205cbab1988.png
  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值