Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境. c1 L9 d0 u6 V3 X. ~$ z5 V+ i" _

, Z0 M1 x4 N4 L# X* X: O5 c) J+ J- K這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代" d: p: Q$ M6 Y% G

4 D- K8 k) n6 X' w* f因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連5 _( L' T$ E9 o
( s5 O) ~4 \: u: Q; O$ v
在這邊分享一些目前學習到的心得與面臨到的問題% W4 |6 \& R+ Q( V$ O

: e' ], Q% i  E: u( r8 @首先不論是C++或者是C語言都是可以轉成ARM code的
: }: g7 m3 h6 X- ^' u2 B1 T
9 Z5 O+ u3 Q7 S( V3 k3 a喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表, V5 [# j- \, V: j

5 Z* Y) n* M6 j  m  Z% j5 d接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
1 Y* s. z" j8 U
) V2 F$ D7 t& M. ?/ T/ H答案也是可以的% s+ y- q9 T/ m) ~$ C
7 Y* \+ A& r9 W- J. M2 x7 m
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?  W* M& t+ E, I) b9 E% p

7 x" x; b( ~7 y; a! V其實也有一些軟體能夠替我們做這樣的評估1 c* ^, W( p( |0 i8 h* W

' i6 m- c% N& }) h
) ^7 K! P  j( P3 HARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能# x5 X! [6 r* d1 b! c9 L

) v: a7 Z. x  {0 M( u) o" G比方armcc就是把C code給compile成arm code7 K4 k( S" h  S. u- o$ d
& B3 {# j# s* r- \8 h
或者armlink就是連結C code與ARM code的指令/ h# ?( |. K  U
  v* _8 S  }. e! w
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等, H. w1 z4 e/ u; @

7 e1 F/ I, q7 p1 E' s, ^0 `用來幫助我們修改ARM code的架構達到運算上的最高效能
% r/ J$ W) }( i0 a! T1 l
0 m& e8 I$ i5 c: O/ f4 M0 _1 K4 i  t) Y6 `/ M0 D" Z. |: s' l
野人獻曝般的提供一點點小資訊  還真的是獻醜了  
6 [4 R  A$ d1 g9 D: H8 f# V( t% u  a4 T
如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
% B- _$ y2 y# c- Y1 i  x% l
) H" b  A3 j! ~% h/ q# W- n( g其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發7 _4 n) V8 c7 P3 ~6 F5 y+ \

1 Y, `/ `) X' j, ]  T' q5 F
1 S, d/ c5 n4 m( R最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int321 v" G9 M! t8 {
5 s0 y" F% a: u3 D
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤7 n& V7 |0 J- L+ i8 B

" L- J5 [- \; q$ M( F$ h4 B想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)' E. k6 d( E( d1 ]
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
: H: v; Y: O8 z4 X3 N" r
, v! K! `2 [; C我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式+ J1 t: S4 c0 R( ~  Z6 c% c. f: v: P; V+ i
- y2 G, `0 @. r: |: O
在同一project部份c 部份組語的作法是為了performance/code size考量
* m: Y( e9 d% g
7 Y# f- {' q: T2 v1 U: b你所講的ACD應該是指ADS
1 x/ y. o8 N5 H9 l8 W9 c! j# H$ G/ f' u
作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字
2 p- ]% x9 l0 N! s4 f
: k4 e2 R+ N) Z/ |+ b5 x2 `ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異; Q! R: x+ K( Z" T8 c8 I

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

本版積分規則

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

GMT+8, 2024-5-8 03:04 AM , Processed in 0.099006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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