Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境/ e. B) q1 e) v: S" Z7 e7 ~+ Q* ^
3 p" D! M. W7 i  ]' B
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代
2 O1 n5 R) G, V2 ]* |! l
, H9 W, ^3 I; l( s. J因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連# C2 _- l' T& J# G

  x4 q" T5 \+ H" k/ Z5 z在這邊分享一些目前學習到的心得與面臨到的問題
/ x3 B' ?2 G' y; I1 ?3 u: t) H0 N& V, `- g
首先不論是C++或者是C語言都是可以轉成ARM code的8 }% V% B2 X3 v* \

+ m7 G: B: g7 V& x' u喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表) I1 i% b3 K  o, P$ s

. b6 _$ i1 v# B& E7 _3 r接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
3 G1 i! P8 p4 y% n7 D. e& ~2 ~  K2 w: z" L3 h/ A
答案也是可以的
# s0 e+ R# V* n0 E8 X
& @  Y& J; V8 s) p) v最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?* @: l: B, T1 b# s/ o1 V, ]- ?
: ?' z) U: K' e6 x, j
其實也有一些軟體能夠替我們做這樣的評估
: r3 L* _$ O# `" H# l" y3 Z* r3 g3 q5 |. W
; g2 V) D% L  R1 m& B4 O
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能
/ _5 V# ^$ S2 }& v4 s0 O; _4 O8 q  l/ Z( M9 N* |
比方armcc就是把C code給compile成arm code1 y; i: [) d+ F! P( r: `
- ~* }+ A: G  S* j- E! J( @
或者armlink就是連結C code與ARM code的指令
1 @* B( i2 q1 ?+ X# T& c2 @5 y2 R% w6 K7 |
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等0 G: ]3 _5 N- `. V

% d7 I5 T, J  q4 C用來幫助我們修改ARM code的架構達到運算上的最高效能; U) D$ \9 Y2 Y& k0 n4 E' W" w

/ `! |: g- j2 N8 I$ O( V! F, c: Y; _3 h  |
野人獻曝般的提供一點點小資訊  還真的是獻醜了  + i$ s5 R, e, P! ~
6 j# i. w  }0 N) D$ l
如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild! ], i' A9 R0 c8 ~) d* E
7 [0 m' b( z4 y7 d- M8 r- }. k) y
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發' U. \6 _$ ^; O7 f' P5 }
7 Q) Y( @+ A0 O$ q
5 K" \4 r0 v0 O7 V; u8 ~0 `
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
- Y; M7 u% @0 G! D7 m
# K3 z  P6 d+ ?) o2 e' u% Z% ]- {對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
( u4 a5 H- g7 U, k( q( D* r# S) d7 J* I* D8 E  {7 x7 t
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言); c1 f9 m; ]6 }! U; K
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...  q& F/ w" T1 D3 N3 \' C

5 T- b5 h( P9 f* m$ t2 [% {/ a我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
7 @( `) w  Z6 n
4 a4 b8 r$ q& o在同一project部份c 部份組語的作法是為了performance/code size考量& `! I% N+ _. K2 d7 ^4 m' o

% T! [! S' i$ ~! @, b' ?你所講的ACD應該是指ADS
( T* V+ k7 x! ^, M& ~5 K* k
, k# B' y  i# N3 ]6 A& f0 K作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字4 O8 A7 H& r! f, d$ ]4 q
. ]) n$ s) o; P3 k7 w# m
ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
. b" k6 O1 k+ k' d# s+ [7 W' y5 J, r  q
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-7 11:44 PM , Processed in 0.113514 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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