Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2010-9-16 18:37:27 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
老實說 作數位IC設計很難不去碰一些周圍的環境4 u4 L$ O1 D. k) _1 S
8 A* K& |6 G- q% }/ p  F
這次因為project的關係 有須要放進一顆ARM的IP 因此位了節省面積就把一些電路的功能用arm來取代, q8 _- P0 o6 u( U. L; o0 x

- k1 }% N3 `' X3 s7 E) K因此莫名其妙的跟這塊嵌入式有關的地方有了一些觀連1 f8 ?: a# i1 S; E5 c4 {0 d! k
6 b" {1 {- t5 z9 ~4 p' ~4 B( o
在這邊分享一些目前學習到的心得與面臨到的問題
- r1 H7 e3 d5 j; v& I( R. V( B
1 P5 d7 g, H2 ?' w& {8 V; R首先不論是C++或者是C語言都是可以轉成ARM code的
+ l: c3 X! r$ B' r/ Z2 M) N
2 b& n5 {7 q  b: _. Y喔 講轉就不專業了  專業的要說可以"compile成"ARM code....  這部分是後話  暫且不表
% C/ S0 ^9 `- V5 Z% ]& Q
8 T! {# Y+ U$ r8 @接下來的問題是  如果整個project裡面有一部分是C語言 另外一部分是arm code 這樣還可以compile嗎?
. g" k* X+ m% }6 a- J! X
% T, G3 s4 ?7 P# @) z" _* T' j答案也是可以的) f' |( u0 u! _$ b, t  g
9 l! z8 P$ k. V  Y$ }3 w
最後的問題是 C++ compile成了ARM code以後 我們怎麼去評估他的效能或者轉換的好不好呢?% G" r: @' N( z

& f) }! T+ k% @7 R( w$ [0 N( @其實也有一些軟體能夠替我們做這樣的評估
% E% @+ @) }+ w& B; L0 }& A1 v
% X4 n! u9 V# F9 h" N, R5 H" ]0 b* h- w- A6 a
ARM本身有提供一套要付費的軟體  以前叫ACD  現在叫RVDS  就有提供以上幾種功能. @7 M  d& r/ X0 W. r7 u

/ C0 }5 w& b- {( i" T比方armcc就是把C code給compile成arm code" ]; p  F1 [$ v5 ]
& A# Y" [  A7 u6 f6 U4 ^$ [9 v
或者armlink就是連結C code與ARM code的指令
/ N2 t5 [( J+ K! k# Z6 N
% x3 z# G$ C( W另外有一個模擬工具ARMulator (現在也在RVDS裡面) 可以幫忙分析哪個指令被呼叫最多次 執行最多次等等
2 o3 K. N# }# G8 _  l. B  k! z  `, h" S- d. Q
用來幫助我們修改ARM code的架構達到運算上的最高效能3 U; z9 m) z" M7 I# |) b

) ?0 Z6 l- ]6 C- ^; C9 O$ V2 g8 i
5 N  @. f, v# R. l- ?野人獻曝般的提供一點點小資訊  還真的是獻醜了  
5 n/ M7 ^+ ]8 d* w. H; L9 H
0 u0 L3 j' `- M/ I* e$ H' L+ I  c如果想要了解的朋友友一本書值得推薦 Arm system Developer's Guild( g/ e* ^# t0 }) I+ _- B  J
; e& s3 b" `) t7 s4 O& k
其中第五章第六章是精華  討論如何轉換最有效率的格式  第五章從C的角度出發  第六章從ARM的角度出發
& g- q8 z5 B: w) x0 ?
3 E7 P3 r2 Z  A# d4 K6 V  ~
" A* z' w2 n+ r9 J最後想要請教一個問題目前正困擾著我  由於我需要轉檔得C++跑的是visual studio, 有些自定義的格式像是 __fastcall 或者 __int8 __int329 p0 D! M& H# O7 K: H
, F! k4 A  g1 W( s) N
對於這樣的東西在用armcc compile的時候他會認不得然後回報錯誤1 A0 G/ ]' F/ Z, B( m
2 k; j6 l. v6 h# s. c
想請問大家如果我要去哪裡(網路上或電腦裡)找到有定義 __fastcall的lib file或者headfile讓我在compile的時候可以included進去?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂4 踩 分享分享
2#
發表於 2010-9-27 14:34:08 | 只看該作者
你所講的arm code應該是指arm的組語(組合語言); S' B) @0 @# y
不論是c或c++都能編譯成arm的code... @o@ c, c++也能編成i386的code...4 x8 I  N. ?. v3 |
9 M2 N/ }' ^6 h( g+ C5 s! B
我想你想說的是"有對應給arm用的c/c++ compiler工具可以使用" 可以讓你在異質的環境下(e.g. i386)去編譯出arm processor能跑的執行檔, 這叫cross compile, 這部份是大多數嵌入式發展會採用的模式# Z- r2 I2 |$ ]$ k7 \
; P9 B- u; X# J2 }$ J! r. v
在同一project部份c 部份組語的作法是為了performance/code size考量
! A" N( [. j. W  h* m9 ~, h
2 \- M3 p1 Y. Z/ h3 A: o4 Y你所講的ACD應該是指ADS
' ~. O/ I, D" G; w$ ]4 v; A; {$ [- Z6 M  t2 G
作性能分析的工具叫profiler, 一般軟體用的性能分析工具都是叫這名字1 f2 ^# s  E5 M! q. W( b; h+ f

+ H9 O4 V0 `4 |+ b* A( R: HARM原廠的tool不便宜, 也許你會想用GNU toolchain, 但兩者的語法及記憶體配置檔寫法有所差異
9 _  v1 E# c- O0 |$ S& x& ]6 Z. B
: j- v$ ?" `1 p+ a: y% n  _& J" V你的問題可能要去翻翻看windows中的__fastcall是怎樣定義的, (去翻標頭檔), 這些type都是用最基本的int去定出來的"給人看的", 翻到最底層, 就會通過去了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-6 11:35 PM , Processed in 0.103006 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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