Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境
$ ]$ m" }! X6 H3 l% O
5 W: B: T% F4 k- S這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代
& p+ ?6 V; }5 |2 H) L/ X
& O# i' h$ s. P* S% ?! X因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
8 B& L6 ]9 l. H
4 V& x. x0 ~, W在這邊分享一些目前學習到的心得與面臨到的問題2 S# Z/ x2 \# U3 I: C

5 ^6 t. s( T5 y2 T, E! a2 P! x4 e* l首先不論是C++或者是C語言都是可以轉成ARM code的8 b6 h2 m# u) M# n
2 A/ }9 k1 Y% b  L3 L3 y
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
9 s3 Z+ k& K+ f: o4 H: N( q: S9 E0 J8 Q/ c/ T4 ^. c
接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
) B; x2 y0 m  V+ w( T2 `1 y9 t' o7 ]. ~, n$ {" k
答案也是可以的  d5 x+ E! Y, i& R( e+ A
! _# N" `, o4 N0 e; g
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
, I9 C. j0 J" T# w7 C5 F0 R, p0 _7 u
其實也有一些軟體能夠替我們做這樣的評估
# S7 d( m; o* G4 Q
8 B( Q: r7 ?: A7 L6 S5 V' v: d5 X* X
- M1 t$ J% E7 e# A; N- PARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能
; R$ C/ R4 y% Y, [3 @' y# ]7 \6 R2 N* r7 D! `
比方armcc就是把C code給compile成arm code
# e9 p6 }! ]9 m2 l9 I% t6 G" U( \( Y
或者armlink就是連結C code與ARM code的指令9 \- \' m2 q" K
1 D! Y' B* [7 H7 h
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
' ^. O/ s% Z8 A3 f* d  ^+ q4 W+ v3 N2 p1 T: J& H% ]
用來幫助我們修改ARM code的架構達到運算上的最高效能8 ~0 i: c& Y" p/ M" b

+ U# t: X$ u- a6 S+ G  m
3 d; [; w# o% D7 j6 s! R野人獻曝般的提供一點點小資訊  還真的是獻醜了  
6 ?; r0 ]9 K( J! A4 r* S$ [7 G
3 z2 w  L3 o* T( o4 Y7 C4 B如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
# Z. y  {5 C- q8 C6 q  x! S& _5 F& J5 V$ n
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發, g$ }# a* q  ?

/ @- g/ z8 `# g' {' m7 r* v3 P* o( Z9 K' v5 ]5 y$ V; U: A, \+ ^8 \
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32& D+ B) c( x/ x' \, S
3 _6 K3 |, P0 Z7 I: E6 q4 s
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤. d; P" i; z0 x/ x, r

$ \2 ^# l! D8 y+ o5 {8 R  X0 ?想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)4 c, H, B: ]: w: C% ], l3 m
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...( S( x4 I, d! v2 F# X% K) [

, y5 r6 l1 D; L. ]  T4 X2 a我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式+ `* y3 L1 {7 Z, Q7 A* f
+ ?& ?5 {3 _) s1 m
在同一project部份c 部份組語的作法是為了performance/code size考量) }0 \/ l2 r# N- E% l  @) \
5 k3 J+ i1 e0 ~
你所講的ACD應該是指ADS
9 n( {) T, {/ T
! j5 A3 L, [* {4 B3 ~; a; G$ o$ r作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字1 R7 f! ]& q% j* O. e
, `. x0 g% m- t; F% e8 J! y/ N. x5 c
ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異% ~5 e; V3 t0 B+ [+ C

# W' R! H% t) G* Q& }7 t. t你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-7 09:11 PM , Processed in 0.101006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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