Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境
2 `7 V2 L5 G0 L2 f, S# F( H2 [- x% |& v9 E0 K. [
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代5 @' K% |/ n, s& [; v7 m7 S

# |. G+ R: h1 [( P因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
" q& g+ Y0 j( l) [+ w' J* o& J
( S2 T& U; A6 q4 p- i" v$ H在這邊分享一些目前學習到的心得與面臨到的問題
% [1 }2 S2 E6 r# \2 ^% o( c5 p* l. x9 ^- S
首先不論是C++或者是C語言都是可以轉成ARM code的
2 s' b( \& n& W. B- e. K0 e5 y& r
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
6 O7 f* m9 `# a" d6 J
: E; o% H+ W  J2 l: M接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?! D8 @- u% N! K+ X# v
3 e5 J. u0 I1 P( P
答案也是可以的
9 {, l+ z: o' D- a# H! R
. T/ }; G: `/ u最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
5 V6 c% a) n$ V  i+ i2 W; f. Q$ e6 L, k3 w- {2 X) |& V* v. e0 L
其實也有一些軟體能夠替我們做這樣的評估9 R' \  d* N3 t/ C) u* w4 i

! i* k" d; p9 z& _" h' }, C- @. m
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能' P+ G/ P  Z8 O* [, M) i7 \
5 Q/ K$ M* h7 F
比方armcc就是把C code給compile成arm code( K7 c/ `# }8 ^) c: t" U
& Y4 m( [- N, q9 M+ Q" m: t* [
或者armlink就是連結C code與ARM code的指令
; e5 f  I, R; U. A, W/ f0 S% L9 G, }' @1 J; P1 t
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等% I! n  a! B1 S( C
) ]4 w# L. N* ?# _3 `/ q
用來幫助我們修改ARM code的架構達到運算上的最高效能
8 [2 ]0 c4 n( a$ Z. ?7 u& [2 `8 r0 U" h
/ Z9 a& }9 ]6 v' E: _- I, K
野人獻曝般的提供一點點小資訊  還真的是獻醜了  6 @7 o* ]1 L/ c) t! d0 e- T; v# W
. U# R2 |4 @8 A" V9 _! S
如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
* d0 K7 R! a. [" o4 R0 F6 Z4 X. s2 A( Y! ?' c$ {+ u) T
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發( {+ ?: Y  Q3 w8 A, Z9 ]6 g& T

+ {* D  z" W) B2 S* S
+ s) g, @2 N. U5 ~) u最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32  S: _4 m/ R& ?1 m
& Y4 j5 b! ?! l! ]$ _' ^; I% K3 n
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤/ R) U6 u+ E1 s$ c' e, Q- [

! I# w2 U: j; h& _6 J5 s' Q9 e, q想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)$ Y- n* q7 G+ F) E
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...0 C. ]* ]: S% u9 R
. u1 [1 ~9 o5 b$ I$ Y3 @: m/ q
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式& R( l  H* Y0 n- L! E0 {9 C
3 T0 y) @, r5 @+ l; l. \
在同一project部份c 部份組語的作法是為了performance/code size考量6 q5 v7 i+ d! i! C: T

, }3 N+ ^7 V) \4 ?% ]* r你所講的ACD應該是指ADS/ Y7 N0 X; F! D4 s, f

- b0 w/ c9 g0 s" d作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字) |! H& O$ c) c

, G' D1 l/ u" dARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異) Q+ R) _; A3 ^6 X! G
& R3 t; ?, }% a0 f7 S
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-29 01:59 PM , Processed in 0.130016 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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