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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
: Q* \( @/ `0 M" g+ sdsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
( z% ^% Q4 v& r' @+ S5 z
$ t! W( |2 G! P$ q1 W% ^: O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
推荐
 楼主| 发表于 2014-9-22 09:33:09 | 只看该作者
Dsp.cfg,  config.bld,SystemCfg.h这三个文件感觉不太好修改。能给推荐一下怎样编写这三个文件吗?
) v) ~! \  @; f5 S. e3 W1 ]& a1 p
回复 支持 1 反对 0

使用道具 举报

0

主题

113

帖子

2070

积分

创龙

Rank: 8Rank: 8

积分
2070
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40- s  j) B: b) M6 m) Z( Y3 }/ g
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?

# K+ J& @; U. W) v/ udsp_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
8 ~/ X. |) E* g  C6 J9 g建立工程
6 n; X% d! O! b6 Y) J
1 K; ^/ o; Y& Q. A1 D8 x9 P9 l 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

; M+ c% U& g) Islaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:058 a8 U, N0 A- F. Z
建立工程  ]1 \8 t. Q1 v5 B) ~% M7 F! \
$ [6 q* K5 m0 s# X% z
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

8 T- e% C' y- r3 N& G7 w+ ~. P" @slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程* d4 v# @: C+ `2 h; ^
6 m; W9 P$ x/ m  Y! Z$ D8 Y0 |
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。3 k7 t* |% C, h2 ]# ?  w
 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
