Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境( O% |; C- b2 `* g

. L+ C; a, j! X2 w$ f2 N這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代4 K0 W* D! ?. W: @: N# L
) b, ?1 J  A9 H7 D0 d  \
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連+ J) F! H/ S3 f. W  O; N

4 \1 E+ O" l1 u: S! I! N6 t7 V在這邊分享一些目前學習到的心得與面臨到的問題; |3 F/ ~4 S( l: a" Q1 e
* Q. B: L& ^2 E; I, }6 J
首先不論是C++或者是C語言都是可以轉成ARM code的+ m3 M4 F8 _" g

6 _  F' x, j$ |喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
. e6 @" h2 G3 @+ f6 k7 N' ]* {0 y& u
. E1 n# j5 V9 O/ I6 R接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?4 G: i. J8 I- b* Y
' e, s. M+ o  w) D' a
答案也是可以的& [$ C' |* W- T. c3 R% [. N8 V6 I

6 r7 F& y  L7 @  O最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
% @( C# G3 I6 D
6 T% X( z( M$ n# \2 e$ H& R5 f其實也有一些軟體能夠替我們做這樣的評估0 p* o, Y! ^1 ]+ B
0 o- I* U" U. M4 G6 Y+ Z
& j4 q& B6 u; l- y
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能
7 W' M/ b/ i! U# _9 C
* v* K( p$ A, O: G; H6 Q$ C. }比方armcc就是把C code給compile成arm code
) `" x# f+ J! }% u
$ w) @# V5 T7 W0 d) M或者armlink就是連結C code與ARM code的指令
0 Z! {/ c/ X+ `  q$ I6 I" ]; Y6 n/ s* d, c* q4 w
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
( ~& H8 }$ H$ n' _& z1 Q
( A: r1 U6 `# l) h/ n9 e# f8 r用來幫助我們修改ARM code的架構達到運算上的最高效能1 ]6 ]0 L* o" M, J/ ^5 s3 \+ Q
  |7 u! W! f3 i4 G. Y7 y+ I8 s
0 `( T( @5 o  p+ j! `6 p
野人獻曝般的提供一點點小資訊  還真的是獻醜了  
+ _' U' x- K, H9 ^! x9 J
# d: u# u& Q" x/ _如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
) h" |% A& n3 V9 E; C2 w
( W2 L% ]- j; |) O其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發* N, \+ M# d& p
, H$ l+ R# [* ^  x: S0 U
7 }" z" ?3 Z' f) B" }
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32# U0 b/ u0 o$ w# E+ j2 \6 @1 s- G
! }* H: u. V9 r# b. B
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
, B" o( ~% o; P5 k
! ^+ w7 t4 o( O想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
" O& q) q' B# `+ {# Y- ^不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...' I" h1 U+ S5 X- `  _* z

2 |0 k3 |; _0 E/ G& j, g$ G我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式' N& v+ y* g& z
6 ?; T* W) T7 U) v6 {$ p
在同一project部份c 部份組語的作法是為了performance/code size考量9 {/ v& k; y( E4 e% _+ j% d

8 V4 {0 ?' t( y' }6 O: X) Q你所講的ACD應該是指ADS) I. M% `3 `& ]' D+ x; a
  X; d) m: F- G* R6 n& w6 s7 k
作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字
6 f6 l* Q9 P) T3 {/ ~; ~! g
5 E" \8 ^% ?" }- i, p) HARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
( {3 L% h/ Y5 ?
& V: C3 e+ \( l& w/ v你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-29 11:20 PM , Processed in 0.103013 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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