|
老實說 作數位IC設計很難不去碰一些周圍的環境: I+ x# [2 _& G3 y) ]5 \+ c' m
D/ P' ^/ s: i
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代2 W; l+ Q2 }5 O7 @! ]- M4 i/ i; Z
0 n; X9 n4 C3 U
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
& V2 y8 H& j+ p+ D* B. g& W Z! P# a/ h% O- y$ r4 I4 _- y
在這邊分享一些目前學習到的心得與面臨到的問題# v" H; K9 Z; n: T/ j+ Z
3 ]3 l d, H+ i3 V
首先不論是C++或者是C語言都是可以轉成ARM code的
1 Z# [5 O# T! j5 R1 o
9 `* V8 _% P0 N; Y. X& t0 O喔 講轉就不專業了 專業的要說可以"compile成"ARM code.... 這部分是後話 暫且不表8 T0 t* V, `8 g$ d
% k) {3 T2 K# y' `$ j接下來的問題是 如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
/ D3 U0 f# [) X2 [4 |1 i; R# F3 T, O! j
答案也是可以的
) C9 b. K" F2 \4 O1 z: a8 |; h+ Z" n1 R- B
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?3 j R& u! _: A1 H$ T
% r" M7 J% i9 g& Y, r, q8 f
其實也有一些軟體能夠替我們做這樣的評估
6 t& W, {5 c. ^3 _, A8 T6 J! Q
) l4 C# N8 V) P( \$ n" j4 n
6 N7 ]6 q& Q" U0 xARM本身有提供一套要付費的軟體 以前叫ACD 現在叫RVDS 就有提供以上幾種功能/ A: P6 Y* t' F3 \
; D8 }" r0 P0 C0 L, X/ H% x" G
比方armcc就是把C code給compile成arm code
* _- A2 H2 e$ Q$ l% v4 n# A: P) { }- w5 K
或者armlink就是連結C code與ARM code的指令
- M4 u7 `; |6 p9 b3 F* E% R' [* b! W6 I' j! x; s
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
. D" k9 l2 K2 I* O; h2 Y' U- w- K% s8 J
用來幫助我們修改ARM code的架構達到運算上的最高效能4 X3 w: w- Z: T9 O5 U# d
8 n8 M7 h: E& K! z& J6 }! V o- d- V) p
野人獻曝般的提供一點點小資訊 還真的是獻醜了 % E& d: a& |1 W G4 O
- _0 t W" z, \! p8 f W0 I如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
' ~! B: V C- e* ]' m2 G- a+ n' f, |9 m/ ~3 C1 H: N0 X8 I4 O/ D9 z
其中第五章第六章是精華 討論如何轉換最有效率的格式 第五章從C的角度出發 第六章從ARM的角度出發+ W0 |* H4 z" C T3 u7 i
( V3 H p8 A: ^6 v8 J/ }' m" S8 d% d+ g s6 n
最後想要請教一個問題目前正困擾著我 由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
; M, F; l0 ~8 k5 L
4 V0 q0 `, c; ]: f6 x2 M! F" r, p7 }8 t對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤7 g0 k9 u) Q. t4 R/ B8 H
' h- N' c0 M" @/ H* y9 l
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去? |
|