Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境
, J. B4 X* V+ ?: ?2 Y$ J/ o8 T* z3 a7 y: U# O
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代3 \- b7 ?# p. s& J3 @' o$ |2 X# b

: `' O6 C' \) k; b因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連! o" v2 q9 o( A5 w3 `

& p( k: N2 X6 t- ^& @8 ^在這邊分享一些目前學習到的心得與面臨到的問題
0 ?- r9 r0 J3 X) h0 ~
" _. B6 l; H- ^! `. u; M" w) C首先不論是C++或者是C語言都是可以轉成ARM code的4 ]/ _+ s- C* l% v( m, r
& a( C4 u) `6 ~; l- ?* Z8 ?
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
4 v9 G. {3 m% A! S2 f6 @$ t- M
: R. e+ S' n4 E4 x, F4 P接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
" E0 x9 g2 p4 H6 {0 ]/ C
8 p0 W: k1 G" `0 T6 E答案也是可以的
/ j5 S; f% y& J! X- w! o( d9 y5 Y* y6 A
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
* {9 M. |+ p+ l: w. B$ P8 ^, F( s% ?. t1 ~1 {. P5 G7 N
其實也有一些軟體能夠替我們做這樣的評估- }0 G2 o- i5 n3 J- ]

% y6 E) a0 `- h; d5 M2 s" C% [& a  V
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能' J& v, l6 h. e/ ]( I
3 e, I5 X6 J6 A2 ^9 [- C
比方armcc就是把C code給compile成arm code
3 O" t& X: D; O( V
( x/ G6 F) H1 i" |# S( X+ C! T2 B7 F或者armlink就是連結C code與ARM code的指令
* H5 M, ]2 U2 Y1 C! X5 U7 L* k
+ s8 L& K. m! n7 q% F2 p7 P另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等6 U# s6 _+ Z4 G3 F

/ ~' g. [9 n: F# h$ M" b用來幫助我們修改ARM code的架構達到運算上的最高效能7 q0 x- `2 T2 {1 p$ g, T

5 w3 x3 K: v9 R* J( Q" g0 q3 P1 q; `% M8 P
野人獻曝般的提供一點點小資訊  還真的是獻醜了  : c8 B/ H# [0 y$ Y1 k; k, L) M* v& ?

# `0 A; V# j0 G如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
! B$ u! x% ~" \5 b
" U0 m3 J$ k3 P5 N其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
2 E: p) b. C7 j$ `* S' x* r  O/ {. w, l8 H4 V# G1 z

- n* ^( v/ d2 N" D( S) V0 C9 l最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int328 k- W* L' q4 R( w- }0 J
2 Z" R; [" p7 U: W0 Z. B5 A4 W
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤  {! L- `6 G4 T7 R& @# u/ L
& ?0 W5 k, R) D
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
4 D6 z+ C+ o2 b  n; ~& s: {6 J不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
) f: R* o) Y) ?+ b  v: b' w2 Y* T: d) A- z& n
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式4 L# x$ t' h- J7 k# ~) W4 H
" l" e" i6 L9 V0 R: ~+ j; t; a+ o
在同一project部份c 部份組語的作法是為了performance/code size考量
! M, A1 @. h, ?$ S5 P( u
, G/ q1 S! @& l你所講的ACD應該是指ADS
; V: C+ f' G) Z# B9 `9 w1 G: l- _
; @3 V3 Z, T2 H2 D作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字+ n& T- z% A# B4 n

9 E& x  M9 k$ C$ O% s2 O3 LARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異, A( F& v* v- y, {: c  v: @

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

本版積分規則

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

GMT+8, 2025-1-1 10:59 PM , Processed in 0.159010 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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