Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境; V2 C9 k- ?$ [' u1 ^

2 k8 [0 f" J' R. X8 z: B& A6 ]這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代
3 g2 B9 P( _4 `. ~& @5 J8 h* z* o* z& a* u( h: e
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連" L7 m4 b, Z8 ]2 h8 }

! g+ H; n' n9 Q; F: t在這邊分享一些目前學習到的心得與面臨到的問題' D2 b/ n+ `. I+ c  @3 P' r: m
4 _% W8 l$ `3 `
首先不論是C++或者是C語言都是可以轉成ARM code的
8 A4 ?4 A: I. s  @" N+ y7 z- D* M' I3 u
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表$ z, }8 K5 i4 N' _

  E1 ^4 d- E1 Y9 Z, M! z) a( [8 }接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?3 r/ _# Y" b0 z7 ]

$ ~% O' `- R' P$ E5 ~" s答案也是可以的
8 T$ u  z0 }% e! I, f: ]( t4 m6 c8 z3 ?' x$ J8 g/ v
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
/ ]& L. r, D( K( O# ~* e5 E
1 o, j; [2 x5 `1 V其實也有一些軟體能夠替我們做這樣的評估
& h6 _# \4 ^+ P' t* ?7 m3 {5 ~0 Z2 n, h
- H6 A. W- }$ s
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能
7 }( B2 N5 W+ J) a" @" u
6 T. o' g6 m; q& ?. c比方armcc就是把C code給compile成arm code' }: l! }, X3 _2 s7 k/ g3 _% E% m
6 \. ~7 u1 Z5 s7 o/ T
或者armlink就是連結C code與ARM code的指令4 j% o* }$ z3 ]) H
7 m* o2 B/ [  S# r8 A/ h( l& l
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等0 W4 F# p$ p) F4 m6 W- P
9 a0 a0 b+ w+ _$ o2 [& o7 \' q
用來幫助我們修改ARM code的架構達到運算上的最高效能
) x! c( p; l; n% o# X0 }$ E; y& S' O, p. `7 H( s0 q6 n
( y0 D, S8 A* c8 q" l# N
野人獻曝般的提供一點點小資訊  還真的是獻醜了  
2 A2 g& R1 ~% t! Y
  l4 l! |# S, i# \& d如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild1 e% ?% t+ N2 |* j7 T9 f
( \5 r' V+ c. C2 Z% c: h7 |7 p
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
+ j! o+ D# |4 }$ |* p. R6 |8 c" b( Q/ F
; N: o1 q3 R+ \- P+ [9 W
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
1 ?' c7 }* e% j! M' R0 ?9 n  n
/ D. ]4 A& v* r7 w9 i對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤6 ~. P7 M. {& @

+ [- ~. {! D% K( K+ O想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
" S9 q" Q; P6 G# [不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
0 s) p+ }0 d2 S, F: x8 k6 {
# ~- c) Z- M  u- L! M+ Y0 Z我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式9 L8 T3 V! H; h0 S* B* I, g

; A6 U2 e, P' |$ o* o在同一project部份c 部份組語的作法是為了performance/code size考量
& s. m2 T; h5 I
2 A! ~% t% _: M) h你所講的ACD應該是指ADS
  Z! q: q4 X0 d* q# a- l/ t0 s3 c* j8 T* ~# ?, B
作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字
. s! C* h" N1 @& i0 \8 M# A/ ^- [
ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
( G2 i# b1 W# S9 I3 m2 I- T9 m& o' d& C2 S) u
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-29 12:28 PM , Processed in 0.103005 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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