Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境
1 B" |0 S8 ]. I; @# v( x. [" D% \3 ^; R! g& E
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代8 Q1 R$ g. L/ m, n

! i9 h3 a  i1 S$ T! S因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
9 E/ ~2 i9 M* r0 [2 O4 O; @
5 f& M2 Q' j3 L! g6 ]在這邊分享一些目前學習到的心得與面臨到的問題
# |* K: }. r- s2 \& [
2 n! D7 ^, F  Z4 `- M首先不論是C++或者是C語言都是可以轉成ARM code的: F4 o+ L# N% T% v2 N' ?! Z

8 }. A+ I# H4 S8 h  ~; f喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表* {( q4 G- C$ r

) @9 V, G1 B8 [+ {+ ^  m7 b接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?8 c& h, h# K( o' t
; ~4 `' G4 R8 k) Q$ D% D8 C
答案也是可以的
. M5 T0 U* B" E" U
! G2 c- C, [# x8 g% ?最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?$ t! K0 b, D7 o& e# W1 x6 v+ R( E

1 q5 B& b1 f4 y其實也有一些軟體能夠替我們做這樣的評估
; @, I4 T2 S1 @% X- t) X( T* j) N3 O" E) \3 `( D
: }' |( K( G* I8 ~+ b8 @, L
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能
$ `- E8 i! \! R$ V- h+ E1 p+ h
* i! O/ V) H9 ~0 i' [; @) T, C8 @比方armcc就是把C code給compile成arm code
3 V( n$ m2 u' L- V0 t9 X, _: u2 i5 ]) ~$ n3 i
或者armlink就是連結C code與ARM code的指令
9 `; s  N1 s$ e7 R8 q( i% z- S, s% k9 x1 @; y" p$ p/ {
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等+ O! I$ q8 f) @, c1 v. t% u

/ [1 Z* P$ o2 S% r% m( C" l用來幫助我們修改ARM code的架構達到運算上的最高效能
' w- D3 P& _+ N5 s+ a
. L$ f6 M3 Q8 `! a7 d. V/ g2 k0 S: K2 l$ R% u* ]9 x6 [7 b
野人獻曝般的提供一點點小資訊  還真的是獻醜了  6 L3 X+ q* ?  B4 P; `" B% z

) r' f9 y: `+ T. q( V如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild! R# L9 Q- q( A" ]: b- \+ p

* g, S, V' R9 m0 R" G其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
) h, ?( l4 ?% G% K7 O! K2 f: }3 m0 R! [( D+ k
; ^& A) B' m* q& H: o% n/ ]
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32/ C4 H! c  K1 k9 g

; z4 [# C' U# {3 H! U& a; ]7 A對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤& x$ T0 P! K. e8 T( f8 I
" Q3 f( S  S3 Y0 @+ N, S4 ]
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
1 S' @& _! ]' g1 t不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code..." u/ G7 b' I& V7 R! k. q3 p; e/ `

" p% h1 E/ r, O& ~我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
3 i0 K" S5 _5 f4 B" D" ]- ?- C5 Y& _* n
在同一project部份c 部份組語的作法是為了performance/code size考量+ L0 j( X& f# W9 P
1 Q. E) |6 \4 c: F
你所講的ACD應該是指ADS
' R) o" [+ C+ b9 R$ G8 c/ z# k
) g( f5 }; b' e- X) Y6 C  P作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字0 ]  }6 P3 A) w# m8 F0 C

( m9 I8 |7 v% a, KARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
4 q' z  w3 s6 }( Y: `; h# r0 k# O6 b, Z
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-3 01:51 PM , Processed in 0.123516 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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