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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,% B/ [( L2 n! e. L
dsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。" R- u; @% ~* h, K6 p  a; h

" ?+ H$ H, w" J9 i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程
- C; ^: K( b' Y: i
0 K* z4 M$ I8 E& ]6 i4 k 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。
- I3 x& x* ^! Y) Q' U 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
! k( G3 B8 g7 P “清理”过的例程的源码如下:# B' E/ e2 F% ^- f  \

1 I( V4 m% N; `$ I├── dsp4 l. j5 D; o  f0 I$ E5 Z& g; G
│   ├── Dsp.cfg" M( k$ Y# W9 @; X/ g
│   ├── main_dsp.c9 i0 u  q# V+ J( g; D( `% j" S, P
│   ├── Server.c; d3 z4 i$ O5 z/ f; i
│   └── Server.h
- P% L: q3 F9 A( H7 j. F  ^├── host
5 ^+ P" V' s1 Y" t: i: V) M  ^│   ├── App.c, o; ^% Z5 Q, r8 c
│   ├── App.h  d& g* A5 r2 ?& Q
│   └── main_host.c
' I0 C0 P  h6 V% \% D3 i└── shared; |# _3 f4 ?! U' ?- u
   ├── config.bld
" ~1 D1 R) |' N+ h   └── SystemCfg.h% ]! `# U% k- m" k2 D3 x: f
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。
* o& _# @' `/ a0 v6 f& I. F& L
' r( l$ z! W0 O. q$ L" C./makefile/ l5 w% a+ s2 l/ K$ V
! F8 j. r* ~% j" g8 ?
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
5 w1 k% f$ k1 g; D% J 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15
5 W$ c+ r  q2 g 3
" B1 g! P. Q* `% P# Z/ _ 4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi
7 T& C4 P7 b2 x1 v, M3 H' o7 x' \ 5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-
: A# a: c/ c; r3 S  v# S 6
9 L- s* [+ H0 r# [4 d 7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50. j  e- X4 b' R) W* Y
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_725 x" u5 `+ o& X8 _" x
9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
, W; _; }4 j' x+ ?% t2 s/ X# d10 # O" m4 m5 \0 N* B2 j; f% l1 A
11 export SYSLINK_INSTALL_DIR      \4 k! l0 c: P3 P9 s$ E0 X2 }
12        IPC_INSTALL_DIR          \
$ m5 v" v. R# _6 b13        BIOS_INSTALL_DIR         \
, c/ B" M9 E: M+ A. K5 ~14        XDC_INSTALL_DIR          \2 p9 }. _  E* j
15        CGT_C674_ELF_INSTALL_DIR \, j) d+ G* H1 j- t! p
16        CGT_ARM_PREFIX
2 S( I9 m$ v2 l4 y17
4 s( A# |) P; b3 e, u1 t$ C18 all:
( P9 O, v4 ]) T9 {19     make -C host all' m0 ]: g" K0 Z+ b2 c
20     make -C dsp all
+ ~, M1 D0 [. _/ d5 K1 q21 4 n' E4 Y, Y; j0 O2 O! A  m
22 clean::$ r1 W9 r& r1 E
23     make -C host clean
+ G9 \) H7 @/ S, R24     make -C dsp clean8 O) b5 ^* W4 K8 |/ _  n  X) c
./dsp/makefile6 h% {4 d' M5 D# P( K2 q" _

' y0 `* w* ^& d" W# B- p( ` 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件
& Z2 e" ~8 i3 j- P) }; D 2 objs = $(patsubst %.c,%.oe674,$(srcs))( }& x- G0 {; J% x6 G0 M5 x: p2 [
3 libs = configuro/linker.cmd
2 e% j( l& q9 o% S. \ 4 3 L  _2 m( i( M" W# ]3 ]$ Q' [
5 all: configuro/linker.cmd
- _, ?, k7 v. ^! _: g 6     make server_dsp.xe6744 M. y; |2 d0 a5 v; ?: w
7
, q2 b1 P6 t6 i9 Q; N2 B  M! o 8 server_dsp.xe674: $(objs) $(libs)1 X5 E6 A' V$ j1 s2 k  s" ~
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
' x- l/ |: A6 F; L! M+ U10
% C/ k' }) R/ I, f( G11 %.oe674: %.h8 f6 Q8 ]" l$ ^2 g
12 %.oe674: %.c: N5 D% b: H4 r, G( T* r
13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<5 o4 S0 O' @- A
14 1 }4 k9 Q9 U9 `  `' k' m
15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
, |0 B8 b" o4 |' Z( Z' u0 u16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
8 D/ y0 G, n+ F: @' k17             xdc.tools.configuro -o configuro                        \
$ I( B& S* J/ J4 Z18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \. R& i( w7 t& {$ c7 }
19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \+ z* N; b; @1 q1 ?/ t
20             -r release Dsp.cfg
- k9 i# }; I5 z" |0 A6 D  a21
$ ], C! [% v1 z4 Z5 a& p) P22 clean::
% c8 b* y% u& h23     rm -rf configuro *.oe674  *.map server_dsp.xe674- H4 h5 X! }: |1 X( m% ~
24
" A$ V/ k2 L' g" v& R25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages, {8 ?7 s0 j0 G/ @
26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages
6 ~2 q: @! S$ [$ ^( M% {; k27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
* o! I; y1 g. a$ [' W6 m" |28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages6 t: C1 i, @( o: J: m
29 4 F& U* h8 S+ H5 J0 I5 L9 Q$ ^
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)8 B1 w& N8 x4 v% y7 v% ?8 M) X
31 ' v0 }; @+ w6 {" u
32 CC = $(CGTOOLS)/bin/cl6x -c                         3 {9 b0 ~' ^- ]9 z
33 AR = $(CGTOOLS)/bin/ar6x rq& C: m: G! W0 p. s1 b: z7 ?
34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi
: p' A  L# N& P* C6 t. w35 ST = $(CGTOOLS)/bin/strip6x7 J! e( B1 ]  a" F
36 , a. R( B* Y( I7 m- q8 B+ j
37 CPPFLAGS =* @  J  v5 p) N% D8 W
38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS), T% r5 n. l+ Z+ i( }* N: ]/ M
39 : D" m& ^* F2 ^
40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)+ X7 o  ]5 G9 R9 j5 }* b
41 2 f" r4 D+ x- J: @7 _5 g/ K
42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     ( q7 V; [5 D9 f* i. t* ?
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
$ d% @' m: s/ L& r+ Q0 t./host/makefile% [8 `" {6 Q2 [7 n2 M

/ }" Z7 @, {& m 1 srcs = main_host.c App.c                       # 在此加入 c 代码文件
) E5 S/ k0 e: B6 x0 Z 2 objs = $(patsubst %.c,%.ov5T,$(srcs))
* W5 C- X& }# M, T* R4 {5 g+ E 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug
1 H4 n- J0 E6 q 4 2 C2 |  [  E, d2 W, k
5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
, ?" z& O5 ~3 e- M 6
+ E5 n( v" S% o) T$ Q 7 all:; V* t  L. B7 m. e; Q& P! Q
8     $(MAKE) app_host; w# `. ?+ o; o* b. a/ Z
9 0 g5 i, U" i. d( f: ?8 n' x0 e
10 clean::
' S5 c5 @/ a0 ~0 v' d4 F11     rm *.ov5T* *.map app_host; D8 S) S) J# h& D( c/ f
12
* P1 B; V+ [1 }, [3 N13 app_host(objs) $(libs)
3 F, L# t. L4 z, f) g. O, V7 t# k14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)0 E3 K. P, s  O. J1 `# a
15
# s0 y4 T: T" A$ z8 X5 g16 %.ov5T: %.c
  a4 b: u' b+ I$ ^+ I8 w7 U% ?17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<
$ {* J$ L5 b0 a' _9 m5 V18
- o7 W: f" j. Z) p' H3 Q19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t7 g2 ^& S& {4 [" G! d9 ^& I
20 AR = $(CGT_ARM_PREFIX)ar cr) w  I2 F7 t2 H) V& n3 ^
21 LD = $(CGT_ARM_PREFIX)gcc2 Z2 Q. s9 r5 `
22
, }8 m& [& S6 I& J23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
( K2 b( F# O$ j" G8 y* B24            -Dxdc_target_types__=gnu/targets/arm/std.h
6 E" Y* d9 I$ V! o5 j" J25
/ D& k& d2 i- k; B1 S26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径
4 S" K3 J/ E( Q5 K& k! _27          -I $(SYSLINK_INSTALL_DIR)/packages                        \  R% o) M& U2 D9 ?
28          -I $(BIOS_INSTALL_DIR)/packages                           \
+ e* u: e" C& j+ U6 h$ b29          -I $(IPC_INSTALL_DIR)/packages
% g0 h$ p- P. u" X8 n5 z30 . c" k" ^3 n/ }. o7 a7 L# g
31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map. i& Z  W( d1 s
32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序! N2 X: q* u" _9 E, q8 a4 }. H; S
编译工程% A/ I# Z# I' e  \2 |) v" U- W

% w( t0 _7 u" O6 t- h% W2 M makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。
* a; w# y% x1 j  t( N/ H2 p
- V! R, M8 \; e: l1 V运行工程
1 o" e% V6 _  E0 w  H( [" `
6 G9 e( J0 X) D( j& n0 Q5 X2 I 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。
5 ]3 g* ]9 _) n) Z/ j
( l2 O" o5 K2 Y) }* d1. insmod syslink.ko                    # 加载 syslink 内核模块9 l" |- g, q5 H, s  }- F$ B
2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
0 M; w* I/ P  F, V9 i3. arm_app                              # 运行 ARM 端程序0 M7 D2 U' s+ A% N+ a0 Z/ `
4. slaveloader shutdown DSP             # 停止 DSP 端程序% U& k/ @0 }0 j5 ?7 X
 sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。
