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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
. R4 C* ~4 Q; }* sdsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
- }8 w0 K# ^! e6 r( h
" ^, u; q8 J( U+ \+ z6 P/ O( j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程3 N# N; ~! b0 ^% N% |8 H- o% ~

5 E, D& @) S! Z- L 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。: k/ O& l( ^* O. N
 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。* K/ [3 B  B7 i+ k+ D8 t
 “清理”过的例程的源码如下:1 H; I5 l2 y& _% u4 j, _! i1 J

; E& p. B9 {0 N- k+ ]├── dsp6 ]  m7 ^/ B1 G3 [* S
│   ├── Dsp.cfg
8 f; n  P. S; W; w. r. g! i/ g( ?│   ├── main_dsp.c
( B; b4 l, v5 w9 Q+ E│   ├── Server.c
1 f" l, `# p/ T' j+ C$ [│   └── Server.h# p% N2 m" X# g) B( f# B
├── host
' ]- l1 W/ \; s: b0 \- o4 I│   ├── App.c
6 t) a: X0 Q: V, o5 a│   ├── App.h% ~% g, O1 J9 z2 {% d" [' e& N
│   └── main_host.c# J1 B1 \  F9 O% Y
└── shared
6 @+ q; p: J. |   ├── config.bld
5 R( ?& }2 X2 Z8 B! X! o: U   └── SystemCfg.h
8 s9 e9 y% K! }- Q# D% S' o 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。
7 H  S6 J: o# w. t& h; J. S0 i
1 A5 u) \* T# w8 ]./makefile  X$ M5 r2 C) ^6 V; o$ Y4 R

& D3 h1 {5 ~' w! M3 X4 ]" r 1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
+ n% u0 l; O: y- W$ t0 } 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15
1 j/ e9 W: n& g: T2 [5 C 3 & G- [3 u3 m% P
4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi
: X4 x2 B2 Z1 |& W* i 5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-# O- s* f, \& v( c9 l. M) v  g
6 " b( v+ M  S# w6 J1 o5 _) R
7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50
4 _& S$ t+ k! p6 e/ g2 ]  Y( u 8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72
9 M4 a! Q+ K0 G# e 9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4# y7 _( m9 N% A7 T$ g# t8 g
10
$ J$ V3 p& V' s+ ]3 d; |11 export SYSLINK_INSTALL_DIR      \  L; z& H1 Z" Y' J# E2 r. Z2 D
12        IPC_INSTALL_DIR          \1 {1 y8 t9 W; e: W3 a  V# H" q
13        BIOS_INSTALL_DIR         \) n9 [* F6 N* J1 [1 m" {. A. Y
14        XDC_INSTALL_DIR          \
' l# S0 Y2 E( X# [/ p15        CGT_C674_ELF_INSTALL_DIR \0 G* r  K: d  @- g% ?
16        CGT_ARM_PREFIX: a- S; ?6 t6 Y# o
17
- M1 B2 L0 V9 e' R18 all:
2 x7 E- [1 e  }* v0 |" w3 J19     make -C host all
& }8 J. n* p. c  Z3 b% d& W20     make -C dsp all
0 e& n2 w" m6 |8 L21
: e7 Y( J' i* X$ {8 y22 clean::
* o$ p% \1 u1 {; n$ f23     make -C host clean
/ @7 F+ E- i: S* u; }24     make -C dsp clean
" q6 M# A4 O- @, N" S$ @4 p./dsp/makefile
5 F" s/ W% j3 s. l6 B
4 ?  n6 g* W4 B* Z- R5 H5 [2 k 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件
" ]% x/ u8 H4 K9 V; V$ W 2 objs = $(patsubst %.c,%.oe674,$(srcs))$ p9 o* d- U9 Z2 [# h0 [
3 libs = configuro/linker.cmd9 x2 U! f( e5 f! u
4
- D* J( k6 p$ M& Y% _& b! G9 D' _ 5 all: configuro/linker.cmd( n% j& U! s$ M% d  {
6     make server_dsp.xe674
! L& t6 ~4 Y: Q- [' F1 F 7
6 `$ k+ W/ R. ^& ^& A4 @ 8 server_dsp.xe674: $(objs) $(libs)
& I  {. _$ g6 `0 M 9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
7 q/ u4 S( }* ]9 p/ N& Q) ~10
7 X: z4 U' Y) v  c" y6 h2 p9 V11 %.oe674: %.h( F- V+ s! q, Q$ r, G0 B# [
12 %.oe674: %.c
9 s1 E  c+ X/ q5 Q! n; q. w13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
! n4 r7 e9 `" a/ N! G- D0 T2 A14
" p6 L& O7 C' l2 F15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld4 }, W. E8 Y$ c) P$ T. \6 i
16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
0 c1 N: ~# f% c17             xdc.tools.configuro -o configuro                        \
# u8 Q2 }' I- D: }2 W( R* S, I18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \
. E1 H) g2 X  t7 B8 ?19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \
9 l" J! m: l# @* C4 f9 |8 o20             -r release Dsp.cfg
5 V+ {' J) c& O5 X2 f" t/ f21 " `( \) h; g* k$ e# o
22 clean::
. U2 v: h; K; T- E23     rm -rf configuro *.oe674  *.map server_dsp.xe6744 h) E8 f- l4 d/ }' I8 ?$ T
24 . F9 Y$ J% c5 i" `+ I
25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages$ t) m. J7 B$ g/ Z- E
26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages
* C! k- q: M4 R. y27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages  `! q& k6 T# Q# L, O
28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages, q) y8 B( t" e* a. {) R  L# _
29
  A: @( k) E1 `3 T% N% f30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)
5 ?5 Z2 T1 D6 l31 5 p% V7 |5 t+ n9 d! @' D
32 CC = $(CGTOOLS)/bin/cl6x -c                         . R) F" U/ u: b; q+ K% Q+ A
33 AR = $(CGTOOLS)/bin/ar6x rq$ c, }; r$ @; x) }( f! Y8 s
34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi9 J! f/ P+ b2 ?9 z
35 ST = $(CGTOOLS)/bin/strip6x- u6 A& O" k" v6 z; E
36 3 ]+ F2 p4 a; ^( r- I, c
37 CPPFLAGS =: H' P" |% _8 i6 \# [; h2 G4 y
38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)2 S( L  D! ^/ ?: Y5 Y) s: _6 Z
39
. e( h2 ?7 p, u/ m40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)4 G4 T& c" q  w9 I
41
8 b  B. i: j0 h9 Z, \. p* \42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     ' M  f0 r9 s0 U7 Y: s4 g$ w
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
, d, H2 w. s/ T: M: K! F0 _./host/makefile$ ]0 @8 `: b8 H. i
! o) K; ~! m7 A/ U# b) M* o; w" l
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件
; ?! x: [% n9 t+ y; w/ t 2 objs = $(patsubst %.c,%.ov5T,$(srcs))0 y# _3 }3 p4 y% i9 s
3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug; ~, ^* f8 ?) Z. [# M
4
6 n% p# N4 S* V; v$ l9 B 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))4 f! L) {" z5 m8 }. S% o* q
6 3 j3 U, b2 L7 g6 W$ W& f1 Z
7 all:1 V9 m1 m. U8 C
8     $(MAKE) app_host1 q9 B, V. v+ ?1 o2 f$ E5 ?
9 ( ~) E! ?; @) R
10 clean::6 z/ C2 Z$ q4 f5 L( R  J
11     rm *.ov5T* *.map app_host
( c& v! P7 c8 ], O12 7 X6 J: T8 U7 z$ g2 U& w( @
13 app_host(objs) $(libs)2 p1 _0 X3 t9 [6 r$ L3 T" L
14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
) R' U% g# ^; B7 ?/ Q# P! w15 / n2 \: D4 R( D' n2 Q1 Z, H
16 %.ov5T: %.c
, Y" a4 f- h0 v/ \17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<" g( B; f. i! X) H8 Z" h
18 5 B( y' S( L7 E+ f. n& }
19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t6 q+ ]( ]3 ^6 |# ^9 X8 |
20 AR = $(CGT_ARM_PREFIX)ar cr( u' [3 U' T3 z% V3 w* U/ {& c
21 LD = $(CGT_ARM_PREFIX)gcc
( S' m! c$ y: O% q/ x' E22 " q* G/ D3 \  ~- _9 [* k( b
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
$ j; x2 Q7 P# f+ N5 g- Y24            -Dxdc_target_types__=gnu/targets/arm/std.h" K. R& w& z1 r* |
25
6 J. v0 J+ w5 ~9 I( ^  y# K26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径5 K: }& C4 L$ u8 }6 S, ^
27          -I $(SYSLINK_INSTALL_DIR)/packages                        \0 e& O: t. o3 B* r* P6 f
28          -I $(BIOS_INSTALL_DIR)/packages                           \2 x) G# f$ H9 S6 @7 Y0 J- W6 g, u3 }
29          -I $(IPC_INSTALL_DIR)/packages
; @6 t- u5 Q4 g- v30 ( a- }' X& l' J/ T% k$ i
31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map
$ p' U+ Z# S3 I$ ~" x32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
: a* j# k, ~% C* G编译工程
4 q  k6 d) C! k" ?: O* P+ K& h2 W- j
 makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。
4 X, g# `8 V7 |4 Y: J% a5 I+ R) C) |# ~& T1 w3 R
运行工程4 a$ `+ S" A, n% ?1 |! r6 H
; _; H4 K% P3 X# w
 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。
% t, C7 n# h5 L1 N) S, }; g
0 n, ~- c' f" e, z1. insmod syslink.ko                    # 加载 syslink 内核模块! B* }4 ^) @  a5 [6 l5 Z
2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序* X3 o* f, N/ @1 S  B1 e  X3 P, I  o# R0 @
3. arm_app                              # 运行 ARM 端程序
/ _8 V# J# y. E( U1 i0 a4. slaveloader shutdown DSP             # 停止 DSP 端程序! z* a! ~. ^+ _) M$ S( N
 sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。
# l1 K3 o0 g/ X0 R 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
8 c2 H* n0 o9 x. l  v9 `* Z9 f6 b/ d" L
1 #!/bin/sh# \2 |5 M; D' I. n0 e
2 " c- j+ G! \, ?2 Z6 A: {4 A( H3 s5 h
3 set -x
8 b; U+ d7 X  b3 y, o. P 4 . V* O" Y6 W1 g6 }8 B  q
5 insmod syslink.ko
2 U3 S% Z) q0 Y9 A" R9 z0 _ 6 4 U+ o5 c+ ]( N6 i: ^
7 ./slaveloader startup DSP ../dsp/server_dsp.xe674
3 c: N, b$ S, u- e: ]% v0 @+ e 8 9 x& |% X  [. V" \# p8 ]+ d* ^
9 ../host/app_host DSP
  A/ T  P6 q8 r' f* g10
: e2 |' D* P# B9 j- K8 G11 ./slaveloader shutdown DSP2 p- y) m* a$ d4 T0 w
5 f1 H- g6 o% U5 @  ^% e
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:051 s4 O$ R0 j' y. _* M( [/ q( B" H
建立工程
3 k& [) [/ b3 X, r
! _. Z+ H8 G0 e 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
  m2 x8 b7 \8 e3 n4 T1 g1 z4 E
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- R% C* A8 x7 y5 M" y
建立工程) U4 F7 z" ~7 J& i2 r

1 [- S  A2 W7 r4 F: \3 c# B 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

) B: y' o! ?& `# U  U. ?slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2122

积分

创龙

Rank: 8Rank: 8

积分
2122
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40
; n+ d; E$ J, {# \# Mslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
6 F: b. b/ [! U
dsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 17:04 , Processed in 0.049097 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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