Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 8220|回復: 1
打印 上一主題 下一主題

[經驗交流] C++與ARM code合作兩三事

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境+ D# d$ y1 L8 p: ~' s
$ z) |. u. u$ t* p; Z0 d
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代2 E$ B" n+ N& N* T1 ^; T  Z& F# ?& U
: z- Z' k2 N: j0 H# K
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連+ p6 B6 l7 V7 v" S* J1 Z7 N/ b0 x# w
- q% D4 [' h+ b; b
在這邊分享一些目前學習到的心得與面臨到的問題
* I# H1 G+ r: {; q" n, w0 f& ]' f  U- a# M
首先不論是C++或者是C語言都是可以轉成ARM code的
! {4 e- F# U, y9 l  p: b2 N1 k& ?2 K
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
0 z& d7 d. n  @- p) W# p( s8 ]8 u! z9 s1 G& B" i1 |
接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
- h6 D* r+ l3 S$ j, N0 m: E6 f8 ]: F
答案也是可以的7 G" C  f+ [# \7 B! E5 r. m: y3 T
  v; T9 o; `1 |4 Z6 d
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?- B+ ?1 e& e6 f3 R" q

0 E6 \) z9 v& b: `. z3 q) ^其實也有一些軟體能夠替我們做這樣的評估. p, s( p; t' _' m2 v
# L9 l  v; \3 A' f. o

' ?4 I, C& ^+ B. I- c7 @* T* {0 dARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能- h7 J" K, {2 p/ `
  b& \! f7 S% ~, P8 F
比方armcc就是把C code給compile成arm code
1 x+ c/ f: V4 |/ M* S. B' h+ p3 h4 |7 n% l  Z& Q7 Y/ R! n
或者armlink就是連結C code與ARM code的指令
# U/ }. u: t6 T/ N& L1 f
/ L/ h+ g- S) R+ T$ i; a% O另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等: J# i( Z1 O& o
. W3 x) i7 s; ^5 b& F
用來幫助我們修改ARM code的架構達到運算上的最高效能
! Y1 L5 [' I1 I' n) K' m. z' h% ]  D' @: Y0 o' C

' |" V6 r: L# z  d- T7 W  Z6 W野人獻曝般的提供一點點小資訊  還真的是獻醜了  
7 n( z/ @; ^% l1 y2 V2 F1 I! q/ M$ p, D& r
如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
9 k/ t* m- m6 x6 L% [. v4 @, M0 Q4 f- i) G: T
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發8 v( n4 c+ C0 w
5 A8 {5 \6 ]* i3 M; l9 u

4 n9 i8 b5 T6 G$ F6 t) S3 \, r1 R7 A最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
+ R: T$ R/ a* a
& c) V. Z9 \1 S/ V- g( t對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
2 I7 O2 o) c  }! M' _& _0 ?0 d  N: D* R9 d: d
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)$ a; G2 B2 W$ ?8 A
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
& i9 P, }0 h7 w. J$ k
' g1 o9 p& x( f" K8 n9 m6 s我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式. q8 Q5 \" I7 s+ u7 @* n0 y
' O+ F/ `% u' ^4 S. {7 l8 i
在同一project部份c 部份組語的作法是為了performance/code size考量. ]- q' m" H/ ?" y/ d# e1 g0 ^% I

8 b1 \  e+ c5 |9 y你所講的ACD應該是指ADS1 @0 c8 D3 C; p1 @+ [
$ o3 F2 j& J7 C- M# A- I
作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字* x7 H% E; n% t& d: x- G
( c$ J1 G; d5 M
ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
. A) s% D2 p7 @8 i' P% C; P2 i3 j8 ~* b5 }  E+ r5 ^8 ]2 x9 D
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-4-28 02:24 AM , Processed in 0.100006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表