: r6 u* [: m9 e' c2 b% } 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
& o) o1 V; I) f7 d: |; T8 s  V
6 [  [7 a7 R' Z9 E$ j" G3 s8 X 1 #!/bin/sh
5 f+ P0 E0 q. J) q5 g 2
; |( U7 w9 ~+ E7 e 3 set -x
- P& L3 n; x- R8 U 4
5 p$ K! t! R, c( X  G 5 insmod syslink.ko( k/ q' l6 @1 e' k7 U; ^) s8 A
6 8 L7 ?6 B& Y+ y
7 ./slaveloader startup DSP ../dsp/server_dsp.xe674. Q5 A. Z' q5 ^4 M7 w& g
8 ' w6 B4 R; e7 M" c
9 ../host/app_host DSP
, |( k9 f# G0 f3 i/ |10 3 I5 Q6 B4 ]3 A( N; o. C
11 ./slaveloader shutdown DSP
# K2 d4 u$ v6 z7 n/ k
9 @9 x) R' f4 e: p
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:054 c3 E  ]: q3 [; G8 K
建立工程6 q; r1 _0 @, L% o
; P2 O/ h9 ?7 Y# P7 l4 k* Q
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
2 O, Z- V; U8 x" o1 p2 \( h
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# W' U, D) m5 c1 V
建立工程% A3 E* ], K' `0 y- g) s
  h5 C3 ]$ j7 w
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
; p  X) D) ?  H" F
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2025

积分

创龙

Rank: 8Rank: 8

积分
2025
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:408 |) X; r' i2 [4 V9 F) J
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
( X' ^, g: H; f) Q- V
dsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 06:58 , Processed in 0.044459 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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