Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境% a$ y0 l0 ]( ?2 T
1 D1 I, R/ Q: s( V" W  F
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代7 n% y; y; ^) R9 s( y. U0 K

4 y$ S% h- T1 c# N因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
8 \; g  F8 c# Z& `0 p
0 n  H! D6 C# C; k% f% D& _# E在這邊分享一些目前學習到的心得與面臨到的問題
* G8 W+ E( T# k# h# Q7 o0 a7 u( j' a8 ]
首先不論是C++或者是C語言都是可以轉成ARM code的5 X0 P- p0 Q6 Y/ }( \) `3 `# z& ~
4 d  z. S& @* u
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表) u' U; s( K9 v& r
4 Z2 w2 M* `8 r5 Q2 z2 q$ `- t" C
接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?% q- }1 t9 j7 d& W, S
8 }" w7 D% C  G3 F
答案也是可以的
- [1 E4 ]( I- B5 A* U  ?5 w. l. U0 x9 c" s' y5 R9 V8 u
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?: W7 ]! A6 c- r) h( ^

6 i" R. O2 ]5 ?* f其實也有一些軟體能夠替我們做這樣的評估4 \+ N4 O+ X! [9 i5 F  h; j

2 z9 a6 ^* C! Y- H1 B' u7 P! n3 y1 E# F0 B
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能# P) C# N4 o& A  }  \: ~; B
6 V9 d  \6 e4 {2 S: U8 g
比方armcc就是把C code給compile成arm code
5 K1 j& ^7 n: ]3 D) m  l9 R% D: T- G8 Z' S/ _
或者armlink就是連結C code與ARM code的指令
/ K, D1 T& \) T& H" }' J- Z
8 v, ?8 _8 c$ k; T2 W$ a0 j- _另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等) G1 |- U) R. \  ]

, G* o2 K0 {) q1 Y$ E用來幫助我們修改ARM code的架構達到運算上的最高效能+ b, o  w+ [# ]: T6 z- i
1 l3 b2 u7 f) ~$ V$ r
9 N1 `; n1 V# g6 C+ V) N' f* B& d
野人獻曝般的提供一點點小資訊  還真的是獻醜了  
0 |' z9 d7 U' o
6 U! ]2 J' D8 S" l! l如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
2 ^7 g( Q2 Y0 ]0 _, \2 N
$ I" ]. z4 A  |5 V; d' {其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
8 a- m7 u) A) {" d
- o8 Q9 |( b6 p5 K) A! k
* [+ |  y: @; e最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
! w6 k7 U& u4 F+ d. [+ G+ ]  g, n0 i7 X, o& x. E$ o; @$ _
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤* q7 V" a; E$ x6 O$ b# V6 B# _
" {. V( y2 U- C. x  U
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
, C! a6 J: }- V, a6 I" N不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
! [8 }' }# C$ i3 F; b! k5 ~" z. M4 C$ e
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
# w) U4 p, `. i
0 E+ ]4 H! g3 }: z/ d* F7 {8 q在同一project部份c 部份組語的作法是為了performance/code size考量
+ v5 X2 }2 p0 J- R& G; a4 n. U2 C" x" c: @2 T
你所講的ACD應該是指ADS0 c: {' r  c  A" P# n/ ]3 K2 ~
! }$ C1 k. ]& Q2 |( @
作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字
- X$ q& m) X4 K0 d$ {. t! q2 g$ I6 L9 P! H$ w
ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異& C2 }4 ]3 g  j) Q7 l
5 Y& @1 H2 @% q
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-12-30 01:45 AM , Processed in 0.158009 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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