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-00rel03 Y* _3 R' w$ G, u, r
, Q" o* N$ S. u/ W
我有两个问题想问一下,
8 i5 S, t7 ]( t: ~  q
- F" m  v) {, o2 G# Jca5_max_power.s测试需要soc有一些特别的硬件电路吗?在我自己的cortex-a5 soc上可以运行测试吗?' T$ W1 F  D) E5 I3 d6 r" a8 `

0 S$ W/ ~" C; xca5_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( O0 d6 X5 P# j) {
LDR r7, =TBVAL_INTSEL
5 F" J6 }1 x0 ?
: Y5 y8 D, m7 R; J' A, gMOV     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 nDSB
- 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 iMOV     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/ @% PSUB     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 ~  OSTR     r0, [r7]
7 m* u3 ]% b  `
- l) D) O7 v1 _" sDSB
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! VLDR     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 tSTR     r0, [r7]
9 ^& \7 w4 P- O. A5 u3 t8 O( O1 ]% `: X3 ?- w+ k8 V  Y; ]
DSB
# L1 a- P: I6 f- v0 i; W1 p* R1 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, ~% VLDR     r7, =TBVAL_INTSCHED
( P2 C$ W( t; l% Y  o# D! c0 S
) M+ r$ p" i1 U6 z  n- yMOV     r0, #0
. f) h5 ]2 E6 j" B& D) z2 _
* f0 A: f& X% z' P) ^- Q( z* PSTR     r0, [r7]/ z$ c# G9 e+ b* L' Z- k

) T* @0 L8 T% g& c- ~+ u( k# DDSB
# 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