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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
* N) C+ ^: x$ x- z/ q5 ]: G& ~dsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
7 a  M/ r# J" o- V3 m
' e3 }8 Q2 X' K% h1 V  I# W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
推荐
 楼主| 发表于 2014-9-22 09:33:09 | 只看该作者
Dsp.cfg,  config.bld,SystemCfg.h这三个文件感觉不太好修改。能给推荐一下怎样编写这三个文件吗?- _% Z+ b0 n& R3 @/ t; \# C
回复 支持 1 反对 0

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程
) `8 @$ s& }' [% \$ z
( i. [+ F! y; S# }6 f 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。- G# _$ Q. _( V4 f; O1 o* {& n
 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。( S8 V% N: F5 o( c) k9 A2 m
 “清理”过的例程的源码如下:
% I: M6 h9 b' R2 u' Q6 g0 N, N1 i5 b6 _( @8 V* I1 {
├── dsp
* `: w! i; a2 m. s│   ├── Dsp.cfg) w6 q0 R& m# G# }2 \7 ~* A# L
│   ├── main_dsp.c3 ~) S6 y) o) E5 R% p/ C
│   ├── Server.c7 p2 W  g; T# o" k
│   └── Server.h
3 O4 `$ |5 M# n( M* B: Z$ F├── host
. }0 M- n  |$ O. N0 R2 J9 S- \" s│   ├── App.c
. n) g: b8 X4 z0 a│   ├── App.h9 R2 |: h2 F) p2 k1 n$ _  U
│   └── main_host.c
( x' X) z+ x3 T  e, _└── shared9 q  _# h5 e; t
   ├── config.bld6 h1 b7 l+ G$ x; W5 q2 ~
   └── SystemCfg.h
" o; ~7 j3 r- i) ]; @$ m 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。/ n1 k( j% E$ X

8 S6 ?- u3 }/ T./makefile
* ^/ T& G! O2 q% |4 B) w/ o9 w' H3 V. C" N; c
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
; x9 i6 f; o  G0 R. ` 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15, p& o# Z+ p; j4 ^
3 1 g6 K6 h5 L" B% S4 Q% N
4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi
; e: t" s' c+ ]& r$ ? 5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-
$ ^( v9 _( ?# j 6
4 A2 r& e' i! n  f+ x: f1 H- q 7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50/ p; Z, @7 B5 `" p6 [) y! N
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_721 ~1 i8 R; P. x2 Y, Q2 x7 a
9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4# P% n. @# y1 L  c# T
10 ' z% k: v; Y' E5 P3 q  j+ o
11 export SYSLINK_INSTALL_DIR      \5 m8 Z) V# T3 n% r# w
12        IPC_INSTALL_DIR          \
+ \; f) C9 D0 |" L13        BIOS_INSTALL_DIR         \- T2 W, W; J  Q2 \/ j/ q
14        XDC_INSTALL_DIR          \
+ {2 S! e# v  `: C) P! t15        CGT_C674_ELF_INSTALL_DIR \
  Z, k. y2 Z* w% g' M7 u16        CGT_ARM_PREFIX: g' j3 y2 M: D9 S
17 $ h  m8 G9 Z' n# u3 t
18 all:2 V% ~) u3 m! k. a7 Q. c
19     make -C host all6 b, N4 j) p9 r7 V  D
20     make -C dsp all5 I/ i! G$ a/ q6 v! }9 K
21 7 H7 ]# z9 {5 i
22 clean::, u$ d4 I3 Z6 {/ ?
23     make -C host clean
8 n6 K$ K2 E) o0 T2 b& c24     make -C dsp clean
' q1 ?) B; ?5 d7 h$ r, r/ M./dsp/makefile2 ~! Z) a7 P7 L3 @7 m

