Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境
& g2 m  h3 K! s
7 D/ h  ], @2 E% \0 f4 ^, I+ w這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代
9 V0 E' v& g2 B" z8 L  @! V  x/ U0 w- S$ C* W- H: x
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
8 J1 {* X% t. ~; f7 ~5 [6 f  s; c0 v$ n' }, N
在這邊分享一些目前學習到的心得與面臨到的問題( \( J, h& f8 Q. v' ^1 K( S
* @  b& H; b4 u5 \1 k1 ?6 p# |
首先不論是C++或者是C語言都是可以轉成ARM code的, I: o2 S8 z- |

& O; D! z% S$ N* `' d0 V' U, h0 H6 z9 ^7 M喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表# z+ O/ v; l- D5 X: r, M- V
8 u) Z2 W2 W+ l
接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?6 d# ?3 M$ s. }6 X9 W5 s8 }5 j9 o
1 n% N$ E6 F% O8 j0 P
答案也是可以的
$ U7 ?$ X! X& a& X2 Q
2 @) z/ B4 @# Y+ h- L6 p最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
* v2 J" H; ?; {  \& }- u7 M, f8 z: {& p  N
其實也有一些軟體能夠替我們做這樣的評估) E9 b, i& H. D% x; Z: y

* Y! _5 ]) l5 X9 P+ ]7 I2 f# z% t  `* T
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能
, t. w, v- ^1 W9 u1 F/ ]
  R- e9 a' T8 w& z3 r; }# H比方armcc就是把C code給compile成arm code
; [. `9 w- u# K2 W
6 b4 q- `# G1 f6 ?) [$ q或者armlink就是連結C code與ARM code的指令: F# O3 q4 W3 h4 d
& O$ ^, x1 P3 u; b) A  o
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等# s9 l3 ?: N9 q7 V$ R/ w
, n3 {. @% ~, {- m- d
用來幫助我們修改ARM code的架構達到運算上的最高效能" _6 k2 Q, g" Y- ?5 T8 {: t
. `) [9 c2 @, l2 X3 m

$ T. G/ v4 ]. u6 N# x5 W4 O8 x. }野人獻曝般的提供一點點小資訊  還真的是獻醜了  
- w+ T; ~1 ^+ g3 G" `' p$ F0 L, {/ i2 {- P
如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild, H3 R( C' i  i' T- Y
3 ^6 @0 W  s* D
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發" B+ f, p" |% U- w

+ n+ }, j1 _- W3 ?8 c- a! M
* t0 ~$ C' o4 {最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
9 V$ u9 b% {  M0 i% v. i% f
8 B7 Y  ~2 g; H  T+ Y$ m對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤' H8 L+ [1 O  r
1 B! q* O* P" U/ ]
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)9 q/ F3 o- p7 p* N+ p2 ~$ s
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
/ V" l2 W2 ]3 Q  ?. K' Y, d6 j  W, }, e3 m. }) `
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
0 K" L  e5 g1 {+ z# _! L
2 V4 W7 g( p( N在同一project部份c 部份組語的作法是為了performance/code size考量* Z- l- B+ ]+ j$ s

' s5 f8 e! r6 [! F. y6 n$ p你所講的ACD應該是指ADS$ T$ C: C1 \8 q  U* _

& O0 K- f" i) T: a! a* c作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字4 F5 g1 @. y: V& l1 u  y2 j1 i8 d
6 }! K: V" n; K- n
ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異1 M" E7 C: W. C; q
7 S0 w- U! |9 t. }/ h% q4 a
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-19 09:04 PM , Processed in 0.100006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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