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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
/ G; C" K1 b0 `7 }dsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
' _* e3 @% j) G
. r  I7 L" x3 ~# ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
推荐
 楼主| 发表于 2014-9-22 09:33:09 | 只看该作者
Dsp.cfg,  config.bld,SystemCfg.h这三个文件感觉不太好修改。能给推荐一下怎样编写这三个文件吗?. R2 u- \4 \! T4 x4 B3 b* f7 _1 j
回复 支持 1 反对 0

使用道具 举报

0

主题

113

帖子

2190

积分

创龙

Rank: 8Rank: 8

积分
2190
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40
  m4 _; N; a  A3 D& [' @+ @5 xslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?

% s% C7 J6 }0 {8 i+ m( Sdsp_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
/ u4 \4 g  D+ W- s* n  d; z2 Q( A* J建立工程
4 @* d0 J3 G. q1 z3 e8 `& U/ Z
/ Z0 t3 ]0 t, P) z, x! m 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

6 _5 s" x9 j6 `slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:05
6 o& V; Q7 E& R建立工程- t  S. e5 p6 i: x$ Z; v* P% S
( L% X' W0 ~, A4 V
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

3 b, T& L0 `+ _# O8 n9 qslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程0 I. A7 X* y. \1 L- u# b' i1 d4 |
: d9 x0 A3 h/ ^3 E! I, u
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。( \* t2 Z# O5 k5 l: Y. F% k
 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。9 ?& u9 ~$ U3 u
 “清理”过的例程的源码如下:; o0 f( Z5 J% {4 s

! }4 h8 F: o- |' f├── dsp3 L4 D  f' m3 U  F2 r& c" m( I
│   ├── Dsp.cfg
4 j  O' o5 B) w! j) t. D( {│   ├── main_dsp.c1 n( n5 R: U6 Q
│   ├── Server.c7 \# h! o# Q% ]  A, V! p9 X
│   └── Server.h) \- a) f. [' j! l: h
├── host) Z$ J8 s: B6 m  [7 g
│   ├── App.c
$ |: G+ J7 G, [9 i  B; N0 F│   ├── App.h
/ C) z+ `5 V( o+ C0 R" t│   └── main_host.c
8 {9 Y- n: s! J# H, P└── shared/ \/ H8 E" f- T, _7 X: h5 X
   ├── config.bld, q1 O, |1 L8 _' K' j2 o
   └── SystemCfg.h0 k3 V  }$ C5 k/ l1 J5 i/ [
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。
0 A  Z+ {# S1 R5 p* X+ R9 J; j' h3 C- w
./makefile
% ]( t4 u$ P9 H( {# X7 d. I4 P5 u8 E% O! g; f+ o( e
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
2 e3 s0 e$ k2 A# x4 H7 t3 X8 W 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15
4 ]9 [) o9 P! h6 o/ Q 3 " \. m9 Y7 p& v. M
4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi, b+ o0 g! }& I
5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-
4 d9 R' f4 w: ?# s& P9 q 6
* @: o# X! N* c9 S* u0 I 7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50
! r) U  I% z* a" E  g) X! I: ` 8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72
- X. q6 g4 e3 x! k( o3 |* t 9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
6 J6 A. g* M4 t5 w0 A$ y, k7 u10
4 u2 P. @7 }& y6 l11 export SYSLINK_INSTALL_DIR      \
* L9 r8 c0 L' _# r4 E2 O% S& q12        IPC_INSTALL_DIR          \5 Q  W( g+ A4 R" o3 ~6 `/ J6 v
13        BIOS_INSTALL_DIR         \
! E4 P+ `, }% x) s14        XDC_INSTALL_DIR          \
1 F% ?% U9 B6 e/ X15        CGT_C674_ELF_INSTALL_DIR \
/ J, d( Q+ W4 G3 T: |6 Y16        CGT_ARM_PREFIX' W* M* `: i  E4 \" v* S
17 " s! ^1 g6 d7 n
18 all:$ m1 v% k/ g9 E% i7 Y: B
19     make -C host all- f% k# K# g  W
20     make -C dsp all
" Q% p  Y% V0 w# A21
( j8 `) M4 U& N+ I8 X* Q( p22 clean::  y# x, ~  [# _9 [3 n+ W
23     make -C host clean: H3 e( X9 S0 C, b3 p
24     make -C dsp clean
( S( D7 t1 }  V' {./dsp/makefile  X/ L' W" h5 v2 g0 z1 m
% A! {3 k7 z! G  Z5 r+ w; S
1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件' X3 h$ T1 @! P0 P( D
2 objs = $(patsubst %.c,%.oe674,$(srcs))
2 G- ~& G$ f9 O1 Z 3 libs = configuro/linker.cmd
  z0 j& C" k0 D9 {! ]* Z2 V; |8 ^8 ]: B$ ^ 4
1 s. ^! E3 \9 w8 F) ?/ P' B1 ? 5 all: configuro/linker.cmd. S/ w  \, J! g0 J- `$ f0 H% h
6     make server_dsp.xe6740 V3 ~/ [9 N* X
7   n/ [( E, ?' S0 X6 M8 R
8 server_dsp.xe674: $(objs) $(libs)# `; {& Z, X9 x
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
) k% w' E4 b( `* a  ?+ \5 n10 8 H. l) E( f! c$ x
11 %.oe674: %.h
0 V7 `+ R$ {2 R& f5 {) }8 U12 %.oe674: %.c
2 O1 J: y3 O/ _6 N- Q5 D, c' P13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
. T7 t% Q9 F( M4 e" L4 X7 ]4 j14
9 Y1 R' [. [) B% |15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
3 ^9 Z2 y  v- Z9 p; B16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \. K2 d5 P) e) @; m3 M$ x' [
17             xdc.tools.configuro -o configuro                        \
7 b4 ]/ y6 h! W4 ^* X! \18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \  u4 }$ I; }& [) e! f. Z. r
19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \# k, @( V1 V1 u. a! j
20             -r release Dsp.cfg
) v% W0 x1 b' k" X) O' V. ~1 c21
/ ]( F* g( k: I* c9 W( ?; i/ K22 clean::6 j: ^& L9 K8 w
23     rm -rf configuro *.oe674  *.map server_dsp.xe674' H' k0 Y  Q& ~0 N
24 5 v, Y. ]" V8 H4 A6 l. w
25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages4 n' @* K8 ?! u8 q+ z4 ?* D, T
26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages: p9 ?0 J6 f% C) b+ Y. i8 N) @+ X
27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages% Q" a# y$ n% t1 K0 @& N! T* N
28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages4 `% f9 t% L' Z. t1 ?
29 7 x0 A  ?4 [& Q! f* N: N
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)2 }2 A! W- _4 v4 U' T
31
2 v+ ?3 \' D' e' t6 k32 CC = $(CGTOOLS)/bin/cl6x -c                         5 H1 t1 z/ z: l2 r- V" e! [: }
33 AR = $(CGTOOLS)/bin/ar6x rq
# ~, @8 f) }9 v3 Y8 m  J9 Y3 Y34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi
& X- S; g( v2 h4 b) H2 p35 ST = $(CGTOOLS)/bin/strip6x
! S3 S! Z% D- x0 ^  O0 ~7 u36 3 A0 t' w0 K  x' \1 \) Q
37 CPPFLAGS =1 Z1 j5 n& f: k2 L" }+ E' B. s# k
38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)' M* ?$ b3 M: P. L" ]* i
39
4 L8 m2 V4 f' A# U! s40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)
0 i0 V3 J% f& P: m* ?7 ~1 |+ p2 z41 0 p9 E0 _9 ^" _+ Y8 p
42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     
5 ~/ d/ C, J0 C3 E' x43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序, m) A2 c9 ?2 v2 }! {
./host/makefile
4 P9 b: ?1 ?& x6 e7 |% l3 z1 r0 Y
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件
* C" M: s- y( t0 V2 {" o( s+ A 2 objs = $(patsubst %.c,%.ov5T,$(srcs))
) y  r# [3 K9 | 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug+ E6 w4 v4 n9 E& x. v# T
4
) C7 G% _& ]: b2 @) a2 Y1 Y' ` 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
3 B% j/ Y1 T: D; g  P4 f 6 ! E0 a  P4 P  O) K! @3 K8 N
7 all:  K+ H5 }6 q+ F7 D6 L. L  M
8     $(MAKE) app_host
! u1 {1 o0 q3 |  ` 9 / Q3 m) }3 C+ d* m* D6 X9 t
10 clean::
0 ]& H" W$ ]0 r- R11     rm *.ov5T* *.map app_host
3 n3 [9 D  ~! y# D6 M/ K1 t: h12 3 w/ h" n6 I$ ^- Y9 ^$ Z7 c
13 app_host(objs) $(libs)
1 C; _' s9 R0 c* `14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
, ]3 G  a: {. |( W15
4 |1 @+ G0 z; H+ j16 %.ov5T: %.c
0 @4 R! c# q! P" r9 B2 D+ y& T3 p17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<$ t! X- j8 B3 X9 q" v8 S+ B+ C
18
. d9 y: g& ^7 _0 n# g5 ~19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t  Q9 T: L6 C' g4 n
20 AR = $(CGT_ARM_PREFIX)ar cr
" p, E' p" `: G2 `" x) |% J21 LD = $(CGT_ARM_PREFIX)gcc
) Z! a% v1 L6 S% _1 y) f  N- N22
8 X/ s* O2 e: }; j6 N23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
& s2 }' s8 [( s: Z# i7 d# s; ?24            -Dxdc_target_types__=gnu/targets/arm/std.h
- W1 K- q- a6 w. G8 w8 c1 _25 + N  ~0 N) K: w2 h5 k2 `
26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径, L' E# J3 T- T" T' u9 ]; }
27          -I $(SYSLINK_INSTALL_DIR)/packages                        \
0 M8 M+ n% D1 ]7 i, Y28          -I $(BIOS_INSTALL_DIR)/packages                           \
3 T5 A1 h0 m6 n7 M+ T- `29          -I $(IPC_INSTALL_DIR)/packages
$ b: o0 k: O0 f2 ^$ A6 }30
: B% n8 r" w" `& U3 w' Q31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map5 [" _/ m# s8 m: O' ?
32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序8 o; |! L) J3 m4 H
编译工程7 I( J! n- k3 V: t

. N3 K1 i! j. G, Z/ j( z; e1 Q makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。3 x2 ^+ A7 b. J) {. ?# S3 v  M' v

$ ~# S, J3 {, L4 U. G7 ~, |运行工程
2 _+ y( B  T9 E6 g3 ~+ l
, f, z6 f2 W; M# h( t- q& } 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。/ ~; I3 s; ?7 n6 C# q- @
- n' O: F; E$ _
1. insmod syslink.ko                    # 加载 syslink 内核模块
9 @. D& C  C. \7 [: j( B$ V: w4 F2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
1 d9 A2 @9 Q8 b: \7 ]) U3. arm_app                              # 运行 ARM 端程序6 m5 @) j5 f1 v/ U! r1 _
4. slaveloader shutdown DSP             # 停止 DSP 端程序
$ r7 s; W: i$ B2 [1 ^ sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。 4 P8 P2 T# N8 h! Z1 A8 E& |
 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
, x# T$ h- ]  o* u% Y2 C/ L
9 P0 z. }: @! h# ^  Y6 m! x- a 1 #!/bin/sh
7 \. I  q( N7 i0 J 2 . k# A' R# n0 W$ X- r" m/ o3 A
3 set -x
5 z4 O) }% p7 ?3 W- F 4
2 P0 M4 i5 |7 w8 v* A6 ^ 5 insmod syslink.ko7 C8 [6 ~) n- K. T  ]+ b
6 % r! P; |2 w% Y( \
7 ./slaveloader startup DSP ../dsp/server_dsp.xe674
+ C; ]# ~/ K- N  h# }: P 8 0 y; k8 @# ]( i' D; O' G
9 ../host/app_host DSP9 f# ]  x6 X. c% }6 s  g5 E) Q; x5 ]
10 ' r4 A8 S7 u9 P+ h" k' w8 I  P6 x
11 ./slaveloader shutdown DSP( `; b0 S; {. Z7 _8 _4 p
+ `- O9 v" G5 A1 a
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 04:03 , Processed in 0.048174 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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