怎样创建一个双核(arm,dsp)的工程 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
3 s9 U% A) U% T" {% X7 ~# }" b3 sdsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
+ ~/ \5 c3 I5 F% b5 |: ]3 \8 P* L: S* j& t) D( _, ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程$ W8 v# j7 z! i5 j1 _/ z! Q2 l+ ^% |( i
% o/ ~/ L' ?) K3 v9 D& w
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。
: l0 n4 {5 \9 i. h 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
6 `# s8 G) G: G( @9 I “清理”过的例程的源码如下:
+ `2 V6 Y0 ]4 C" s1 m
& W" P& a  D/ J. m2 ~├── dsp
( z$ Y- G: h4 F│   ├── Dsp.cfg
% i, w$ b: @2 d) B$ f  K, o% `│   ├── main_dsp.c5 N$ v% o6 a* e8 n& Z& C, k: P
│   ├── Server.c
& H% o" v( O8 d3 W& B! r. Z│   └── Server.h
, d! r3 g, H4 L- K* }2 Q├── host& u2 j3 ~( D# X
│   ├── App.c0 s$ N" v2 k0 _  W8 x9 Q
│   ├── App.h; @/ q, t# G, _8 h6 ?
│   └── main_host.c
2 t8 B9 y" e* k└── shared4 O# t# D, i" e4 r! }! S! v
   ├── config.bld3 J& L8 w2 E/ z
   └── SystemCfg.h
; I7 X  z- b* W; K! ^ 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。3 O5 s- C7 G' M& o( |

1 W2 g- ~% G, Q: h; Y; l5 v6 B8 [./makefile
. i! ]/ ?- h& ]6 d% T6 P9 b
/ J3 s* y# i: I% M 1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
; F  b! g4 h# c4 O% y: D 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_153 s3 ^) y, Z& Y0 g" E( H
3
: u- E! Z+ x# g( _7 J3 `; Z9 ]8 ] 4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi+ U# J/ W5 F+ H8 o
5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-& P6 @0 ~* w5 q% y0 j
6 & X# D9 r6 ~4 \3 N
7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_505 J/ A8 n9 b6 r, q2 Y/ T* \
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72
6 F( H7 e2 g# ]5 Y  P  S$ H 9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
- Y9 I7 K+ o8 w# ?10
) Z# P# Q; X( y6 k' s1 z11 export SYSLINK_INSTALL_DIR      \" i# h; j/ U! R, V7 `5 m
12        IPC_INSTALL_DIR          \
2 Q$ w2 D& F7 S8 L1 G4 s1 ]13        BIOS_INSTALL_DIR         \& }9 c' L1 b! @. R) `, H
14        XDC_INSTALL_DIR          \
: R2 ]5 H( U. M8 p% k15        CGT_C674_ELF_INSTALL_DIR \* `7 r! ^! M2 d; q9 J
16        CGT_ARM_PREFIX* x5 d, k, O9 z& s; T
17
  x/ |+ N8 J( A: }; |5 z18 all:* u6 o7 t- [) r8 c  b
19     make -C host all+ m, k0 a  u- h6 M$ ?
20     make -C dsp all; L4 }2 G" `. d2 a: I
21
! w/ I" I$ S# w22 clean::% m) ?5 ?3 Z0 f0 Y7 z% C/ K
23     make -C host clean
% a- o5 [0 e3 H24     make -C dsp clean
  s$ r  Y8 P9 F7 @2 ~( B./dsp/makefile: V. q1 U# L8 [( Y6 A

% i( J* G6 g7 D$ f' K 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件
6 D9 A5 H. c: R& H9 w2 v 2 objs = $(patsubst %.c,%.oe674,$(srcs))
  y! i, x( C) K; S, T1 s  B) t 3 libs = configuro/linker.cmd: {: T* Q/ r' x- M  c
4
! [3 A" Y% Y  ~! G1 t) S 5 all: configuro/linker.cmd( H$ `* N/ T6 z5 q
6     make server_dsp.xe674; I& n6 f2 z" {( b! ?7 H) D7 t0 t% N
7
/ w9 y4 [) |( K6 P! s/ t9 L 8 server_dsp.xe674: $(objs) $(libs)
' H7 n7 D  b2 M- t 9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)/ p. F' B* T7 a
10
' {! n# `, c* c% O+ a% G11 %.oe674: %.h
* q6 |% y7 U# {4 J/ _% [9 c12 %.oe674: %.c
2 T& r0 k( `' y8 P; }13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<* I& m* k/ z' X; D
14
9 V) C5 N7 @" Y15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld- q$ H! P/ _: ^1 `2 L
16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \4 P0 L& S, P$ Z# v8 Z4 K5 Q
17             xdc.tools.configuro -o configuro                        \
. i$ m$ o2 F* a& g; y1 k7 y( Q18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \
' q8 y/ Y+ X5 A; n2 q19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \
  ]! q* k! ^: T/ \- F; H/ y20             -r release Dsp.cfg- L$ Y* _, E2 y
21
& S$ w+ C8 J5 V* m: ]) P7 z22 clean::3 h0 r7 z  `" o" c% q5 w
23     rm -rf configuro *.oe674  *.map server_dsp.xe674
" Q6 D: @% U! F  i) P/ |' _24 9 \. x# Q6 \6 \. ~/ t
25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages
0 W/ U6 M$ L# y$ g4 U26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages, H" B- d6 O$ Q4 y: w
27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
2 D4 t- _. m8 ]28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages
  {. m+ A! Q5 F) @* D$ J- [# A29 - v  w- L: n9 p
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)" l9 d8 k1 M: ~1 Q8 @: w
31
9 P2 I4 e. a2 y32 CC = $(CGTOOLS)/bin/cl6x -c                        
  f  b3 Y& R( Z* v9 `* Z# S" [33 AR = $(CGTOOLS)/bin/ar6x rq
; {8 f* \% g* v! P3 ^34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi- e8 Z+ ~+ f: ]
35 ST = $(CGTOOLS)/bin/strip6x
5 B2 ~- q: y8 }+ f$ q, e36 ) k$ a# b6 d# R
37 CPPFLAGS =
- q8 n7 t8 _  ]1 G0 D" _38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)7 l' d" x- K0 t# B
39
& ?! I0 [5 ~$ t) \1 X6 |; P. d40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)
! ], O+ @) g, N& L1 b; U; Q- M* ?41 9 I. H# O3 N1 t# Z
42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     1 w  }0 y# ^1 {1 Q( f
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
/ X  i( G, t3 v./host/makefile
- h! O9 L: j( ^  M; b2 f& m7 ~" r; ]" b$ U7 L$ w
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件* c: w8 J# i* F8 z  @
2 objs = $(patsubst %.c,%.ov5T,$(srcs))
  O6 l$ m- l) N" k% N1 P 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug' p7 G* K' o+ B7 Z% c( [) Q$ c
4 7 G. `6 C$ i2 z# ~' M! V3 j
5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
/ g/ r7 B1 o  _# Z  G 6
2 O  g( U* D* }7 d1 | 7 all:
; L$ L' ?1 A3 R. `. |! R 8     $(MAKE) app_host
# \% _, C: T% s, y0 r 9 5 V8 p( t0 @0 d/ ~/ {; P- P
10 clean::, K2 @- U) I- @8 E: h& {
11     rm *.ov5T* *.map app_host
( r, |# y! v. j" h12 6 z3 j6 L% {3 M- d* a2 g9 c
13 app_host(objs) $(libs)4 T; X# l4 O0 T3 A# y# w* A
14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)) J7 a8 f2 y" C( a( }# l
15
6 k! B* R0 D; z7 D9 N) Z6 P6 A16 %.ov5T: %.c- p3 ^) ?" I: P9 ]0 P# v
17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<  \0 ?: H  x' x. P) O
18 , o: H3 h% Y$ ]$ k! R
19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t
0 ?8 K7 K# |. }- `. ~6 R20 AR = $(CGT_ARM_PREFIX)ar cr: O! U. \# K& b0 _2 M
21 LD = $(CGT_ARM_PREFIX)gcc4 u; S" }3 L) r' T
22   M; y& }) I4 S; t
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
! _) d# ^5 q$ \2 W7 t, i$ S24            -Dxdc_target_types__=gnu/targets/arm/std.h
6 b& g5 @( X- I25 & `0 b+ _& f8 Y$ ^3 j
26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径
/ w  H* q1 U$ Z' G27          -I $(SYSLINK_INSTALL_DIR)/packages                        \4 D2 w3 I, H) h+ [3 _7 j$ ?
28          -I $(BIOS_INSTALL_DIR)/packages                           \
* V4 z* j6 N$ h! o9 v29          -I $(IPC_INSTALL_DIR)/packages$ `' F( }  x5 }7 ^& f; `
30
8 ^2 p  w0 I0 b31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map
8 X) r. v4 c* {; n32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
  q. ?2 m: e6 C- U# d3 a$ ~! p  v" i  ]编译工程( t" u" d4 W3 w4 h

. R( p: ~; R: p7 @0 q4 J# c makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。; q' {6 r+ }% ?. O

& W6 G( V* ]) L7 b0 \/ |5 f运行工程
: L: }. V% j: ]7 J0 q9 w
2 }% R# u- f0 t; f( N& M' w* q0 X+ z" Q 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。8 r- g- b( m, A8 T- w
3 \3 u0 R8 U+ w9 Q2 d
1. insmod syslink.ko                    # 加载 syslink 内核模块
0 O/ v0 _( s" C  H, C6 A* f) v" V2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
0 Y8 B9 `# N/ \; B3. arm_app                              # 运行 ARM 端程序9 \6 v8 j% A- n
4. slaveloader shutdown DSP             # 停止 DSP 端程序
# c- H9 e! r9 U% G$ c6 w# ? sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。
" F8 [' `' f& X+ z2 B- \ 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。1 j- U% u9 q$ |: R

- E! p4 p. s& L* p 1 #!/bin/sh
' D* p; C6 s+ ^; n 2 ; S! V; e0 d8 y: Y- j( S0 A
3 set -x4 A0 h& V9 w9 P+ x& Z& T: q
4
+ T; ?5 V0 c( f% B 5 insmod syslink.ko
% m  o6 F! b! x- ^* W6 j 6
/ L1 U3 u/ {0 m8 o1 _6 D6 W 7 ./slaveloader startup DSP ../dsp/server_dsp.xe674
# T# Q) ~* i  A" m 8 % t: q* l  a1 @% a" A* E/ J! g
9 ../host/app_host DSP, [4 P& y0 R! X
10
6 s$ A: y% u- Z  G/ V( k7 e11 ./slaveloader shutdown DSP
) l2 v, G6 b% s' X  B# ^2 P3 w! \
7 {4 }3 I9 B5 o# o( u. c: ^
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:05
- e- S; [; u% T7 X7 h, c# k3 G建立工程
1 C" {2 d; Q; h3 c/ R. T2 V: W! S8 f7 C7 `( y! C2 b- b
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
, H% P  ^9 Q, X* j1 E9 v0 @4 G
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:05
3 S- @; g( T5 o建立工程6 k9 z9 k2 L" N% A/ G' Q

* n0 j' k9 _6 U 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

9 m1 J, {; U$ wslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2101

积分

创龙

Rank: 8Rank: 8

积分
2101
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40: K6 f/ {" R- e& _& @9 ]3 o
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?

: s: m# t- B+ V) V; Rdsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-4 03:00 , Processed in 0.047465 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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