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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,# t6 x1 a- S4 x
dsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
( F, s. v7 M( C2 P+ l
2 ~6 d7 H5 k- h6 W/ [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程, r6 s9 H7 k) G( i3 a) d
! Q0 ?; Z  |; a4 a0 n: O1 U
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。7 {7 y' t3 S3 k3 D
 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
4 ]9 |$ i6 I3 _8 Y “清理”过的例程的源码如下:- s+ ^" Z0 r+ L/ }

, q) }" h# n$ D( g9 l├── dsp' d9 ^4 O7 B0 o2 T. r2 m  v
│   ├── Dsp.cfg+ K1 O: ]- v4 e; ^
│   ├── main_dsp.c
+ q" A4 A9 Y3 n) h, \! F7 T│   ├── Server.c  c6 l: c9 ]9 |0 x/ w
│   └── Server.h
" e. D7 A1 I: r. V0 |0 [9 `├── host
2 l8 P4 `9 z2 ]! {; o* y│   ├── App.c" k/ t+ A! r! a# X( C- _6 _
│   ├── App.h
0 l3 z' X$ f' m" `. i1 o3 e│   └── main_host.c
# P9 k; b+ c- L4 y3 r; ~2 n$ j8 ]└── shared* L. x" J  F8 e1 ]4 T1 ?+ b( W/ w
   ├── config.bld+ R" e" |" z6 T
   └── SystemCfg.h" i4 B8 _# S$ t* n& I- _
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。0 `0 [$ i' g/ y

, \) g* n1 z" p% b% A& l+ _./makefile
8 W+ g4 m0 b& h: F# E/ L* a, w) c- C. v) E( b
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
* K6 F9 S1 W; ^ 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15
+ P1 [. v0 ]8 B; K) \+ e" I 3
1 ]/ ?" ~# @7 r3 x8 f  o4 ^ 4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi
+ r7 a: y7 I4 W0 f- Q+ K# t2 ?( B+ u 5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-# F. e' p; U4 i( c# g2 U- k
6
: l/ y# y4 S$ r' ?+ K& q' e6 O- p$ s 7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50+ o! |( d: u! G& }( t
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72) z5 L- W& t+ ?, f& V* x/ h
9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
5 M% O" T- {7 r10
$ M2 {- d( j8 s, M11 export SYSLINK_INSTALL_DIR      \, `$ x7 ~1 c3 C+ E2 d$ k
12        IPC_INSTALL_DIR          \
: H% Y2 H, T: o% n/ q- ]; O* m; o+ B# y13        BIOS_INSTALL_DIR         \4 E+ D0 _9 N3 c4 L
14        XDC_INSTALL_DIR          \
* n& H. N1 u, R8 W15        CGT_C674_ELF_INSTALL_DIR \
7 E" B) O) x& N- T( @9 Y- i# B16        CGT_ARM_PREFIX
% O! _2 G' L1 B! |0 S17
' t( t& q3 w/ Z# ~' o: r9 R18 all:& M% N5 {0 Q; Z. C
19     make -C host all  S% B! S6 ]* f/ q$ F$ J
20     make -C dsp all; K& S3 G: _, G0 }3 [
21 + b5 a8 E# c+ J6 ?7 [+ F
22 clean::. v0 x3 x8 F& H( u9 R
23     make -C host clean/ k0 v. ]- W( W  J, y, W
24     make -C dsp clean
& n, m' L+ o$ c1 G: R./dsp/makefile  _% l* Q+ v6 U1 Y# c

1 A7 m/ L$ {, }) h6 I. O 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件  ?$ S  V0 y: U. z( W5 f- `
2 objs = $(patsubst %.c,%.oe674,$(srcs))
2 v* d+ f- E: K! B0 g  \+ e 3 libs = configuro/linker.cmd
0 n+ P; \  e) ?  F5 m/ I  j' \" p( s 4 1 Q: O# d* x4 Y% m3 x# x
5 all: configuro/linker.cmd
7 y3 u8 m) S% _ 6     make server_dsp.xe674: h5 G0 A9 {$ O8 ~* }( t
7 % L7 x) \5 H0 D9 a9 \
8 server_dsp.xe674: $(objs) $(libs); E) @' G( N3 K2 z
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)) S7 U+ G" g6 @& Z9 o, }
10
1 F; ?. p) G$ v; P4 k, u' X11 %.oe674: %.h& t  q1 ]7 Z2 Z2 e3 m
12 %.oe674: %.c4 D) Y$ q6 _' Y! F6 q& i# |6 W3 u
13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
* j" A2 @3 J8 b! I9 w14
/ H4 x1 K, z% C15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
: d7 J' R: ?. i16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
+ o& X- u2 U9 x# e17             xdc.tools.configuro -o configuro                        \
' B# o9 r7 A# K  H  l6 D, n; h3 z7 P4 N/ q18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \3 G6 w: W8 y& N9 [) x& v
19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \
2 l( ?  W5 }3 Q. Y: W20             -r release Dsp.cfg, g+ @8 d8 `% Z/ U
21 1 o7 h/ U0 O) }9 A% |; Q
22 clean::
% X0 ^: Q: L& x% h/ n( A/ D23     rm -rf configuro *.oe674  *.map server_dsp.xe674
5 N3 p1 c: u+ k1 ~24
5 ^" Q% b6 N  W* Q( a7 O; n25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages7 F1 W; Z* E* Y0 ^. k6 L( n8 B
26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages
  b* ~7 ?, d- D2 S: l27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages3 E1 g- x2 ^1 k+ m3 \
28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages
4 [$ ?$ R2 c! l. @. e29
. P' s& v! I; [8 s30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)
& @/ J8 ]9 X6 n* c8 A1 ?% p31
* S! r( [6 W+ P. z. ~- ]% y32 CC = $(CGTOOLS)/bin/cl6x -c                         8 _: `+ t1 q4 C& f9 O, v! z' V' \
33 AR = $(CGTOOLS)/bin/ar6x rq
# t" n' [; ]3 _7 w8 V  P) ]& N/ d34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi
- z; D2 t: G2 F# z$ }- Z* A35 ST = $(CGTOOLS)/bin/strip6x7 Q; @& H7 M) J4 q
36
1 a% b6 G: Z1 S$ d# c5 x8 [5 b) R37 CPPFLAGS =) n& v; k3 u! k! a! @+ K" c: S# w
38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)
9 G+ {/ v' a5 q39 * z/ @9 r; ^$ X9 y% Y  h- _
40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)
& r( l9 t( ?3 b: A" `) {+ O41
( U  \0 i+ J5 T7 I42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map       t" f( B3 I( t4 j- O
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序3 a& R+ d& A* |8 G- \" v
./host/makefile: W1 X& S5 G- F4 _: s

: x: j$ Z2 R- _0 y6 g- y 1 srcs = main_host.c App.c                       # 在此加入 c 代码文件+ k4 H* L! x4 A9 f6 ], d/ z
2 objs = $(patsubst %.c,%.ov5T,$(srcs))
" P* _/ ?( J4 b( N% e 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug  {; G: M4 |/ R0 H5 ^3 _
4
4 V5 A; \; R- b5 z: N: i 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
1 _; @" u) c  Z$ r- ~ 6 ( h0 D" u$ o: |9 _- W. [9 \- S  C
7 all:
2 ?$ J$ ~& p) z 8     $(MAKE) app_host5 L, _2 U" v; \( T
9 ; z1 v* T+ l4 T5 Z- T! e
10 clean::1 l$ v' ~1 Y. u5 K
11     rm *.ov5T* *.map app_host) Z9 N( W; ]6 q4 O* [( |4 y# j
12
& d# V: x& y( {, W) v1 G. |/ h13 app_host(objs) $(libs)) ^3 o9 t8 d2 H# p1 z' W3 r# s- @
14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)+ Y' ^3 n6 X/ R% q9 ?9 [' y+ ]
15 : [! P1 t* \& Z
16 %.ov5T: %.c" w5 R8 r4 F5 T4 A2 s; s% x
17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<' N6 f; Q% Y0 ^1 h' q& J
18
  z  J" ~" t- o" O) Z19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t- m; `8 ]- J& P
20 AR = $(CGT_ARM_PREFIX)ar cr& @2 F- S4 k, E, m- K
21 LD = $(CGT_ARM_PREFIX)gcc4 Q' s3 V3 t. F: w, g1 ^
22 2 U! q( U' w! z+ }8 o8 E
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
# W5 Q) B! S/ \7 U, [24            -Dxdc_target_types__=gnu/targets/arm/std.h( h5 [, Q0 I! S1 g% v) G" z
25 * i) z1 E3 g5 J0 u$ E5 P
26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径
( s- T, z7 X! J0 _& v  F27          -I $(SYSLINK_INSTALL_DIR)/packages                        \' k& B2 F! n; K+ i$ m7 h
28          -I $(BIOS_INSTALL_DIR)/packages                           \8 ]2 E' w8 b/ W* e
29          -I $(IPC_INSTALL_DIR)/packages3 s/ W" ?0 e% {  }/ T- g9 E
30 7 F, a1 s! f( d" t8 h" {
31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map
: X  B0 X9 t  U  Y32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
/ L: E* J9 q' S% F! w( [0 f编译工程
0 t( r  u: J- k; J0 i9 l1 p) I, ~4 H/ {& H: _# x! C
 makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。
4 J5 ~% B* p4 K+ H
0 K' q/ z- \( [6 o( Q) E; o2 j运行工程1 z- h8 I1 Y3 m* y, `. n

" h6 r! V' ^+ J# n6 S  ` 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。7 i" S( B2 C; T2 l1 Z1 g
- c: {' j# L% @' f) \4 C
1. insmod syslink.ko                    # 加载 syslink 内核模块2 k% Z# V& s, w0 ~: w+ p) [! N
2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
2 @$ i5 i+ T; v$ F8 D9 O5 Y# ]3. arm_app                              # 运行 ARM 端程序
7 d% B5 n0 ~: P4. slaveloader shutdown DSP             # 停止 DSP 端程序+ n" |9 X% M0 x4 [4 o# n
 sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。 & i+ m$ q' U  b. C0 N" [, f
 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。1 k9 l, p$ y* E. l' O. n

8 B; ^2 g$ m: F& e6 I. W 1 #!/bin/sh
( F& k9 [9 z* i 2
' h0 }' v; z, H; H' A1 h 3 set -x3 D9 p; G8 e6 _
4 ( E4 J8 t, d1 y. t9 L4 D
5 insmod syslink.ko
. |' l% s3 Z: M( I" y9 p& T 6
3 ?  q& m  O- v* {1 S3 ~ 7 ./slaveloader startup DSP ../dsp/server_dsp.xe674# O% W. }/ r' W7 F0 k+ s8 t
8 * t( `& l  }. L% q; W
9 ../host/app_host DSP
& S. e  B1 F( \0 G2 e5 m10 # x9 n  u' a2 |% Y2 u- d. j1 n' A
11 ./slaveloader shutdown DSP5 E1 P0 e; r' t! ~! I

) a' v5 i/ y4 C9 `  k6 S* V& ^
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:059 u6 o+ n& V8 C7 F9 f
建立工程* t0 F; J% U$ p% T8 u, J" t- w

: f) i7 l8 N1 C5 {5 A/ m- T 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

6 S* X+ w+ S  T9 Xslaveloader 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# E. @. g& {- [2 h9 N3 Z
建立工程
4 n( U2 d* d) p; b7 \( }) x. L
9 I7 q. s7 y* z% f0 F 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
6 R+ d- N  ~$ M$ s, X
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2020

积分

创龙

Rank: 8Rank: 8

积分
2020
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40
: S7 K& Q4 I, o0 [# @slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?

( Z# w! L/ y. _3 P+ k  fdsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 22:02 , Processed in 0.047517 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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