2 a. M6 g" p- U, C9 G+ E 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件
, m  \/ M6 S- B5 a 2 objs = $(patsubst %.c,%.oe674,$(srcs))
% S/ ?/ n2 z' l. P7 L% ^ 3 libs = configuro/linker.cmd
4 p; ~$ b4 o& E; n& Z* G+ K$ n 4
0 x0 R5 H* r" w0 M1 j6 y8 ~ 5 all: configuro/linker.cmd
; Y1 g* d9 Q8 H# Q1 }8 S( K 6     make server_dsp.xe6749 S/ B: Z2 t' V! t, t1 b( _( o. g, q
7 / A& c) X: U  l% a! r1 c1 a# l: j
8 server_dsp.xe674: $(objs) $(libs)3 r+ j& @: S' Q
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)! Z2 i0 J9 U2 O8 W
10
. H* b1 l4 }+ `  W+ U1 Q" s" m1 v: q11 %.oe674: %.h
% P1 ~7 V' ^6 Z; |( D12 %.oe674: %.c/ l  V6 e& x- a1 V6 D
13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<3 U1 Z1 k* ^  Y4 f( |: j# U8 @# q$ K
14 1 u+ F4 p6 b& b4 ^
15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld) s$ `, A7 U; y6 _& D
16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \5 T3 k9 f7 n" v
17             xdc.tools.configuro -o configuro                        \9 h2 Z' B8 l* N! g! z
18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \
4 P3 P, y% U4 G+ q19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \* ~" y5 v% v( E% W7 M6 E8 p! W
20             -r release Dsp.cfg
. b5 l7 X' J, _6 e# R/ F  w21
; ]* `( }1 k: ~, z+ Z22 clean::
% E+ n$ D: X9 W! V! I6 \23     rm -rf configuro *.oe674  *.map server_dsp.xe674
. l5 H" x7 R7 W; ~/ A4 h24
9 Y/ s, o8 |' D( p; B) m25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages
" Q/ r; Z; C. q# R26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages
2 J. I. j5 G: w& Y7 l  E" g+ S4 f27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
+ z3 b- |5 w2 P+ c28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages
& _/ a& j7 y% V29
# O5 x2 u3 T: V* J/ j3 h, n30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)# W. }- h% ~' j  q4 R1 l
31
+ i6 e1 j; `1 n32 CC = $(CGTOOLS)/bin/cl6x -c                        
  ]2 ?) v4 }; w33 AR = $(CGTOOLS)/bin/ar6x rq9 e( S$ E1 A' p+ C2 d4 [9 Z, ^6 X
34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi, u; S/ G. w' v* ^  I5 N: V
35 ST = $(CGTOOLS)/bin/strip6x
, d, S# r% s) T$ `: k1 ]36
2 A7 u3 L9 X/ @/ W$ j5 ~& c37 CPPFLAGS =* q  e8 u3 a( A0 p# h/ ]9 \
38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)
  v# b" ?9 X. u5 v39
6 y4 G- H9 {0 a; o. g! i: k40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)- M# [' h2 L: K2 F- X. H, k" f' _
41
1 M8 K/ l8 A% p$ I, C42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     
7 I5 W  \% X, f3 [; D7 ?  {! f43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
  k+ i% n+ x- I5 v- _$ J* z3 E./host/makefile" p  b! i4 C3 k' m% k8 B
* b% A) n+ Q9 p6 g1 x$ Q- w# J
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件
5 p: d: k2 P& s5 Q# W6 Y 2 objs = $(patsubst %.c,%.ov5T,$(srcs))
7 j$ x4 |& D8 U% g7 E/ D8 l 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug
+ r0 s' }( [/ N; z# F  C 4
( w. C% s; Y* W( j 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))4 k: O$ a/ U8 A$ ?" ~6 P
6
# _; U2 @( Y. @* c" B# s 7 all:, F6 E" T4 P5 A9 b( O' n
8     $(MAKE) app_host& Y! e3 `  P, a9 c, Z$ p
9 & \# A* J/ Z' l8 B& O% C4 ]
10 clean::
7 g/ z( E! d# c* C+ E/ }" j11     rm *.ov5T* *.map app_host
( E- \. z% H2 s$ B* D$ ^2 W0 C12
0 k# h" i: O0 ?0 S, }! Y13 app_host(objs) $(libs)
, R: E' v3 q1 Y3 K9 Y5 f14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
, t6 N) m& q; s8 S- f+ Y1 \) e15
4 }; e# _1 Z3 m. n16 %.ov5T: %.c
6 y  l: Y; n$ i& ?3 v17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<1 Y% y9 ?! f, V4 V/ t
18
- R0 D2 t* Z9 N$ h8 i19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t* k/ _& J4 b9 |6 e
20 AR = $(CGT_ARM_PREFIX)ar cr
. y4 K9 {# X8 @! ?. j! w8 N21 LD = $(CGT_ARM_PREFIX)gcc/ P6 O* ]1 ?9 [2 S8 u; b" _
22
2 G6 K! h0 h5 |* t. m# V& z23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \1 |; d: Z0 }& U
24            -Dxdc_target_types__=gnu/targets/arm/std.h1 _% r- n( L5 f, m5 Z/ [/ ^
25
# W) g7 w" i5 N8 d7 l26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径, F2 c/ e( \  r* H, h, ?
27          -I $(SYSLINK_INSTALL_DIR)/packages                        \/ B! v; |! ^! K9 O+ K8 ~8 q* @
28          -I $(BIOS_INSTALL_DIR)/packages                           \
" a* i. t3 Q( W& ?' s( u29          -I $(IPC_INSTALL_DIR)/packages
; D* F) p7 H, `+ ]% b4 H30 * B" x3 o2 v8 L" W& n
31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map
4 R* Z9 c% v; q% t' R+ Q32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
" r4 a( e" c- W, _% ?( V编译工程5 `. D) ]; Y) @! n* |4 L9 K
/ y3 v6 x" q" I' n# @, l
 makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。" F6 X# ?# s! k1 g7 t7 u

9 I7 O; D# |' g. V2 d. L运行工程
% C# e1 n" E$ Q' B0 M( B$ k% [2 v3 ]$ D" b: i, ^
 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。" d3 r% c7 ]6 l2 q$ D2 s; Q2 i; K

1 e8 j) z, w- `, x. ~1. insmod syslink.ko                    # 加载 syslink 内核模块
1 h6 z) n) f2 P0 n2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序! H6 l. ]  F3 q( B: \" U8 s
3. arm_app                              # 运行 ARM 端程序* b& S. R# z6 j  |  C' i# q6 h
4. slaveloader shutdown DSP             # 停止 DSP 端程序0 \6 e0 H7 z9 J1 |* C
 sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。 ' t8 ]- W- q" \. _8 W
 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
4 I' ^0 U* j* B( U' D" q% R9 ]+ k9 \2 t4 ~  |7 k$ o% o( D
1 #!/bin/sh
9 u) I0 }5 ~9 ?. F; A/ J+ e 2
$ ~% M+ e+ T: h/ C; A. k  j 3 set -x. b% s# m. }, d- a; [0 o# r
4 4 O8 W+ \2 z1 G7 p
5 insmod syslink.ko& V( G8 K+ H! M/ i$ Q
6
' C- i3 [9 W+ |7 _0 A- X! m3 i 7 ./slaveloader startup DSP ../dsp/server_dsp.xe674
, ]" g. L* }2 T1 `3 R( T 8 , K0 u9 V5 @, ^
9 ../host/app_host DSP
$ O$ q5 z) h  m( o9 e; j, d4 E) K10 $ p2 @! h& `: L
11 ./slaveloader shutdown DSP
. D; E) k6 j" S. e* l7 c1 q9 I1 `/ o% P7 e
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:05
& _) ]2 L* e% x- t7 ~; ^, Y% G建立工程* S0 X; e- @0 |, F8 v( t

9 J5 r6 \4 q! \% p1 J4 k* x 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
8 F* _! j- y" _: Z: U3 n% N" {
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; p2 a4 b6 l6 z* J8 |
建立工程
! d' h* i7 q* Z( q1 f* y) U! s/ i, c6 O1 R5 w2 Y7 G( A( V. F
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
6 \# J8 `6 B: j: C
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:40! E1 D5 D  b* h/ m6 x) F
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?

/ t. V" P3 ^5 s- [# t3 Hdsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 03:04 , Processed in 0.044839 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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