Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境
% o; X! ]- ]5 J. j- B) B2 m  A
% k$ C- m( h9 m0 N這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代6 C7 G- \% S9 c. z
4 y1 V# R1 w: D' D
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連* Z3 C/ n: j, _+ n3 |

( [. X1 W; ~3 X+ Z- O在這邊分享一些目前學習到的心得與面臨到的問題) @3 Z8 d- h2 l& U7 V* n3 }7 d  b
& J$ x0 Q) b5 s; E, J6 V4 a
首先不論是C++或者是C語言都是可以轉成ARM code的, r' A- D& Q3 @/ q0 d" W
$ o- t* ]9 F. b& g+ l
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
- q( p4 K& G5 J9 F
1 S; }: |1 j% z接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
! ?4 W" |2 |2 B7 p3 m. `
. F' }7 S! G  L) @& E* _答案也是可以的
9 j0 j# l' X* L' m% A$ h2 O$ D4 x# F) p$ M, f0 }
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
* k! L% U) v) E+ x7 ]8 ?9 ^* G# ^! {% H1 ]6 ^) p% b% I
其實也有一些軟體能夠替我們做這樣的評估
5 _) a; _2 u5 i- R2 D, Y, c: `6 t( m

/ b* q- \( h5 L% \- E6 jARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能
& v1 P3 \$ }4 K6 P, @% a0 D/ j" {
- ?+ Q/ G$ G- w/ h9 i8 \比方armcc就是把C code給compile成arm code
! h& y2 ]6 V; |3 H& P( g$ E. D7 w$ `
% W% e  _) O8 _% u9 |7 e或者armlink就是連結C code與ARM code的指令; }5 r: u1 F& k/ |$ }% {

2 X  G: _* c4 n, L另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
8 N0 U0 ^- u' C
- p5 \  E0 T% V& h9 t3 l1 C, j用來幫助我們修改ARM code的架構達到運算上的最高效能
( ^6 z, f, Z7 |% ?
+ b9 v& n7 F5 E, l- P7 W2 E2 b9 p4 |9 x9 r
野人獻曝般的提供一點點小資訊  還真的是獻醜了  
; ~3 V3 t1 ~! w  a2 K
) ?/ k) l. s( N* M* }: E如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild9 ]; s0 |" W: E+ U2 T' n
4 q1 ?. l; W9 N/ W0 Z
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發& }% |, T& A# B- ^- i  h
* ?! E" F  P4 M6 ], u

0 w- ]& B: b! Q8 g最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
; @; k4 Y! G  Q" j) H
  x: Q; U/ [# }' _! ^對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
6 Z& @" p! R6 E  @' u0 E0 p2 e- d" G
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)( _4 q7 E7 G) r$ l1 W0 J1 r
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...7 ?2 F) l. ]3 f- d( _8 s& T
& P2 {8 C# x1 ~- J
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式0 [. f! w0 E5 F8 C

2 F5 d& `# N& G+ T/ G( m6 a在同一project部份c 部份組語的作法是為了performance/code size考量- a% n" s7 A' i! l7 g9 @9 M: ^& _* t

' w7 D+ n- d) J' R, H8 p你所講的ACD應該是指ADS
, X& J2 n/ {4 \6 W4 A3 A" t( \& H2 W
作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字/ K: @* t4 g" f4 D
1 a6 L- Q4 y5 h& m9 h* M* ~+ w% B
ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異, _) L/ p0 A' J
5 z0 Z. _; t7 k* A; V% M& n$ x
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-25 09:11 PM , Processed in 0.166010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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