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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,+ Y8 ?0 k" `7 p  J4 Q7 `; [
dsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。( U2 [8 A8 ?3 e: A& P6 I6 ]
: W, D5 g; |* K. M. ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
推荐
 楼主| 发表于 2014-9-22 09:33:09 | 只看该作者
Dsp.cfg,  config.bld,SystemCfg.h这三个文件感觉不太好修改。能给推荐一下怎样编写这三个文件吗?2 E8 j3 n/ c: T# v( D  s) e
回复 支持 1 反对 0

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程
/ @9 k8 t5 _1 I2 x6 {4 g6 V/ b8 [2 ^7 \, t' O+ _
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。/ ~4 o' a$ n: ?* S8 i" {' f# g
 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
  Y1 @# A# n  X “清理”过的例程的源码如下:
3 F" g& \  K1 x$ d9 p
2 x, Y# ?& \6 C# p4 V; M; ]% M* }: O├── dsp3 U4 ~; v4 ?# }$ F  C
│   ├── Dsp.cfg( Z' L7 [* i$ |7 r. s2 o1 N+ L
│   ├── main_dsp.c
8 M7 t8 C! |" r8 t8 E' h( }" U│   ├── Server.c1 J5 R- n& L, Y; m" l
│   └── Server.h
! N) h. x, A9 I- J! K2 j# {1 p7 Y├── host& @7 f1 L) ]% y$ ?" @# r% {) r) q# I
│   ├── App.c
, V. Y: p6 p+ A' J- w8 p3 [│   ├── App.h
$ Q8 i3 R" a6 ^7 h# m│   └── main_host.c1 `! c% @4 t3 _
└── shared
7 x. j! A1 ]: x: z1 b' J) X& r$ M+ I   ├── config.bld
- H( t, f- I& S7 Y9 L. \   └── SystemCfg.h6 l! Q6 o9 h5 S  E( e
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。
+ n7 a1 M8 O) P+ O  A1 j2 Q6 L
/ q& r- H; z3 r/ ~/ g( b' c./makefile& x8 Q* a9 c" c$ G) @  ~7 o! O+ g

: h8 b7 \/ w' A" r. g" P/ J- w# u 1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_056 ^; T' v: c& W( ~$ O
2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_151 }- B4 o- }4 T5 N) z9 Z8 T. ~
3
' p* b8 m2 i9 W7 R3 x0 u/ w3 m: O 4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi5 o9 S* y  ^# @
5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-
0 V8 c" r$ N( C 6
( H$ e5 T* M8 \5 ~. s 7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_509 u7 g) P9 n# {1 r3 z0 p
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72; d$ N' T1 ?7 _& e; w
9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
0 d6 Q( g9 n  V10
3 g) p2 W/ W0 s! x) c2 d3 g. d11 export SYSLINK_INSTALL_DIR      \$ m; v" q) {# `) B, A- n
12        IPC_INSTALL_DIR          \- f9 r. F2 i. F( |6 [3 J
13        BIOS_INSTALL_DIR         \; r" t$ M. }$ w% T; u9 ~
14        XDC_INSTALL_DIR          \
6 v9 f, Z% K* f( D: b9 m' y: w15        CGT_C674_ELF_INSTALL_DIR \2 p# A* Y4 f8 m, K$ Z! Y
16        CGT_ARM_PREFIX
! [( G3 p% I( U17
/ l' x4 ]% E( f6 y& k& I18 all:  z6 }  v1 _% \6 L$ _0 t
19     make -C host all
8 o! X# h* b/ f' R$ J20     make -C dsp all
) v  w$ c4 n1 L3 w21
4 B: v8 }" T* f# q  P8 Q; y22 clean::
& C& h8 Z- ~" m. l# Z23     make -C host clean
5 B) t7 l, a% Z% T" L24     make -C dsp clean
) S1 i! c# r# v* o( h./dsp/makefile
0 Z& \) e, A1 B5 y! ]# A: g
9 s+ J2 C" |- Q0 S. r$ d 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件
& x5 d7 ~3 m! @* _4 e9 q% X 2 objs = $(patsubst %.c,%.oe674,$(srcs))
7 M$ H2 X: p$ ?! B+ Y 3 libs = configuro/linker.cmd
9 ~2 X( v$ k+ e7 d 4 3 Z7 j& n$ N  G! L
5 all: configuro/linker.cmd6 J6 k" u8 m' H7 S3 |/ \
6     make server_dsp.xe674. R- _5 K/ Z( u1 E! h' @: k3 M
7 % b8 W) N" G& ]' S2 X( Y- v
8 server_dsp.xe674: $(objs) $(libs)1 c. ^7 y4 y9 C# i
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
* e. _$ l8 O3 t4 Y8 E9 \10 ! U: B4 F, T7 ~5 ~1 m* S
11 %.oe674: %.h
8 H& W0 O9 @  E  D: F! m5 s12 %.oe674: %.c
3 `/ i7 a3 N6 ?# L1 _2 Z4 h13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<, p9 v: h( ?7 J7 N8 A% j. d
14 2 n% {- n( `& \4 H: h. J
15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld* N4 w) ]/ O/ a" }. b! [; z- ]
16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
% Y( ^0 R6 l& k0 o- x, Y3 A1 k) q17             xdc.tools.configuro -o configuro                        \
  o- `9 x& G4 N) }' ?: F# ?- R18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \
1 q4 Z: d$ S& t2 \9 m+ @19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \
! Q0 U4 {$ H* V20             -r release Dsp.cfg$ o- G% V$ n  L( N
21
$ S  q1 P- x' J3 x+ |22 clean::$ P. u* r: I2 x8 b! |' ]8 L% D' X
23     rm -rf configuro *.oe674  *.map server_dsp.xe674
" y& L" O' [1 k! d' T24   C/ F  G7 p+ e; f$ G5 E
25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages( Z9 i4 D5 `' r/ V! y
26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages
7 u' R7 p% J( b: W; R/ x27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages+ @5 o, p4 q' C( F1 `4 a7 S
28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages; a( Z4 Y) z7 r3 ~: j) e
29
) c4 f& H* p$ d% u30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)/ [1 |4 o* v5 V
31
; D/ w7 ~5 y3 U* `; Q( a8 l8 O32 CC = $(CGTOOLS)/bin/cl6x -c                         5 r9 P- O7 a% i6 O7 d0 u# t
33 AR = $(CGTOOLS)/bin/ar6x rq9 _- ]4 _$ p0 C/ b8 l: ?( X/ G
34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi* \0 u5 E  j7 o$ I$ Z5 h+ A/ ]
35 ST = $(CGTOOLS)/bin/strip6x& P. q6 T% U) T1 b, w* _- B) }9 _
36 + G, }2 e$ F5 |9 i1 G9 V1 V6 i
37 CPPFLAGS =8 d9 ~8 l) o2 t" B
38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)
% [* G/ }1 ^: P, j" E/ L# J39 ! N) h) x( M) J% e6 }9 J5 E
40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)5 T% M! S6 D: L8 W
41
; A6 |) @7 w  u# Q! v+ }9 _42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     8 f7 r7 l4 y  p" q! S# K
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序/ \' ^9 E) n. l
./host/makefile5 C' I4 p* m) ~9 V$ u2 S1 q
( m& u& Z$ p' c5 w
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件0 u9 \6 H  h9 o& {& t
2 objs = $(patsubst %.c,%.ov5T,$(srcs)), [5 a6 B; W% d8 o, M
3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug
7 a- r: ^! a& l0 g3 K3 B& F, B 4
0 k0 @9 x* I  O4 y0 {9 i5 | 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))5 G; ^1 L* W+ b4 ^
6
3 [, K( }5 r7 e9 \  p& Z4 K 7 all:' I8 m! w. B5 S( C: {& a
8     $(MAKE) app_host: n7 f1 y, i" }7 @( x0 Y
9 $ z/ R7 M3 ~7 u1 x: Z* d, S$ |
10 clean::
# s0 f: H& m7 x  S% T4 X+ I11     rm *.ov5T* *.map app_host
, r3 e8 t& c3 |6 H5 Z4 ]/ l- H12
/ T3 q" O0 \7 j* n: ~5 B; ^13 app_host(objs) $(libs). [: ~: [& x- k& e
14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
5 @! N5 q. T- i2 e' s* {15 8 o$ {" g) K  W' R) c, Y
16 %.ov5T: %.c+ f4 R) B' Y  x/ l) e
17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<+ R4 O" i0 z% @+ `9 }/ s
18
2 |! r& o  H5 o4 B19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t
! W( i- p% x, a! Y4 v" ^/ o. I- e20 AR = $(CGT_ARM_PREFIX)ar cr+ K% z/ w2 [/ S
21 LD = $(CGT_ARM_PREFIX)gcc# {8 `  N% [" G; U( M
22
4 n4 r( I/ q+ }/ @) Q7 x" J; y9 h23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \( {& s3 l8 N' W' I/ K
24            -Dxdc_target_types__=gnu/targets/arm/std.h
$ z7 ^% {" L. B9 j+ D25 / R1 Z+ }' S: Y( y
26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径# B: }2 y1 ~6 o3 V% |3 R
27          -I $(SYSLINK_INSTALL_DIR)/packages                        \
% v# s4 t# r- J4 u28          -I $(BIOS_INSTALL_DIR)/packages                           \
0 q& ~# R1 |; r; G& Y* X29          -I $(IPC_INSTALL_DIR)/packages$ X# V, J3 X1 ^- \
30
1 a/ |5 U( _0 W31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map
! W# R$ i- }6 s6 X& a32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
3 z2 x8 B2 K7 M; B/ r编译工程, e7 H  r) \; L- g

( K1 g9 v9 v# x1 j. h( q makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。0 ^# _, J& @8 D" y

$ d# A0 P1 l* B; k& o运行工程- ]3 [7 Q9 R/ N5 r0 C6 K
+ W& q! A/ R7 P, h. ~7 L  b( ?- q
 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。
% m/ ^7 N5 y, V. v; A. q( L
7 n( v: n4 l$ u2 v3 }  U1. insmod syslink.ko                    # 加载 syslink 内核模块
% b; C" |* ]0 ^) y0 S6 g2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
. S" \2 F7 T; d3. arm_app                              # 运行 ARM 端程序
. u7 G/ G" q. ?* q4. slaveloader shutdown DSP             # 停止 DSP 端程序
0 I2 R! f# s6 f8 Z7 U5 p sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。 * y* S" ]: u1 C9 f0 c
 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。: Y, ?6 ^1 U) e6 t+ E4 B
; |6 U$ D. \  z; d+ {8 r" {  {( r
1 #!/bin/sh
  s1 J5 g1 |5 E+ K" y7 K 2
" ^0 u1 g! b7 M7 L& M5 s! x 3 set -x5 k- \3 X3 E! Y1 [( n# Y1 T% N! Y
4 2 f1 `$ @6 R$ J7 r$ g
5 insmod syslink.ko3 C5 `0 _+ H. N: b+ @
6
  z/ ]+ |: V- E6 N& m7 v 7 ./slaveloader startup DSP ../dsp/server_dsp.xe6744 O/ }! L# V4 }+ ~% t8 r, @
8
) c1 w$ ]" Y: |' M5 a, ` 9 ../host/app_host DSP
& g  S+ J: z! Z+ i0 X10 " F) q+ W- L, P+ n/ |
11 ./slaveloader shutdown DSP( @% |# T# n9 H# I# x

0 k: v' _1 \" `- Q+ o
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:05
5 j2 ?6 C7 V5 p! V0 z  _. \建立工程* E4 n* i# \7 d1 a' f2 q" e

9 i" S/ j0 x: C0 n6 [ 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

# s4 _, K0 s4 ^slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
5#
发表于 2016-6-15 16:40:40 | 只看该作者
tenny 发表于 2014-9-19 18:057 h3 t6 d+ c8 p
建立工程
# d7 U! o4 [1 \' A- w6 w' U  F5 `  x* S- A6 R# A" x# a
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

# G, x' L3 U/ G. N6 bslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2166

积分

创龙

Rank: 8Rank: 8

积分
2166
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40- M4 o" ]. ]& k5 U
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?

, u% u+ d2 o) g6 S& {, ]5 v6 C! o5 Ndsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-2 06:16 , Processed in 0.052745 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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