Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境
, l1 M8 w  g( e$ Q) i. U9 M" d! f
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代  o3 w, m) W+ ~& i7 L

  A9 w9 U% `. W  J; ^3 g5 Z因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
3 w5 S& [) R3 F' M7 T4 b; [0 _, |) M) D5 M
在這邊分享一些目前學習到的心得與面臨到的問題8 U1 K  N8 \9 E. C: z

$ N6 q# f5 p; F, M9 A首先不論是C++或者是C語言都是可以轉成ARM code的: D" t3 D7 \: e  T' m7 `. n
: v6 m0 o' d) r5 i8 r# {- E# H
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
) e; G8 U4 {/ a( @) [9 U6 [6 |/ [8 Q4 U' E9 K2 _; Z3 u2 O0 r
接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?, [& V* U  J( K! P8 a# }: {

4 t# m7 _) A% S3 |* U答案也是可以的
/ @/ W3 i5 J0 W( F: W
7 F% ?8 ^+ ?! U" J) Q最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
9 ?0 \: |7 R9 X- }0 X* g
7 c8 |0 K4 x/ n- T其實也有一些軟體能夠替我們做這樣的評估
* Q) W2 m) ~! C( _; R4 A2 `6 K: R+ ]# I( q

2 o7 x6 ?/ u' JARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能
  A8 z. f- J2 z& d+ m5 G) d& `' M( R+ R/ ?. A/ ]
比方armcc就是把C code給compile成arm code
* v7 {& |7 _; L( Y
/ T) ?' m0 w) N/ }6 A& y% |或者armlink就是連結C code與ARM code的指令. V* H3 E9 ?3 S0 \' P; b, ?
# X+ p: F6 O2 X- O, A
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等- X# C( n) F' }3 r

: |" t& y( M, S5 `( I- ^) m用來幫助我們修改ARM code的架構達到運算上的最高效能
8 r" ~! y/ ]0 {) K$ K( a7 |' W4 a

5 }" Y* z3 _1 X8 l野人獻曝般的提供一點點小資訊  還真的是獻醜了  # l; D4 Q* `* K
/ `3 ^& G1 q/ L* o# t0 O/ @0 a
如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild! n; ^) G/ b  B) i2 ~- |  F

& a9 t; |* g  Y' {# c8 ^其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
/ `5 v2 v3 B$ w5 e; i. i/ |4 e/ {8 P9 C( C5 \1 e. d$ O

0 s$ K  O! _- q7 c/ C3 [最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32' g! @" k' _+ Y" x6 y8 J) m& n4 ~
/ ?. e& G8 V9 Z" o8 C* ~% m. l7 U  q
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
$ o* Y2 W- d5 U5 P0 u
9 G6 R/ S8 _+ I  H3 H; T/ d想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
& s: x" E5 ~$ b6 g$ p6 }5 |5 E不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
0 r+ w9 D/ X. G% B
7 Q, @- R0 R& `1 ~" m8 k1 d我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
9 C7 d( e. Y6 Q" @
- B" A3 H  M2 S  f, x9 {在同一project部份c 部份組語的作法是為了performance/code size考量8 [3 k  k  x3 W6 ~+ a
1 ^( ~) C8 s5 F5 o2 p3 {
你所講的ACD應該是指ADS
; K0 g  o! v4 n9 l6 r5 n( _1 U
0 B6 {$ i. Z& R0 S& |作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字, a% R) C  v" z, G6 {

9 o: o6 L- h) }0 q$ S& u. j- `ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異) `. X! Y" f; B: U* M/ |% B
% M! g' z) _3 Q
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-6 08:44 PM , Processed in 0.106006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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