Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境) Q4 k. U. F3 }% S/ e8 F9 H

9 Q3 M' B, w* X! t; l7 F" ?這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代5 D% R* D! R& o, f# u9 |

" _2 p  m( \2 w) z3 e因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連6 i, A1 z2 P0 C$ D; I2 z0 Q

* z6 [; p; J, U" G0 N% v) L0 S在這邊分享一些目前學習到的心得與面臨到的問題
  v6 O# O% ~9 S. H; \' h: j, r7 @1 T
* X) E3 E8 `8 Z; z/ W) l  {# D首先不論是C++或者是C語言都是可以轉成ARM code的
% T' d( O" O* g! r+ ^9 V3 F5 k! R
% j/ i( U/ j% a( v+ Q- I8 O喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
$ P; B! T( h, w9 K: c
) \# e  v' H/ [& w4 |接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?+ E& ^+ o% ]$ n, y
2 `! q. j3 y% ~3 [
答案也是可以的7 l$ v6 {" u' z& d7 ~2 P
/ z. ~6 b' e# \) p! V9 z  W) a3 q
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?" c# r4 q# U6 c# b  G. Q2 K' }
+ G' [# B$ m4 |+ [0 g& E1 ]8 p
其實也有一些軟體能夠替我們做這樣的評估
- |$ P* b, \6 j! c; X7 T& O: F
4 c7 D! D" z& J2 T4 ^
) R* u9 d: g: K) RARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能
: }6 a& J, [; @* y, z
/ a( O! s, E1 {2 i/ m" u5 S比方armcc就是把C code給compile成arm code+ n% O8 _( W8 I+ U

: w- R# n3 E1 e  l% _或者armlink就是連結C code與ARM code的指令
% L2 y7 H$ r4 p/ P* B
9 s( v* S" f( K2 ]( h) i3 X% s  [; k另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
) H  r  P3 K  I) Y. N7 k. L1 Q: C/ O) p4 ]& m/ o9 X
用來幫助我們修改ARM code的架構達到運算上的最高效能
' N4 c: V; i& s8 ^
4 w2 m6 T- g& ]. i, ^3 }$ P) g4 q' _
野人獻曝般的提供一點點小資訊  還真的是獻醜了  
' [0 i2 e# c; `) q( q, j. Q! U* v( V* p3 ], b
如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild
1 I& B. j0 h. e( O1 ]/ Y9 A$ l9 Z# c* {7 ^8 p
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發! K0 i7 {! Z' k& G" Y
/ k( f5 H$ E3 H* C- g
+ c) K% G  E5 t& C) \
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
* \1 n0 ^- H; B5 Y+ q' p2 z% {) d/ E8 K: s2 F! @
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤8 R% `! A& q: d/ g9 a7 L
* V% C$ W/ {% A/ `: ^4 m
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)7 ?' k( ]# m9 y& F8 @$ Q3 x
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
- K1 N* M$ Q5 f" p9 f5 p9 [3 k, @5 m6 f0 k% d
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
9 ?' |6 Q: l, z9 I
. m( S8 o# G( C( m在同一project部份c 部份組語的作法是為了performance/code size考量
& M5 L% r+ B# C2 D6 b
7 C6 D# n7 N  e* I& J4 g' d你所講的ACD應該是指ADS
, c# K0 s% {. l! l' d' O' V5 [6 h% ]! r
作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字
8 J7 z+ V( c  d5 d# J
% s" u+ M* L, ~ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
. R7 h. q3 c- [+ N
2 O% W" a; s3 j' |3 n0 e你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-1-1 11:30 PM , Processed in 0.154008 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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