怎样创建一个双核(arm,dsp)的工程 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8572|回复: 6
打印 上一主题 下一主题

怎样创建一个双核(arm,dsp)的工程

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
9 s5 t6 B( u6 O6 q; |dsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。' N' J. h" B: ~& K+ W8 n: a5 _

) t& E( [! h6 k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
推荐
 楼主| 发表于 2014-9-22 09:33:09 | 只看该作者
Dsp.cfg,  config.bld,SystemCfg.h这三个文件感觉不太好修改。能给推荐一下怎样编写这三个文件吗?6 u2 G9 r1 Y7 I, {  A- h
回复 支持 1 反对 0

使用道具 举报

0

主题

113

帖子

2162

积分

创龙

Rank: 8Rank: 8

积分
2162
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40/ j0 N0 u+ q8 d( O! V) `$ W
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
, }) {. P3 h6 u! S( {
dsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
6#
发表于 2016-6-16 08:49:17 | 只看该作者
执行 make 编译
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
5#
发表于 2016-6-15 16:40:40 | 只看该作者
tenny 发表于 2014-9-19 18:05
% W7 `* p; K* j0 d; {建立工程
8 }, u) }% e  _0 e8 v5 P: X
3 w' ]: @. @, I' g( {# c4 \1 W 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

: c+ o* V& a4 {+ R$ Pslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:05, j( y, F8 P- A, t, o; ~
建立工程: u. Z% }5 _: E: `9 u
/ _; K2 i+ [" G
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

7 I6 x8 {- x/ Q+ E9 Y& W0 yslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程; u  E$ S" O+ c# J3 w% I$ d# I
1 R1 K% h. T& F- V+ K
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。
( Q$ K/ F; D( i! H2 s, [ 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。! k( p' l% n9 N% i" j& t
 “清理”过的例程的源码如下:9 F7 [/ y8 H" N6 W
* j+ q6 s% F" b" `
├── dsp4 t2 S) L) \, r9 L: s" s/ l
│   ├── Dsp.cfg6 M8 K( N, O. w! U, j1 \. T7 D
│   ├── main_dsp.c
' ~$ h( `+ I- i7 x│   ├── Server.c2 F! M9 m( E' l% O
│   └── Server.h
; q* F: p1 X/ O" c: ]├── host) O2 C3 R" s, v1 H& Y  ?
│   ├── App.c
1 z9 n' ~4 V3 N! C5 u│   ├── App.h- @, L% ?3 r2 R! g4 O
│   └── main_host.c: d1 S3 m% e0 I: J4 L, i
└── shared
+ F5 _5 Q; ~$ e# }   ├── config.bld
* ?* f% k5 a& t1 r% A: [+ E   └── SystemCfg.h
: ~/ [: b. Y1 a 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。* s0 W# c; n; N, h! x; V% G
, ^& n  T2 o. s4 \- ]/ O
./makefile: O( w6 d4 z4 T0 ^
+ e5 J% w, n4 A) L+ ~' x. x9 o
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05$ `# L# F$ @8 g
2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15; ~6 i. i) r0 U! ]5 {* T
3 , B5 |. _4 y+ B
4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi  |% _7 c4 ^+ P$ r
5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-! D, e0 w6 M7 C
6 8 p& O6 E& G5 s7 T$ ?9 a
7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50( S. O$ x. F: {. @$ c: o  O8 i6 N
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_723 O9 W1 S6 p! V$ _% S& t- _
9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
) [3 m3 m- z! M9 d$ I8 Y10
7 |. r% T0 R- ?7 ~11 export SYSLINK_INSTALL_DIR      \
6 v  O* M: w8 p6 {" U, Y12        IPC_INSTALL_DIR          \
- f" X9 S; O3 o13        BIOS_INSTALL_DIR         \  l3 ?8 g9 M2 `$ n- _! j( L5 o' L
14        XDC_INSTALL_DIR          \
9 X6 n  ?$ n- m! h4 {' y( R15        CGT_C674_ELF_INSTALL_DIR \
' H0 c% _9 m2 g, n$ a16        CGT_ARM_PREFIX4 m, i, u7 e% L
17 , g- o- d( |7 S8 P  C" X
18 all:( R0 N- j: I$ h* g. \- Y1 F# p  q& E- |
19     make -C host all8 s  ?4 J0 ?9 e# U0 h
20     make -C dsp all2 p- t' m" T* }# `. }8 U( K
21 : ~. ]. f. l% W4 r: H3 o8 {. n: _
22 clean::
- x! O& S  X/ D$ V  |% j, s( T23     make -C host clean
; @1 m. U9 F! ]0 V( x24     make -C dsp clean
- z$ A* B7 q3 L9 F  N. j/ i5 I./dsp/makefile
, K0 F( a5 O0 F5 S" @; K* L  S2 w2 y( z& m8 g0 i
1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件( n7 v& J2 d" S& P' a  u
2 objs = $(patsubst %.c,%.oe674,$(srcs))
. c. w, \, s3 P, O8 D5 {6 y+ Y 3 libs = configuro/linker.cmd
! ]4 K' J, Z, c: P8 X" k 4
5 x2 y. ]; J# H' C 5 all: configuro/linker.cmd% p3 \9 P, V5 f4 B4 r1 I& ?( C- t
6     make server_dsp.xe674
4 K$ t  k- L6 z 7 + M. @, F, }; _  J4 l
8 server_dsp.xe674: $(objs) $(libs)
% N4 W- b* r4 E, P0 p( q4 c( | 9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
4 t6 y6 F5 E) Q; u: l9 x( y10
5 l7 u3 v9 H. J; d7 Y  _2 h11 %.oe674: %.h
# A0 d. c( L# F; E12 %.oe674: %.c/ ?: T5 @8 x- b# N. s. Z+ v$ E
13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
1 h: B( q  A: [4 Z0 h14 3 u1 }0 Q; G) z7 P
15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
6 s+ E' @$ d3 A& ~  }7 p3 d# n2 }16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
4 I$ Z" t$ f. d! m17             xdc.tools.configuro -o configuro                        \
, F( u- V9 R+ G, y" n18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \
% o5 G0 M& ]8 e" q19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \# y4 t7 N3 w7 w/ U: M
20             -r release Dsp.cfg; A( E1 \6 ^: @& D! ?  x  g, P8 f
21 . L5 y+ E8 B. O4 ^
22 clean::/ w+ }1 B, m1 S2 a+ q
23     rm -rf configuro *.oe674  *.map server_dsp.xe674
) N- m3 g- y; E24 . n! w0 @, z, ?# h. x
25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages% Q2 [: Q* d$ ]
26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages* W* P+ z9 U1 B& }8 N8 n7 o
27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
! o& u" |6 M7 W6 C  R28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages
& T9 X9 y0 t8 C( z: D3 T- h6 [5 T29 2 ]! S3 ~& b# I, u
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)) r# K2 E. N. L( e8 v5 ]! K' }
31 ( j, o9 h( @, T2 ]& O: a# }3 v  @
32 CC = $(CGTOOLS)/bin/cl6x -c                         ; P$ K0 Y/ v7 o
33 AR = $(CGTOOLS)/bin/ar6x rq
0 y, Z) W$ a' q6 q6 r34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi9 j: _( n4 Y% z, P0 l
35 ST = $(CGTOOLS)/bin/strip6x6 W& t! j7 N, P7 x+ c  @8 ^5 T; i
36
  w/ p3 @4 ~9 O" ]- W7 s37 CPPFLAGS =: t$ V- U7 @' ?. }4 x% q5 g
38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)
& I) z: Z: i& V+ T* r4 B39 9 Q4 p1 ~& I& c3 `
40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)
% t! U$ ?; x2 b9 k. t. ]2 E41
! {  @' c2 h, M- h42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     9 G# c1 b+ t) Z
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序' e- j0 q  P- i$ C$ @9 q
./host/makefile, h0 p4 [4 x# A* m8 H

" C( ?, i, t6 ^, R0 b# U 1 srcs = main_host.c App.c                       # 在此加入 c 代码文件
: H. P8 _. o, C1 f6 l% W8 ^9 l. `4 T 2 objs = $(patsubst %.c,%.ov5T,$(srcs))
( C* d6 n% d& f0 B4 f 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug$ }! T* U' i) X  ^+ ~$ }
4
0 x% u% a6 t/ s# Z6 Y% S 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))/ Y! c7 Z# e. ]0 k7 `& H# W
6 * n0 F9 y/ b; G# i  ^5 i; u
7 all:
% ], ]9 O% f& n( t% b0 ~$ v9 q 8     $(MAKE) app_host
% _1 _/ R8 Y$ J, ^/ F6 M6 g& Y 9
" H1 i& n2 A1 M6 G' q& l. W10 clean::
4 h  m* c! l9 g8 ?3 c- B11     rm *.ov5T* *.map app_host( R  B$ R$ V4 b+ Z$ C
12
6 j5 [1 a9 \1 G0 I13 app_host(objs) $(libs)
* q4 v4 `5 N* y+ ~' q9 `7 V1 I14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
2 ~/ |; c$ j: R" I15
& S/ _* y7 p$ z; L16 %.ov5T: %.c+ T1 a/ q- _$ i9 D7 n& k
17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<
( H; \' F/ x+ f' S$ a" i5 L: Q0 |18
+ V! P+ c( p: V& R5 V, e9 {2 A19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t
: _$ Q: e, ?; p# M; n% j' r) e20 AR = $(CGT_ARM_PREFIX)ar cr
0 z/ \5 u' u0 t; |" A- q21 LD = $(CGT_ARM_PREFIX)gcc/ F( f$ M; s& z& F
22 ; T6 w7 d: U/ u+ c
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \9 S6 U$ k. r) [. G
24            -Dxdc_target_types__=gnu/targets/arm/std.h
2 L6 s* u+ ^7 f$ L2 T25
! U! p- o1 Q  T. s: A% L26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径! ?1 E, a5 [$ [( @- }7 v& u
27          -I $(SYSLINK_INSTALL_DIR)/packages                        \8 Z. C+ P2 D8 j+ h1 T' e
28          -I $(BIOS_INSTALL_DIR)/packages                           \
: U! }. Z/ |1 g4 m29          -I $(IPC_INSTALL_DIR)/packages, \8 d' j6 v) z: w& ^
30 " d4 S6 y7 C' q  N9 |
31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map- m& z. r1 a% z: T9 w
32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
/ m( I& |  I2 @( {编译工程
6 ?3 J' n3 d6 N; `* `+ |$ a7 C
' p0 ^% a# Z0 y- h8 S1 l% B( n makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。* c4 A; Y* ~' D' d7 Y9 Q

8 M1 t; c$ Q; a, k运行工程
: K8 h+ j; N7 G6 {* }6 _; }$ @/ w. r  ]" b' _8 Y# B: F
 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。
. n8 W; ]7 @/ X- Q! B, _
, |) c: n( ~* e- t1. insmod syslink.ko                    # 加载 syslink 内核模块' T# L( H0 F+ f4 P+ n( H: t
2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
  j/ v  c3 l' u) H3. arm_app                              # 运行 ARM 端程序5 X, M: N7 Z! w' y9 A
4. slaveloader shutdown DSP             # 停止 DSP 端程序
( `* d- j! ]6 N2 ~+ F, r7 \ sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。
( u2 }$ Q% e( d% s 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
7 s- [* ], @4 y5 p6 y% G3 G" g& D5 ^, |! D, @6 Z5 e: M
1 #!/bin/sh
6 ^/ c% z$ Y  m/ m3 [# W/ d0 W8 B7 w 2
( M: ?+ w" w# t. J2 v6 _ 3 set -x
3 @) o( }" {$ Y4 X 4 " J- Q3 A; q$ a- Q; l, S- W$ s. g
5 insmod syslink.ko
  W# e) K9 S$ Y) m" w* M% G 6 ) e" p& a/ @8 ~8 o3 S
7 ./slaveloader startup DSP ../dsp/server_dsp.xe674
" |* F- p- S' E0 c' l, a# R& _& k 8 4 N/ ]- I" u5 _. k& {1 ~0 A, w0 v7 l
9 ../host/app_host DSP
' B; x. e+ p1 ~10
/ F  p4 f/ I" S6 |% v11 ./slaveloader shutdown DSP! h' k* w) B4 L8 p4 \! \
( u$ E  w6 K" d
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

点击跳转“创龙科技服务通”

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2026-1-30 04:09 , Processed in 0.044840 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表