, D0 x) _2 h7 ?) O9 @& ]- F  B “清理”过的例程的源码如下:- P" V/ A; v& D
9 b( o6 H' N7 U
├── dsp% F1 r) ]/ L6 q: U, n
│   ├── Dsp.cfg
8 f/ n& @1 v* ^+ o& q4 P) [│   ├── main_dsp.c& ]5 h/ V5 l' \
│   ├── Server.c4 l* w$ N) i- c1 E
│   └── Server.h
. n: t; q/ p- a3 }: r+ @├── host
6 t$ [' e( e  Y8 @│   ├── App.c3 I- F8 w, X" C" U. j
│   ├── App.h
9 H5 `$ c  p. h1 i6 }. K│   └── main_host.c
8 |/ F/ Q& g8 \2 d' h( b& `└── shared
3 n6 d& w& O$ l  l/ g   ├── config.bld
* F9 _( |- c6 O4 z& Z8 t1 t/ @   └── SystemCfg.h5 X" Y' ~/ k4 G' V3 @
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。
, y* s; c, B! [; K% X& v9 d! E2 S  X2 x+ l, }1 s5 i, j
./makefile
) m. S" P; v$ c  J' y; V% D; p7 r) n; b3 J: @4 v
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05+ I+ J- t( W* H- [4 k1 O
2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15; [& d( ~4 `9 r
3 $ [) u0 S0 r( x
4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi4 O( |9 a1 {3 _' c2 D( ~
5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-
# h" B& p$ w/ w 6 ( h" k. N5 \" @/ G1 t( D' h8 R
7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50
# `( m8 @/ L6 h4 G( X, K 8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72
0 D$ B, F3 P/ z3 j4 H 9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4) L  g1 g$ v9 A8 O! O7 m7 o: |" y$ ~" p
10
- K* V  e( R, h8 F  M6 n6 G7 M" m6 f11 export SYSLINK_INSTALL_DIR      \
/ M+ j1 ~% K6 Q' _' u  l8 L$ B6 f12        IPC_INSTALL_DIR          \
5 b! G6 z2 @( {6 a! D% O2 o' G13        BIOS_INSTALL_DIR         \9 a. L( }- `5 S( q- A9 v$ q3 ?- N
14        XDC_INSTALL_DIR          \
8 m' B7 i4 |; P$ Z- }) `4 q8 {- l2 w15        CGT_C674_ELF_INSTALL_DIR \
* y) ]& c$ W9 x5 F0 h" Z16        CGT_ARM_PREFIX8 [* L1 K, D* m) s9 t3 Y
17
$ G: ?* V) q+ q4 R18 all:
- T- X2 X( n. Y# ]! E6 R19     make -C host all
$ q* t2 p- |% O# j  x- T5 e20     make -C dsp all2 t9 x% F; V7 j5 g% u2 W9 J
21   x; y7 ?' q! F2 J7 [+ E: m
22 clean::, p3 z% i8 i0 R- c
23     make -C host clean
$ D! Z" I( }6 F- y% W$ y24     make -C dsp clean
) Z* H1 S' p9 O+ K./dsp/makefile
* x; f! o1 [3 M' `! i' k' t4 T( Y
- ]: v7 f. F, J$ J& X 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件6 X- h5 @- C4 W, d
2 objs = $(patsubst %.c,%.oe674,$(srcs))) R6 }) j* Z5 @7 R3 O0 @
3 libs = configuro/linker.cmd
/ n/ j- B  L1 t" F$ i 4 4 z& b; ^8 R0 \" W$ T& F4 q
5 all: configuro/linker.cmd& l! |. W# J% M4 y. r1 l# b/ u
6     make server_dsp.xe674* z8 Q/ K1 J  y0 `9 Y& p. D
7
  J* n/ {+ B, I9 y3 `$ R' s& I 8 server_dsp.xe674: $(objs) $(libs)
  g' X& s3 A& A' J" }9 o 9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
6 A) V+ f  _) _, K10
% s, I" M' ?8 j2 }  ]11 %.oe674: %.h
( Z. m" j  d4 i3 E; w+ R0 `12 %.oe674: %.c
  P3 d/ R' C* ^) g% P13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
+ ]  ]& f5 {6 j14
3 k' r0 ^3 m% o6 h2 c15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
- |/ `. x7 i9 q8 R+ k$ {0 i# E) S16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \! u1 z! }& ~! a" G9 R3 ]) |
17             xdc.tools.configuro -o configuro                        \
" W8 c# M2 B- I( C/ |% @+ R5 C" b18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \
4 p5 T1 P% z. G6 G% D19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \+ A$ ]- G' e+ G( ]% C
20             -r release Dsp.cfg
) i9 ?  b: b& m- p# z3 ?21 3 ]! W7 p) ~& t
22 clean::( A$ Y$ B8 `& _, @# S
23     rm -rf configuro *.oe674  *.map server_dsp.xe6749 I! R' H! m6 x. p9 x" y2 L" @
24
& N, O2 m+ \  l# y25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages
% a9 K6 L9 J+ d# }0 V1 o. v26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages
- m5 K! ~; d1 Y, v$ n4 x27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
7 d8 k9 @4 i( H5 m$ n$ A28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages4 e  l6 e) z% \$ j
29
9 T. U2 ]8 b2 k/ g% [( A& v30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)" T- j! t) ~4 a  k5 k$ A: o$ f' X. }
31 # V9 j! L) n- A# V8 q8 `
32 CC = $(CGTOOLS)/bin/cl6x -c                         - g! J7 S1 B# h5 E  w3 J
33 AR = $(CGTOOLS)/bin/ar6x rq
9 T+ e) h; H& ~4 j; y34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi
1 [* h- B+ J' Q( q- g35 ST = $(CGTOOLS)/bin/strip6x
, l( z: `) e+ R: r: A/ r# k3 e6 c! j36 * R) c' }% N& G8 T
37 CPPFLAGS =
( D& C2 Z* B/ m. x$ s- ^; g1 V38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)6 }$ m8 o9 E/ S! J  _9 K
39
: y# O. D* O- b3 c* U. d! [40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)% G& K. \+ F$ F2 [
41
, R5 y: {9 D- V. U; S6 i4 f42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     # g6 d# Y, b! S) F3 P) b" @
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
3 G3 `0 T7 m" e6 c- j  o./host/makefile
$ [$ `3 U- N- A" c3 `3 w6 E) e! E: L* N' H/ |1 \
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件8 ?% i# C# |9 c
2 objs = $(patsubst %.c,%.ov5T,$(srcs)), W( M% m3 J" B5 ]& _
3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug. B  r, |) G3 x7 t( K' [2 I& l4 k
4
( S0 \- n! I6 M2 a" @: k 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
4 w& B) h8 v3 V 6
6 z* n8 L2 K/ L6 \ 7 all:- x" i1 ~& o& i( U. g
8     $(MAKE) app_host) Q* h% b1 _4 h: b) H1 x
9 : g" N  X. e2 F8 @+ E# w# T3 Z
10 clean::7 [6 H' F5 C1 x+ k, r$ Z7 m+ c$ V, V
11     rm *.ov5T* *.map app_host# ?4 z. T+ N, C4 z: q
12
$ t9 G) `! t. M4 B' @13 app_host(objs) $(libs)
3 \7 U0 `1 E0 I& S: \( Z14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS). V" z. d( M  o7 n2 s+ _
15
$ x5 @& W% H6 `, Y16 %.ov5T: %.c6 }  E4 `# Q; r; T2 y+ _( s
17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<1 I4 u( ~+ k; V5 L( D3 `
18 6 ?% n. l' z4 J" O5 l
19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t
1 A; C8 G5 z& V% M20 AR = $(CGT_ARM_PREFIX)ar cr
7 t: F7 I' l5 a' I21 LD = $(CGT_ARM_PREFIX)gcc) ~; a$ j- y- M0 h5 O( P  j* s
22
, R7 Y! i$ Q9 g8 e- T6 r23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
2 O1 ~$ [2 R4 B3 q; u24            -Dxdc_target_types__=gnu/targets/arm/std.h
0 q9 h. Y% ~' Z! x$ a. T1 L0 E25
: j' A$ x. z& ^4 H26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径. @/ ]8 M, _1 N0 Z
27          -I $(SYSLINK_INSTALL_DIR)/packages                        \
/ h/ M  y; E! f28          -I $(BIOS_INSTALL_DIR)/packages                           \, q. R2 S$ ]$ _. q: P0 ?# C. z
29          -I $(IPC_INSTALL_DIR)/packages
9 L7 ]2 G: T$ z5 {2 N8 I. ^30
0 `$ U* }( S  Q. `# {4 L31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map+ }, y6 F- K6 N2 u- B
32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
: ~( S2 a& z" N0 f& F编译工程# M( N) G0 u4 j

' X9 R, P$ s4 Y- n makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。# J6 H6 U% H7 L7 K: }+ E/ @0 Z, K

! Y9 B3 u5 Z3 R' a7 h/ h运行工程
. h  G8 [4 ~+ [  |$ x+ p9 |; [3 p7 S  ?5 J. J; F4 J- b4 M
 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。, A3 _9 l' g4 I# ?$ L
: P; N3 Y. Q; v: i7 B$ l8 j
1. insmod syslink.ko                    # 加载 syslink 内核模块3 L7 k- Q# l9 l# u; k
2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
: z+ q) v9 Z$ Q3 [$ \. T$ {  G3. arm_app                              # 运行 ARM 端程序
- I* ~6 V8 A5 Z) m  f# Q4. slaveloader shutdown DSP             # 停止 DSP 端程序
  K, e) B9 q% k sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。 5 `6 ^1 ~! C4 a# }- Z$ }
 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
5 Z- n. H9 l: D/ t6 {% T% Y3 ^3 V* c
1 #!/bin/sh
; l7 L1 u5 }9 J7 t- C7 S3 _% G8 o 2
4 v8 l9 W0 l: @/ D1 u4 a" r# ~6 z8 Q 3 set -x) i' s: n8 u2 x- g  P
4
5 V# Z$ u* i- m0 K! t6 K5 E 5 insmod syslink.ko
: a0 {5 L! h. m+ e; e) f0 W 6
5 Y' C. M. a; _0 n" X) M 7 ./slaveloader startup DSP ../dsp/server_dsp.xe674
) a& P- t) I3 Z 8
) k) b* \5 J+ V 9 ../host/app_host DSP1 U) V, \3 n$ p  X9 o$ q" f
10
! t5 n7 Y3 u0 ~4 w# u% N11 ./slaveloader shutdown DSP1 t; _4 E$ A# n: P

+ I* V; q% A) x2 x6 Z1 |/ }! `
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 03:56 , Processed in 0.043555 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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