Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境8 G' h9 D. Z9 w% ]: T

* `& _  N5 d6 N7 }5 w9 C8 l/ X這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代! f3 R, b0 z8 Z( I$ r
; F0 \: y$ ^% s4 [
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
  C' K3 q4 |& k7 y' O( B3 X7 T) X3 l/ f7 s6 i
在這邊分享一些目前學習到的心得與面臨到的問題: K1 z! g" @1 v( O; @/ w0 n. r
# s- L6 C6 |' T# S: Y* R$ ?) J
首先不論是C++或者是C語言都是可以轉成ARM code的
' n+ P" n7 r1 J  \/ S
" e: Q! z# W" }) ^喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表7 F. q% R( V, B
* c; k, n1 }) b' c) ]
接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?6 }# S: |/ D4 t! d. K; [( ~& }) t  p/ O9 W
7 v: M% g: e: L, [& F, h
答案也是可以的
7 n! y5 ~6 [) M
+ R. l; a. G9 C2 Z最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?/ S/ T  h2 G# V) k& k" t# Q. h; g
  n; @, B0 L7 u3 I' L( {! R
其實也有一些軟體能夠替我們做這樣的評估5 t+ X9 Q7 i* H& n$ w; k
9 y" ^1 Z2 B# p' i6 C9 Z9 L
4 Y) U: o7 |+ O, _
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能: q  B' ?( K" U& ~9 ], p
% [& j/ \$ S: c. b; N7 v! x# d
比方armcc就是把C code給compile成arm code" X5 \7 T$ `0 k$ [$ p! u6 p
+ H0 c( ?' r. {9 I# @6 O
或者armlink就是連結C code與ARM code的指令4 l7 g4 C. y5 V% s5 I; g

- J0 _' ^% z5 R+ d3 T) e另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
& g, {* e! _3 R: t- w$ z  ~: f2 Y/ W8 w$ \- @
用來幫助我們修改ARM code的架構達到運算上的最高效能- m% ~; x5 r1 Z2 x, J
6 F( `) ~/ q$ U2 U3 v7 I& s
) n' _0 ?. u# p4 O+ R/ l
野人獻曝般的提供一點點小資訊  還真的是獻醜了  0 R+ R2 o7 [0 y1 S1 Y

) H8 \# \+ r1 j% g7 J. y+ |3 M如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild" I. P+ G2 z7 V8 w

5 U% L. F0 P. v: }5 r" P' [3 K其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
* V4 n! |: P. q2 ~9 @1 J4 g& x6 P& o# |; C6 ]+ @
. q( l* V6 J2 c
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32- f1 e  c+ W$ }. r% I

  E- o* |3 Q# S4 L$ V對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤% E5 D0 }/ Y; Q! X2 }8 H

% z1 {4 c& w7 }) Q想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
7 u. s( \" Z+ _不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...- y  R! _0 c2 F( F* c" ?% U. b/ \( Y
3 G, R3 u- l2 |0 u4 a' \
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式& i. E  H0 A" X" k* _: n1 B, x/ H8 I
0 \' B, t+ x! s8 U
在同一project部份c 部份組語的作法是為了performance/code size考量1 ]$ V$ _( d* I5 g8 p

# `! h/ W5 A  H  `8 ~你所講的ACD應該是指ADS6 o7 _' ?& m( K5 |0 {" ?$ D! ~

" h' }, t$ F7 |5 d作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字% x2 ?7 s. T: I* J0 Q6 E

9 ]* r8 q. X" V: C& aARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異# k) `9 z5 @- [1 X

/ O  R: ~' v( T. S! X你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-15 04:05 PM , Processed in 0.100512 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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