您的位置 首页 电子

ARM MP-core发动流程

1.iROM启动MPCore时,通常的做法:(1)让CPU0执行主要开机流程,其它的处理器进入WFI.(在启动时,每个处理器可以透过CPUID得知自己…

1. iROM发动MP Core时,一般的做法:

(1)让CPU0履行首要开机流程,其它的处理器进入WFI.

(在发动时,每个处理器能够透过CPU ID得知自己是否为CPU0,假如不是,就进入WFI的程序代码中.)

即:让AP进入Sleep

(2) 初始化外部内存与履行体系的初始化

(3) 设定 Stack

在DRAM初始化前,Stack是建立在SRAM中的。

(4) 把BootRom程序代码复制到外部内存中

(5) 从头Mapping 内存方位

(把0×00000000地址对应到外部内存 或 I-TCM假如 0×00000000地址要跑中止表的话(or 中止表对应到0xffff0000))

由于,Cold Reset时为了顺畅开机,把iROM映射到了0x0000 0000处.

(6) 把第二阶段的BootLoader加载到外部内存中 or OnChip SRAM.\

(7) 履行第二阶段的BootLoader

2. 怎么辨认当时是哪个CPU在履行

履行时期,软件能够透过 CPU ID Register知道现在是MPCore中哪个处理器履行该程序代码,

CPU Id储存在CP15 c0中,长度为32bits,只能在特权等级(也便是SVC Mode下)被读取,读取的典范如下程序代码所示:

MRC p15,0,,c0,c0,5; returns CPU ID register
31 12 11 … 8 7 … 4 3 … 0
SBZ Cluster ID SBZ CPU ID
阐明如下,
(1) Cluster ID:

用以支撑 Multi-MPCore架构下的Cluster辨认之用 (The Cluster ID field value is set by the CLUSTERID configuration pins.)

(2) CPU ID: 视处理器的个数,例如四个处理器ID依序为 0×00,0×01,0×02与0×03

3. Primary Core所做的本身初始化

(1)Invalidate Data Cache
(2)Invalidate SCU(Snoop Control Unit) duplicate tags for all processors
(3)Invalidate L2 Cache
(4)Enable SCU
(5)Enable Data Cache
(6)Enable L2 Cache
(7)Set SMP mode with ACTLR.SMP.

4. Non-Primary Core所做的本身初始化
比及体系安稳后,可能会让Non BSP Core做:

(1). Invalidate Data Cache

(2). Enable Data Cache

(3). Set SMP with ACTLR.SMP.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/dianzi/275617.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部