Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境
6 c' B5 v. W  M2 U
4 {% U" g8 n1 @這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代2 U2 u8 ?+ F; R6 j! m/ O

6 K5 _+ ?3 M5 p2 `因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連1 T! Z9 p1 u- N  c" ^

+ M) {8 e* ?2 @3 P在這邊分享一些目前學習到的心得與面臨到的問題
" ]" s8 D1 J) j- j5 [5 d
% e$ t; O) O3 j* t% }9 D+ E; _0 G首先不論是C++或者是C語言都是可以轉成ARM code的0 Q" y6 Q, p1 }
" @# t$ E/ S5 B
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
( r, K5 k/ ~( A
& t6 p6 m. |( S7 l" d接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
9 D+ x- j* [( [; Q7 H# Y% l# j* k) j2 C5 r
答案也是可以的
" ^  U" u6 d2 k8 d' ~' C) G' a/ d$ W  L7 _2 u1 t* q0 X% O
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?) a% T: H" `- p7 \, d4 x/ M

% p2 }* L0 q- _+ O& d其實也有一些軟體能夠替我們做這樣的評估6 i- _# W6 d' ~2 J! q' P  \

5 S% E9 k9 D4 A3 [+ \+ g( c) t% Z8 _6 O
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能% M4 `2 ]; M+ d

3 k# N/ g1 [2 O8 @" Q6 _$ e# C5 @8 I1 G比方armcc就是把C code給compile成arm code1 {+ S* Y6 b/ T2 U

5 x% Y, D; K  O& g* r+ M或者armlink就是連結C code與ARM code的指令
4 i' v  i3 g5 g! O( g4 L' q2 [9 R$ g0 w' K* {! o
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等1 N2 K/ }- l' F4 y& ~8 g9 s; C
8 y/ V+ E' m5 t. Q
用來幫助我們修改ARM code的架構達到運算上的最高效能
2 O6 f# b# o4 U6 G* t) K+ O9 ?
2 G. [, V$ y. D
6 s! r, S" g7 e/ o野人獻曝般的提供一點點小資訊  還真的是獻醜了  
# E( y( h  k: Z  c# V9 H0 w8 [# W& E/ C" I& N
如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
; L! x8 B! Y+ d1 a! `3 P6 W
! b+ Y, d: `1 _$ k5 Y/ I其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發; M2 T5 d/ \2 N* P5 K9 {0 E7 O

  [! U. D+ D- ~4 S# W. ]
$ t# Y% O- m" k" T+ z- Q6 I最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32, X7 q5 D) w& ]: M. r* z0 |$ ~1 o

  c8 T* w  u% U& k7 @* }對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤2 N$ V% ]- T5 y( Z: W9 b; u7 Q
* F" l3 f6 x- z8 G$ p4 K/ }3 \, X
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
9 q( [% x4 ?# |, l8 Q不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
8 @- t$ X3 a; O- ~3 Z; O4 m( g- g! X0 f7 X, m
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式* o1 n: a. g2 a# H5 Z

+ z1 n, N- _& O. [在同一project部份c 部份組語的作法是為了performance/code size考量0 h3 r( i% \, I: [$ ?, E2 t

# }/ v$ L3 \% Y. I% l, ^6 z你所講的ACD應該是指ADS; j" X' k/ ]1 P% b' h/ S" Q0 E, I4 B

) k2 X; L* i- s作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字0 r3 z3 `' C1 A! J, }$ P9 W6 d

+ ?$ Z& L( j* T* j* K8 vARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異, h  E* ]3 A  p! V+ X- @* D/ s

- b  o0 |4 C0 v+ l4 x: ?9 D你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-7 02:21 AM , Processed in 0.098006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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