EDA365电子论坛网
标题:
ca5_max_power.s测试需要soc有一些特别的硬件电路吗?
[打印本页]
作者:
abc66
时间:
2022-8-30 13:11
标题:
ca5_max_power.s测试需要soc有一些特别的硬件电路吗?
我这里有ARM给的一个关于cortex-a5的测试代码压缩包a5_validation.tar.gz. 我想把其中的ca5_max_power.s在我自己的soc上运行,
4 a: o' O9 J' J- {
1 L0 w9 b+ g: J
我用的ca5_max_power.s的信息是
1 W' P% t5 j1 C: i$ @8 X
& Z& D2 R' i) r
; Revision : $Revision: 60190 $
8 h8 o" m3 @% r' A' b
, _( s# E& v$ e% M+ c7 C5 ]& X3 S
;
2 z; B. h0 m3 K0 A- c
/ {5 B8 u V) n1 H8 F& u
; Release Information : CORTEX-A5-MPCore-r0p1-00rel0
3 Y* _3 R' w$ G, u, r
, Q" o* N$ S. u/ W
我有两个问题想问一下,
8 i5 S, t7 ]( t: ~ q
- F" m v) {, o2 G# J
ca5_max_power.s测试需要soc有一些特别的硬件电路吗?在我自己的cortex-a5 soc上可以运行测试吗?
' T$ W1 F D) E5 I3 d6 r" a8 `
0 S$ W/ ~" C; x
ca5_max_power.s有调用macro: CPU_WFE_TRIGGER_EVENTI, 定义在validation_macros.hs,
^- L! `, I5 M
4 q$ ~2 H }7 k' Y
这个macro定义中有用到TBVAL_INTSEL, TBVAL_INTTRIG和TBVAL_INTSCHED, 请问这三个地址是什么,
8 m. g4 {6 N3 J9 q2 S% t
% q! B4 f" J$ e6 E) ~
测试代码里定义在0xa2000000的偏移上, 请问如果porting到我自己的soc上,这个基地址应该是什么?
- ]3 P# a" {- |8 Z4 y* n u0 Y: B
?0 R. Y6 \7 e8 U4 |
这个macro定义如下:
4 I3 e7 D, j" ], @ q' V! w( O
0 d6 X5 P# j) {
LDR r7, =TBVAL_INTSEL
5 F" J6 }1 x0 ?
: Y5 y8 D, m7 R; J' A, g
MOV r0, #0
+ b3 L: y. [+ {4 _2 f
/ `% D, }2 W5 q3 T' U
STR r0, [r7]
: f8 U" U, U: X0 t' U
- j* ~ l& J% z' x" K* F2 n
DSB
- s3 p9 f8 C s6 j4 b) B9 i
6 t/ D8 x% F/ D0 j' @
; Trigger condition: "All CPU's WFE must be set in order to set EVENTI"
, g3 Q# j& i) Y- b f
6 ^; l# f& [* c
; NB: depends on the number of CPUs implemented if MP case
- F0 O6 N7 N. K8 C8 u9 D6 |4 K
/ V; m7 D' g' T, S* q* g9 M
LDR r7, =TBVAL_INTTRIG
# D: T7 ^$ O5 i- f d
- T9 g& R: O' \/ n6 T
LDR r1, =data_cpunb
% J6 H5 ^- n$ [1 B) Z
: l! P+ U8 D6 n6 M' I
LDR r0, [r1]
9 b5 J5 U4 H% O
, j: ~ t$ t9 ~ D9 i
MOV r1, #1
$ i$ a* C& }( O- u; O
$ P' ?! Y* L- o
LSL r1, r0
, f" H' K- P7 b0 e. y! V" ~0 m
4 Q) g; Y& F; F5 I t/ @% P
SUB r0, r1, #1
- [0 R! v5 X) @- y9 a* F4 G1 t) P
- ?. y- \) Z& h6 t, P/ i& @
LSL r0, #4
; a. Z( J" E* G7 J' Y
0 f# v" l5 ~ O
STR r0, [r7]
7 m* u3 ]% b `
- l) D) O7 v1 _" s
DSB
7 K" c/ p* a# @7 E9 y2 R2 y
) e6 v" \# e$ t
; EVENTI generation enabled (held until programmed trigger condition is true)
; |! i5 v2 x# e; y
! G" y/ U# s( r$ S Y! V
LDR r7, =TBVAL_INTSEL
/ O, C* O- Z: ^5 N
+ M/ p# b7 K8 H3 D! U: y
MOV r0, #1<<8
& `- _" b3 [5 m. ]7 ]
' W- z) u. l) @8 t
STR r0, [r7]
9 ^& \7 w4 P- O. A5 u3 t
8 O( O1 ]% `: X3 ?- w+ k8 V Y; ]
DSB
# L1 a- P: I6 f- v0 i; W1 p* R
1 c9 s' h! L8 y" [& T7 @- j! |0 u: f
; Schedule trigger now (delay == 0 cycle)
: j- x' T: X* f% b, k6 R% K
4 f- o; Y; {, Q* Y, ~% V
LDR r7, =TBVAL_INTSCHED
( P2 C$ W( t; l% Y o# D! c0 S
) M+ r$ p" i1 U6 z n- y
MOV r0, #0
. f) h5 ]2 E6 j" B& D) z2 _
* f0 A: f& X% z' P) ^- Q( z* P
STR r0, [r7]
/ z$ c# G9 e+ b* L' Z- k
) T* @0 L8 T% g& c- ~+ u( k# D
DSB
# E; d0 S4 s$ c2 c! a2 X( Y
6 [! Z$ @: Q- J
作者:
oewqe
时间:
2022-8-30 14:13
这个测试是用来测试CPU的最大功耗的,基本上就是使pipeline全开,包括dual issue, NEON, debug都跑起来。 因为只是个CPU本身的功耗,本来是不需要其他logic来支持的。
: w. W# {& F5 X2 g
! L u$ u1 W5 {2 ]( o. N. e
如果是Multicore的话, 刚开始的时候 代码控制只有CPU0往下走,其他CPU处于standy 状态(由WFI进入), 为了测 Multi-core全速运行的功耗,必须将其他的core也唤醒,所以问题2里面提到的 TBVAL_INTSEL, TBVAL_INTTRIG和TBVAL_INTSCHED是仿真环境的interrupt激励的触发方式,仿真环境可以通过写这些地址,让其产生一个IRQ/FIQ给其他CPU以唤醒他们。
; }3 p. R( v+ j9 ]& j& E |
作者:
MrL1
时间:
2022-8-30 14:57
再看看别人是怎么说的
+ @- {4 N, ?: H! V
作者:
mqerew
时间:
2022-8-30 15:24
这个问题解决了没有?
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2