Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境2 I& Q3 t" U+ z6 Z; y
; u& F7 U% }. f1 N1 O
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代
! c% Q3 u7 k0 o" v) `+ j+ P# {* G8 x2 P7 Y2 q' P  x9 _, e, k
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
- B* s/ y- E) y+ i+ J* Y' {  T: k" K4 W
% n+ u: ]' F! ?$ o+ R" [( i在這邊分享一些目前學習到的心得與面臨到的問題
+ K/ Y" @' c* B+ e% c- A! v; ~5 `+ J4 V9 t( C1 d  o
首先不論是C++或者是C語言都是可以轉成ARM code的2 d: r9 ]. a+ j! H& x+ i! T
6 k6 l; x* M1 c" h1 |- ^
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
# r" F8 F! u" j
7 {; {; a5 q* M$ m( L+ l接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?. ]7 `5 I$ M% u9 h# V6 a

: |* r( r) `, U* K" A' ?答案也是可以的! K7 u4 f8 u4 @  n

# K! ~& P! @5 G8 F# J最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
) C. V8 s" ]  v- {8 Z
2 @* ^. l4 `7 J& J* P, `- `其實也有一些軟體能夠替我們做這樣的評估
2 j9 a6 ?% z3 V; `$ ^& m" `+ @8 O2 M9 @9 u
) j5 o; G9 i& L( L2 o9 h; C( y! w
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能; ^" d# z/ O# h9 }

6 J/ D' a5 D/ L( b比方armcc就是把C code給compile成arm code
! ^4 J( T* Q5 @: e* Z0 T8 ?" T1 T7 L3 v$ G' G
或者armlink就是連結C code與ARM code的指令
! ]" ]6 i) U# j7 c) s% Q) s3 E- i9 m' e. [* D
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
7 \: X7 ~- U' F5 g1 {% w& @# b; |) s3 S! m( S
用來幫助我們修改ARM code的架構達到運算上的最高效能
' M9 y2 J( H, {( B5 G3 N7 ~6 p/ r$ q- ^9 a" J! P- q# `5 G, R

. e8 G" p8 c- U+ @2 v' s野人獻曝般的提供一點點小資訊  還真的是獻醜了  
6 q7 B) U: B) m) f+ K: K* e+ c
8 V( ~+ g9 u% R1 J' \, C6 s如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
2 v' [8 E2 p* _  @4 p& h  G5 v
, V% j+ x) V. r. W# U: M其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發/ F1 ^' W2 K: i* e% c
9 [' d1 K4 M% H( g( f
# ?; k$ L8 Z6 {' t
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
# x* }% O* X- N
8 N* y6 {2 m7 X% I% F對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤) m$ s7 V# O9 s# B" a7 N, m

3 o/ \7 j" ~  s5 Q想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
6 O8 y/ W& g! Z- p1 b9 ?不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...! \& T# P- e8 P. ^5 T* c& j
& Q4 ~- b; u7 t1 |* W, y% [
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式% K# a) ?4 V8 I  j* p0 X

, z0 H3 i3 v8 Q3 Y2 e0 J在同一project部份c 部份組語的作法是為了performance/code size考量. @$ `& u  I; S, d0 r
( ~# o9 a. M5 I
你所講的ACD應該是指ADS& G0 E  o  M. a5 Y: i# f( Z

: B0 `3 g# h1 h: Y; E6 ?7 Z作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字, v( m& f: l$ c  |/ a

. m, L3 t9 |' J! v6 k5 U( IARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異/ h5 T3 _1 e) T" A6 _
+ j. p5 c3 |' G6 ^% k# G! `. X
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-7 10:23 AM , Processed in 0.100006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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