Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境. l0 [: U9 E- o- B/ `

; \$ V7 n' b0 h6 g1 @4 ]這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代
9 D' r1 s' c# p/ |3 \2 I, g( E! y0 W& C3 f
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
$ ^! }% C* ]5 K! [: `6 B) G; W% m1 \6 M
在這邊分享一些目前學習到的心得與面臨到的問題1 W) h$ |: e1 }
) C& A8 d5 x8 Z/ J" W3 x) S+ q! V
首先不論是C++或者是C語言都是可以轉成ARM code的
7 ^8 Q3 p# o' V$ ?' ?7 ~. M, S3 Y9 n1 S
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
0 U, j; q4 x) ]+ R) N2 v8 G& v- A: z
) h% ~. J$ P0 S" q接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?0 X* M7 S7 F3 r2 L- R

. D0 z' B+ T1 Y6 Z" K答案也是可以的( k, A" y# n& L8 o3 _3 p

0 C2 h1 h' V8 \% z' a* p最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
# k/ k! B% p  g7 c) O6 @" |- x& l) ]' f1 ]0 g
其實也有一些軟體能夠替我們做這樣的評估# p7 e2 ~2 [7 t# O& u) ^
5 W  i6 v6 D4 t0 w% K- }
1 _5 R! ]& f9 l. h- q3 V& C
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能# K5 n. r4 ~8 L. C

- A  X/ Z$ [& X! [2 `比方armcc就是把C code給compile成arm code
  L6 ~0 u/ C( z+ L+ K$ ]! N& c7 V0 P5 ]2 c# w1 e- ~4 s
或者armlink就是連結C code與ARM code的指令
- C6 i8 X3 a" o! F0 U. H4 u
' d/ J9 t& Y" o1 Y* W4 ]另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等9 Z: k2 d, k- G# @4 s, s8 s
' c! [" K' ~! s+ _7 {, s/ F
用來幫助我們修改ARM code的架構達到運算上的最高效能* v( `" G& b1 m* l

$ P  \( ], V' s0 ~
  ?7 z0 b  u* x7 Q+ `5 L野人獻曝般的提供一點點小資訊  還真的是獻醜了  
2 u: v2 K. F( b# x7 ]
% }6 D& D4 Y6 ^, H如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
7 q# R- f6 S0 H4 x& Y
+ I% Y: U' }/ D# B1 g5 |其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
3 A7 I# P* R1 i7 I8 _9 ]! U' ~- c+ J. M& b3 G) ^) n+ G# h
, n4 M; s/ T8 u: {
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32& I: n  w2 b% n4 e, p; m* a/ Y
+ x. B% g0 W* \. p' E6 Y- P
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
# A9 w# P8 k# U' J" {
3 M6 b" E4 e0 n! \$ C+ }想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
; ?  d' K' w: V不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...% h4 ^2 `$ }* F

3 k) A) e# i$ F! H" m8 r- ^我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式; `/ V' G2 |" S1 b
! c, k1 M0 ?( F+ A7 G- I8 y/ y
在同一project部份c 部份組語的作法是為了performance/code size考量
3 _9 H% x9 V# |; n* t
$ ?+ [* p2 e3 Y5 h你所講的ACD應該是指ADS
! y! ?$ O2 k# M" j8 _- @7 A: T( N
作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字
& P- U# q9 X/ W% R- Q1 g, `- k2 c
) @& d  l2 {7 r) B+ K7 o$ |ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
7 L- c% k: E# \, d3 x* w5 L; @- ^8 a9 `* |
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-23 12:49 AM , Processed in 0.154009 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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