Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境& ~* L; v, m, S. c' B, z& \
) T% E/ \1 `; m  ]
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代" c. w. D6 t1 C+ h+ J$ I7 U
1 V/ H3 U/ M" d  g+ j, j. {, D: T
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連! F+ J) \! q5 b& k
+ v7 q9 s6 d6 E$ K8 \1 n: Y
在這邊分享一些目前學習到的心得與面臨到的問題0 b4 @, W9 c8 |9 B9 i2 W

; m' C" q3 u( |! _) O, e首先不論是C++或者是C語言都是可以轉成ARM code的+ o4 B( Y" n; ?- f. O6 a  U

; g6 {* g, B) ]0 `喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表& R# g) Z/ U8 `9 S- v7 T
, Z2 p; C, s6 t. n0 B; R) ?
接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?2 N  i$ m1 z4 a8 b8 k3 ^( b
* b2 \& w: \, ^" V
答案也是可以的
0 V' s# p; ]- b3 W/ _' c" _, s, ~4 ?% V% ?  r
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
0 [4 W: o& F9 p
  D& h( q- S) P) X( l其實也有一些軟體能夠替我們做這樣的評估
7 E$ W, `, y7 T4 f5 b) B$ J$ F  P0 O# V* W+ v! X1 J/ F

# ^1 B: b3 j" MARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能" d+ A0 V" X; w5 D* K2 H

! X3 h, y& z/ o1 Q$ H比方armcc就是把C code給compile成arm code
9 i+ ]4 T8 s, M% p3 u5 t( o; u7 M' D% A- i0 ~
或者armlink就是連結C code與ARM code的指令5 R9 S6 _( s: L: U5 \& P: @
; I7 o8 L; ^' Z. e6 o! {; p1 E% W
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
) Q/ L5 r( O( Y( V. ~- Y5 k  R/ P$ O6 B) W
用來幫助我們修改ARM code的架構達到運算上的最高效能2 @: S, M4 m' T; I, {: i# B) y0 y) J
6 l6 i) i# [. L) P3 n7 y

1 c9 V& U% Z- @野人獻曝般的提供一點點小資訊  還真的是獻醜了  ! b0 x+ W1 v7 y3 w

: Q5 L: b0 O% b6 W4 a如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild+ a( Z, n! x6 u0 I' c( X, c9 |
8 U. h  ~- U  C; ?
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
4 V% X" A; m- U; d. M( E- s- r) v. `( B
, r+ O3 T3 j4 S1 j; g
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
, w+ j7 \9 h! N' E. y: h  j, `0 v1 M# {& R- X3 @: [
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤) t6 d* a% j7 H& b  L# X: s2 M

6 `7 H# e' A# \想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)- q: x0 j6 V( z$ n4 ^  w' t; b2 w
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...) F: T) R0 j/ q, j6 A4 n
+ h% C4 p: J) n7 l
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
, k  c; h% i  O& ~5 g: k& X" z0 d
& r% ?8 F+ U7 M% j2 e1 g- s在同一project部份c 部份組語的作法是為了performance/code size考量1 @# \  v! _' R5 }6 |
0 V  L; Y% \+ b( k, u( J
你所講的ACD應該是指ADS1 |8 B( G! M& V. R- c+ g' Q

3 H, d( X2 F  L作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字5 e& c" v5 W4 \7 U

+ M" h% b& A% T# |3 M( TARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
. q. J7 l3 E5 c& U- a4 a' K4 C6 ?1 H8 c/ Q, p. d0 e0 l
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-28 12:22 AM , Processed in 0.161009 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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