Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境3 E& [6 j. w$ J2 e
" S* j; H; V) @4 ^; T1 O7 q
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代
9 a5 h% Z9 N7 Z0 m* l
0 ]8 q' O" k" `4 |! m7 a因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連( h* v' y! \8 B+ r6 H* R

6 M- J0 X& S( ^6 V4 n2 Z! g在這邊分享一些目前學習到的心得與面臨到的問題  |% _0 I  I3 |% y2 `
/ J4 _* \2 O4 `. |# U4 R
首先不論是C++或者是C語言都是可以轉成ARM code的) R5 S# o6 A( y0 {7 B

% r: v+ z( J. A! e! ^& R喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表6 Q; k5 e1 [! w4 X/ ~4 v

8 Z2 j# M. f6 U! q9 N# I接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
0 G0 u" @2 ^) H! I& a: ~% n& U2 \& M" x1 _7 {# v
答案也是可以的
/ y8 |) m- H& l7 K
+ i3 O, d" Z5 U+ B最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?
9 p) h/ ^2 H; V
  {/ Y- U$ _; s1 `6 P! w其實也有一些軟體能夠替我們做這樣的評估8 U- i  r. c1 w, J3 U
/ m) h  m4 R9 S. B

* K6 E- e4 V, t3 F- RARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能& v  O7 u1 t- [" M
) x3 H6 D  J  M5 f
比方armcc就是把C code給compile成arm code( \; Y7 z- g. e- U) ~

) Q+ l  n: K2 ?" |, T2 J0 a3 E或者armlink就是連結C code與ARM code的指令
  X8 V, |+ k4 {$ v" K7 _9 g  l7 Y+ P  B% c2 ^4 ~0 [
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等- z$ [% H/ H9 X' C  r/ Z9 F" ^- A

) X6 y7 i- a$ c用來幫助我們修改ARM code的架構達到運算上的最高效能
  L- x7 w+ _: X0 u- V- {; ^. t7 W0 \* A. W2 @- I6 X

9 T1 v' D& V& k6 W+ x" I野人獻曝般的提供一點點小資訊  還真的是獻醜了  
7 x( ]9 o* u8 x! R( l$ M
# {/ Z; a' s! ^5 z6 ~9 A- ]如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild7 h. Y8 M& H; A  C7 G
/ c( w6 Z) j  T
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
( u, q3 P+ h! S8 s- v2 `/ U7 z
1 i1 k3 g2 [& h/ t& t
3 B& O$ i% t, y5 L最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32! z3 p* }2 E, S  E5 X# w

5 Q/ O+ f4 O% d, O$ ^& L對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
6 V- x. D0 Z0 n4 c" w6 l, B" u  v  y& ~; F) t1 ?
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)/ \. W) z# ?; _! {# W% U
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...
, A# |% {) `1 ^) n  A% a
9 i, S$ b. ^3 S. X我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
+ B5 J# _  v- A& V' O- X# ^
* |; z  g, W7 K0 q3 t& x在同一project部份c 部份組語的作法是為了performance/code size考量
8 B4 M/ v$ |' Y* `; _1 j  H
# {! ^" s$ O0 g, e" }( u6 F: S! j7 j- |你所講的ACD應該是指ADS- L7 R- O! Z4 y# G: w$ c7 z
6 V* f! N, g0 ?3 d) |
作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字0 d) Q9 T/ c) B' f. q1 [* Q+ ?
2 F7 T+ {& l. w! e
ARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異4 \3 Q+ U' w0 z( e! `

* W: }* l* ^2 |你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-2 11:29 PM , Processed in 0.120007 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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