Chip123 科技應用創新平台

標題: C2H與Profiling的疑問 [打印本頁]

作者: static314    時間: 2009-5-26 10:40 PM
標題: C2H與Profiling的疑問
======================C2H======================
3 u" }( _: N8 G: U( D& I; \我想把下面這一個function改成C2H來實作~
. R5 w7 j8 B$ O$ w* @; ~) [  ]4 k/ E% s" U* V9 S
bool AUDIO_DacFifoNotFull(void){
5 p7 @5 J6 s9 T* U5 V: U1 w% k3 `5 `    bool bReady;% y+ p& @0 r; a: u- i
    bReady = ((IORD(AUDIO_BASE, 5) & 0x01)?TRUE:FALSE)?FALSE:TRUE;; Z* y7 W/ ^, t
    return bReady;1 a! }# ]  M9 @$ J
}
4 {6 N/ ]$ y/ p* q8 @  E
8 o' i: B1 E6 u- T因為直接這樣使用,C2H會不能編譯,會產生錯誤!' m2 J' v: l/ m
在網路找到資料說,寫成以下這樣就可以編譯囉~; y. N7 N# r; l3 \) i
6 Q2 n/ f2 p0 H9 ]  Y
bool AUDIO_DacFifoNotFull(void){4 {, f, b4 v! q' N% O5 Y4 ~) U
    bool bReady;
( h4 J* j2 s( T7 X8 R6 A5 @, k    unsigned long * au_base = (unsigned long *) AUDIO_BASE;" {$ C6 @  O% |+ A# l! R4 I% i
    bReady = ((au_base[5] & 0x01)?TRUE:FALSE)?FALSE:TRUE;
" g& d$ |1 R; |  p7 q/ `! Y    return bReady;
- i6 h9 k& q$ k7 |}# m, \' X3 v. {) D
2 T2 E, j( ^. |- O
改成這樣的確可以編譯了...
! R0 Y" k5 _, g0 c; _但是為什麼會動作不正確呢?' }& f7 u- j0 Y: @- p5 T
是因為改成C2H後,這樣寫會沒有動作嗎?9 t9 ~5 u# p; G: N
請教各位大大,要如何讓以上的程式在C2H下可以動作呢?1 O" b7 y6 S- d. v

; b; Z; {" Y0 n: T" m, ?; ^ 0 k: G8 o* G- _1 \8 R: Y7 P5 Z# B% {
. K# u. I. M$ q
======================Profiling======================% V. q; N7 ?5 W: i
我使用Profiling後,產生了一個檔案...
! u5 q7 l6 Z5 [# O5 w2 ^$ h; z一共有這些分類的數值 (中文是我看英文直接翻的)3 b- g$ o1 ~7 L& R- H7 u

! f  s6 v5 G& L6 L( X2 }percent Time     百分比時間
- E" {7 L9 M+ Q, Ncumulative Time  累計時間% y0 `$ u7 I3 }/ U7 C
self Time        自身時間/ a7 ]2 i/ L4 u& d5 @  C9 r
self time per call  每次呼叫花費時間$ V5 f9 Q0 b! n7 t
total time per call 總計 每次呼叫花費時間
/ c& H/ P: |! q% f5 i' h
% N( W, z+ Z7 i) {% g請教各位大大..+ u2 U) P# L8 ~0 U
哪一個數值代表著執行時耗最大的時間呀!?
3 p1 k9 f1 Z/ c" ^" B我目前都依percent Time為依據
! l9 X2 _+ t) I, X/ S1 B7 `, q2 W想用C2H來改善執行的速度~
. ]: z1 ?0 a! x1 k$ S請問依percent Time是正確的嗎?
3 A! W9 X  M* f3 A+ E3 p3 g
: x% ?4 @& ?3 y: e/ i先感謝各位大大幫忙喔~ ^ ^
作者: masonchung    時間: 2009-5-26 11:57 PM
需要軟體的C達人來幫忙嗎
作者: static314    時間: 2009-5-27 12:04 AM
真糟糕..我最重要的部分忘了講了
. ~3 O; \3 e# a0 R這個是 Altera 提供的 NIOS II 裡的東西~
+ v: G- I9 r, ?3 F- i5 P5 b* PC2H是 Altera公司所提供軟體轉硬體實作的一種編譯器 @@# Z# H0 z7 e3 F0 o& E7 t
我問的問題都是NIOS II程式下的東西~
1 O3 G5 Z- M' n+ W不好意思上面沒講清楚 >"<1 \  e/ ^$ f# ], M$ n$ O
請各位大大幫忙囉~
作者: tommywgt    時間: 2009-6-4 03:04 PM
AUDIO_BASE是個public變數, 你沒放上來型態我也不清楚
3 \/ G9 V$ u8 M" lunsigned long * au_base是一個32 bits的指標位置指向跟AUDIO_BASE同一個地方# i4 x& T8 J0 }) R7 R) w
(在NIOS-II內, long是32 bits沒錯吧), e4 Y. F5 g/ G7 @5 N3 o: C
所以au_base[5]所指向的是(char)AUDIO_BASE + 5x4的地方
: J8 Y4 `7 K2 y+ j如果AUDIO_BASE本身也是一個 long的指標的話, 有問題的就只是IORD這個 function 跟cache manager的問題3 c1 z, [  B2 S! [/ ]  G+ P
否則, 不同長度的指標型態互轉, 設計者必須自己計算新的offset才行
作者: tommywgt    時間: 2009-6-4 03:08 PM
percent Time     指的是這個function call消耗系統平均時間, 愈高表示執行這個function call占用系統時間愈多, 在分析系統效能時, 確實是個很重要的指標




歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/) Powered by Discuz! X3.2