Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境1 E' W1 \3 d+ \: ^8 T& a5 x
( n2 R5 F( I, c5 c
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代
, @( s+ V  y/ Z7 I0 [
7 f- w. O* w/ e! B因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連
# s, A; K) P' D1 E- K1 c$ B% D4 @* N3 w) v- Z. e" ]! [9 l
在這邊分享一些目前學習到的心得與面臨到的問題% s, v6 f2 i* }5 S
1 I- p9 F- U0 y' W0 F7 H* L5 a
首先不論是C++或者是C語言都是可以轉成ARM code的6 @4 r1 `5 V5 q' e1 |
# e' ]" ?5 B* F
喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表3 F: Q( K1 Z+ c5 `' t
  t0 p0 w* B# G- h6 c# h4 j0 Y  t
接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?# `$ k/ e# g) N+ L2 e1 y
. l7 O; I  y' a
答案也是可以的
  e& o* U+ m2 F  X* M: X. M; Z
! U3 `3 h( W1 l  A9 [% H( ]7 b最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?' E5 X/ m2 [; \: [
% \9 |4 |+ _/ [
其實也有一些軟體能夠替我們做這樣的評估2 [6 Q9 n" B$ t9 p7 [) \9 l

# ~& {/ m# m  U7 r" |' }
7 s) J" B6 G7 `  E, kARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能& t0 r  s0 V& c: o* C2 q
! ?8 p0 f# y( c$ f  Q8 ^6 l
比方armcc就是把C code給compile成arm code: W2 a0 Z9 g8 R! ~1 p9 ?5 m& d

9 w  Z7 r+ |' M或者armlink就是連結C code與ARM code的指令
% k' }8 K$ h. P- s' o* H# B" y0 f, |
另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
0 f9 A/ A3 f4 a) F0 J5 E: k4 L7 i3 F1 e5 }. n* G
用來幫助我們修改ARM code的架構達到運算上的最高效能
: z- N: h5 ?8 b2 s, a. v  h+ {" b4 g; J5 z/ x; i9 {- j  m: X

. c$ k+ h# M. [9 {野人獻曝般的提供一點點小資訊  還真的是獻醜了  
+ f/ U- O- o6 @( Q
3 ]* {# w- C9 C& _如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild- ?- @1 Q$ o. }

6 D+ @7 p4 s" Q其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發# D0 j& L9 t8 b+ {/ `; L  e
$ R2 b3 D4 Y4 D: J2 U; G
% x, d4 W. o5 Y
最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int32
2 L: l: A0 \! P/ d5 ~/ c; Y2 Y1 w
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤
. }! f- [* ^8 o& p  T2 b6 t0 M& ]: Z/ T
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言)
/ Z: g& a* N3 _0 \* _4 {4 L$ \不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...% L) Y- w% H( P$ u6 Z' ?. W
' C0 w, d! ]$ o1 ^' m
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式
7 c; B. p$ a5 r! J
8 k+ V5 z2 }* A+ v( P; Q在同一project部份c 部份組語的作法是為了performance/code size考量% _7 B$ y  \! W) b/ W/ q! a
7 A( U; M$ e' x
你所講的ACD應該是指ADS: |& I2 L' I- t3 K/ h

+ S/ n/ y$ t$ |% `- k3 I作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字
. F  s8 [# P: M
8 ?! u7 ^  J& ?( lARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
8 ]  Z5 S% `- d" _. r$ f) S% [
* i6 C$ _, ~* p/ {你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-19 05:54 PM , Processed in 0.103006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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