|
老實說 作數位IC設計很難不去碰一些周圍的環境
& K* r$ k3 e# I) W2 o R, D! q/ r* k9 C5 s
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代4 _" b: P+ S4 S2 Y D
0 d+ `, }' p9 \* p
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連& z6 _9 c6 \0 Z- k% z
) i1 h. w9 K! R) o
在這邊分享一些目前學習到的心得與面臨到的問題
: _# D; B8 s# u# C, n
0 D2 s) G1 b5 Y- V: N1 F首先不論是C++或者是C語言都是可以轉成ARM code的, J. P) u# d4 b
$ |8 ~2 x6 e5 Y( T: P+ t* J& j喔 講轉就不專業了 專業的要說可以"compile成"ARM code.... 這部分是後話 暫且不表
& A5 a1 @ B* Y+ r( A* B
% L. |( U) g" M8 X+ P7 Q& p接下來的問題是 如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?& k5 V/ _. |" g; B. ?3 b
! o/ _( e% K+ m' e" v
答案也是可以的0 E2 i7 _; l, s
# g- {' {0 w- W最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?. l' {# a; L7 e* w5 E; V( l
5 z2 ?- W" S0 G! g# ~其實也有一些軟體能夠替我們做這樣的評估7 I" Z0 r; N, p& O( u
3 `! z' E& ?* E, h1 J% N! i% ]" H1 U! |
8 _4 K8 h/ X& j& `7 s! B/ D" EARM本身有提供一套要付費的軟體 以前叫ACD 現在叫RVDS 就有提供以上幾種功能" v8 @ Y' T- e( f0 h2 R
7 R8 {0 ]' s7 c7 V8 |! q( D比方armcc就是把C code給compile成arm code
2 Q: P2 Z! `3 l" @" i* Z& k) D9 O9 m) p4 [9 q- c c u+ p
或者armlink就是連結C code與ARM code的指令 Q* Z% t( u p0 ?* ~1 y
' p$ Z0 n3 Z: R s; y另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
0 t6 j/ P4 D: | N! a) e% q8 [" z% {
用來幫助我們修改ARM code的架構達到運算上的最高效能
( F8 r4 S0 b8 E7 i) c0 @8 m# U
" c1 H, M7 p* c; V4 K @
# w" J x, w+ \5 S) t5 r野人獻曝般的提供一點點小資訊 還真的是獻醜了 , g2 s0 W1 C0 a4 `" r5 |
1 h: N. K( P$ C1 j2 U如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild2 \# ?, i! h' n+ _
6 Y0 E! u) c4 h& a其中第五章第六章是精華 討論如何轉換最有效率的格式 第五章從C的角度出發 第六章從ARM的角度出發9 s/ ~9 t* g+ b0 y/ {4 ]% y
! ^+ Q! J( Z! Z- r& J
; E$ }+ J ? C, q最後想要請教一個問題目前正困擾著我 由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int326 }' p5 f0 t4 O% W* n
4 a; p2 n- e% g8 m# @+ t# t對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
1 A& ^6 m' C& p) W/ i8 I0 h$ ]$ W R
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去? |
|