Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境
9 M5 ]! q- A& }" }9 b( p
3 X! l& N0 i- k  t8 a這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代+ c. W8 O4 Y: n6 w" {6 X
8 e2 D- p& n6 p# \; p; L1 x
因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連$ w0 D$ G* \# X. ^6 `# o
; O0 U6 `5 x- j) ?# ~
在這邊分享一些目前學習到的心得與面臨到的問題
9 p$ ]4 n- \+ V# j/ O6 Z" _, k! A$ j
首先不論是C++或者是C語言都是可以轉成ARM code的
* Z# c: H0 @- U' k/ `
! H* |' T; v' ]- ?5 A5 e9 X$ g0 _喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表4 Q4 F( P+ T4 [6 O
2 f; M8 p9 |: {# j
接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
% q  V+ Q) l; A# q5 \; A6 P- z% Z/ t# X: J6 B0 ?0 A
答案也是可以的
1 C& o% |: _8 m9 {; P, V0 q' \2 }7 H- `* A1 y  F
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
0 q2 Z$ R/ H  y" [$ B4 C1 k" o6 ~/ h: X
其實也有一些軟體能夠替我們做這樣的評估/ Y# g3 F/ W/ H$ P, }

) `! @8 e( q7 p$ ^- ^; k  g
* H" q. X# F2 g9 o5 [! iARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能
9 a3 D# A, H6 _4 J2 t1 A
, X2 I2 m; f& ]% S- `比方armcc就是把C code給compile成arm code
1 |5 {3 R4 O( g. K' R. k2 ^6 p2 }1 U9 R2 ~8 ]& z# K
或者armlink就是連結C code與ARM code的指令
3 L5 ?' S' p1 i) U$ h. y# s1 Y
4 x# n$ e/ S0 Y( S, B另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等. n8 C$ i$ d) _6 Q- h
: E8 h9 E' d/ O' O
用來幫助我們修改ARM code的架構達到運算上的最高效能! I# }. M1 G* k4 l9 g5 n

9 C. _$ b3 d% w
9 k- C: ?0 F( }- k野人獻曝般的提供一點點小資訊  還真的是獻醜了  
3 W! h! d/ j. J
  S% L) I1 r$ v* @# \2 q9 I0 T9 H: V如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild( j2 O+ ?# ^  y3 C+ V( }! C

+ C3 L- l; f7 K8 P4 S9 Y其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
, v; T- V' ]' x! u5 m$ Z! W6 V' \: T! b' h

) Y  u5 |0 a& y2 t最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32/ v7 t$ k: n% w2 N3 s$ V# ?

* a* @7 G  y0 w' k$ ~; M/ I對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤  `0 i/ v+ b5 S) [5 z/ P

* i/ G" b7 l: P0 {想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)% j/ m0 u1 n( v8 R& T- m
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...6 `9 }4 h( ?/ X# `+ V$ ?, i; v

  x/ `! h7 K5 J* \! h1 y- P我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式1 [/ x2 Y1 l+ N! q7 l
+ D- V8 N8 X2 `  U; O5 k
在同一project部份c 部份組語的作法是為了performance/code size考量
; x# e9 g. i- L4 `4 b4 T
4 @% @6 `. a' {/ b你所講的ACD應該是指ADS
5 Z4 V$ b. l4 z" ]# Q. J! P
5 D7 H, T. c; X5 r! N8 b作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字8 ?. R- m( i9 L: A8 ^
3 |% B2 L0 i# L7 C* o
ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
" [+ Q7 s) d5 A: W4 \$ m. B2 A1 L4 ?3 o% Y' g! `7 d
你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-4 05:55 AM , Processed in 0.125016 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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