Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境
7 x0 G) b1 x3 t- \2 n1 [! V& f/ w+ U8 T  z" F& E
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代
. C/ q3 n6 S7 G$ E, {3 u& c4 o, ^6 N
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
% A  B  Y$ K6 I; e+ O, [$ E' ]& i, b9 K. t0 A* C
在這邊分享一些目前學習到的心得與面臨到的問題
5 T. \- |' ^5 D0 m9 e3 C- e: j6 Q& u( L
首先不論是C++或者是C語言都是可以轉成ARM code的1 E. B4 Q0 E. H9 w
* `( R3 f$ @3 s0 X  I
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
* \# l- @. B( W5 o/ k, ]- h
' f3 `( I  j5 j& W( _) {接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?+ v6 {' R" [! p

' X+ T% o1 Y# p& D- D% q答案也是可以的  Y( I6 r: E2 {

5 C8 J' X1 c2 T+ L- ?8 Q最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?( u7 A& F( y5 a* E) P3 u
, Q1 L5 p* s# ^+ t
其實也有一些軟體能夠替我們做這樣的評估6 E9 g! V* V; r: t; _3 a1 _- e
+ {9 w4 k1 V" [! ?3 l) D) i5 R1 `$ j; h

. u  ~5 ?( E9 v5 K$ Q4 ~ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能" }" I9 ]8 `8 ]% l4 R1 Y

/ `& V$ Y6 s# K% U, x* l比方armcc就是把C code給compile成arm code
9 C; K6 T% w# Y' g5 Z2 {2 v4 Z- Z$ J' t* x# q  o- ]
或者armlink就是連結C code與ARM code的指令
" Q4 Q% a; N0 C9 R% [. A! [8 }7 [/ X. u
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
1 }2 @5 f0 q: b3 \! }8 y2 O3 I. h' {
用來幫助我們修改ARM code的架構達到運算上的最高效能
% \2 m- Y/ M# e5 R$ o& T0 w5 {  z4 b2 K  t) ]/ S" ~$ |

: }& ]3 F8 f2 @* W) J6 Z野人獻曝般的提供一點點小資訊  還真的是獻醜了  7 I: |) G3 ], \3 p& k
5 f* s; K5 e; |/ A2 K- u
如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild; @" k+ B% B1 c

; O# H2 ]4 ~) y% V; v5 E其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
7 I! Q7 K3 f/ @" Z( a+ `  \$ J- l0 K3 s

/ ]8 }7 n. H9 \2 Z3 e最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int323 ^+ A+ g4 D( L( N* x

& k! z. P, y; `* n! X( A對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
6 b0 {. B& b% K' _/ F2 N6 H: J. z/ M6 e! g
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言); `" W9 U! ^! A3 d6 s: L* l$ l
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
( g2 W, j( W# `5 \7 j  C  q' z8 N7 u# O% R1 L
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
/ p' G" a1 |6 s7 r: p0 z  C  B8 A: u- S/ e7 y3 M1 {) V
在同一project部份c 部份組語的作法是為了performance/code size考量
3 g( K+ k" V/ s9 G$ X3 V- x7 q) q, R
你所講的ACD應該是指ADS2 M8 |( Z! R/ V& m! o

2 m# R. u2 x$ u# i/ }作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字
# Z' _1 z0 x5 U% M9 D+ w9 p; H( B6 N) M# `2 n1 Q
ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異6 Y! F% [, y3 u6 ~( I

! L/ E) f' W: U9 j$ ~" l& @8 |* G  {" \你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-19 02:13 PM , Processed in 0.102013 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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