Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境" Y- I0 }. v  {0 A, g% |5 L6 t+ N& Z

' s) M8 O7 K8 d  E1 S這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代! h# H7 T0 O* \" S& }* b* a

9 y) `  e+ r9 s因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連3 l0 W9 _# ^9 ?6 M' w
8 S+ X- ^8 P# z' E3 f
在這邊分享一些目前學習到的心得與面臨到的問題, r5 p' [0 Z) a- k
- N7 t* h- ?6 j
首先不論是C++或者是C語言都是可以轉成ARM code的
6 O0 C+ g# I9 c& |5 X9 H$ N
+ q; }+ N6 ?2 O0 A. Z; j, N6 @喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
$ T# N% h; C  q8 R+ z
: `9 Q3 P+ f9 J/ v接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
" Y/ @. ]3 C6 v' i! c! w' `/ Q8 \" k
答案也是可以的
  }" k: R( N$ k5 o8 K7 I2 |1 Z6 s) V$ P  r
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?1 J1 Q" E' i/ v( [* G

7 z6 V$ w3 e8 j% j5 X+ \! m其實也有一些軟體能夠替我們做這樣的評估0 l9 s; J8 q3 ]; Z' }" w; I1 \7 }

# I3 C" P1 b; E# s9 M
6 Q) j6 B; a$ X; N2 e2 oARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能1 G# P9 D  g8 P# `" X

+ _4 G' ~% |4 }9 O) L- y比方armcc就是把C code給compile成arm code
  Z/ Q- C& N6 p5 V% ]1 j0 O/ m; r$ \7 T+ a2 ]1 P6 A' z# h
或者armlink就是連結C code與ARM code的指令
& u- a3 J$ O8 u7 w! p+ N# e/ e( [
+ v8 e* x/ i* Q$ p* K另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
8 _" J( T- W' @6 \, O& `& }+ x$ ?1 q4 b4 i7 C3 i
用來幫助我們修改ARM code的架構達到運算上的最高效能
" Z$ |' k, W3 y" Q3 C# k" ^3 N, w3 x5 a: ~9 D! n. ?

+ U: K! z* s2 F野人獻曝般的提供一點點小資訊  還真的是獻醜了  ) ?$ z& {; t4 u6 O

+ [* z/ _+ }( E! a如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild) h( D8 D4 Y- Y- o7 m7 g
: G! q6 W" `3 f$ p
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發' k1 O5 M! U8 a* n

; I. ]2 D: S- L' w& T  _# M
0 ~/ i/ F0 `8 w5 E2 ^8 k最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32& f/ M% P! ?% W
; N, r* s7 g5 G' q( J0 _0 ^
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
9 q" X! [- W* @1 S6 N9 V
% |$ \9 n+ x; |. a# X# [想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
) G# N) q( S! Z6 r3 o不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...# k. \6 a' V: w& m: i( r+ Z: z5 E
, |5 P- K/ u8 e8 I1 N, g  E
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
* U3 y0 a  c% l% Z( J9 v
1 \. p( h1 q' h2 S+ D( z在同一project部份c 部份組語的作法是為了performance/code size考量
; B' Y+ {$ W4 f* P! \; U( c/ d6 A0 Z6 T
你所講的ACD應該是指ADS, I$ N/ E: p7 n) b" x

, x5 `5 Q: u6 T0 _作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字, f  }5 E. v- y- R6 ]

1 E. `6 D, R; m4 g* T3 p" @, V/ AARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異( U" Z6 r+ I" J& B' H7 e. U

2 _" o' H2 G5 P你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-1-4 04:31 PM , Processed in 0.156009 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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