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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
) G7 q, _- b% mdsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。$ C' H: w  N2 c, ]
; n% v% E5 ]  @# C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程
2 z8 F1 ~3 Z8 Y) l) Q% A, q
, ]! X1 A1 e7 e# H% p& \6 g 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。
0 z0 [) g% h6 \  z% V. u 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
$ m* y( \/ f& n “清理”过的例程的源码如下:1 e8 D# ?: u% W. a, A5 s

, b. _3 y9 n: f0 c# B: V* X, H$ Y- @2 b├── dsp
/ Q" n& _. Y& }- L│   ├── Dsp.cfg9 T2 C" L) J0 ~( D8 G1 v3 \5 |
│   ├── main_dsp.c
/ P4 K8 [& Q# F5 Z" l3 e│   ├── Server.c
& Q) ^* a8 b3 Y3 L. f1 R4 w* D│   └── Server.h
& z# O0 ]8 [9 m* E' M- V├── host! W  X& ]- j% @$ A. P9 X
│   ├── App.c
: c" D; ]: B5 h, {6 V; ^7 I' _( [│   ├── App.h2 [& J9 {3 L3 b7 G6 S: B
│   └── main_host.c
7 f9 P# D) Z% Y6 a0 V└── shared
$ F# \  L- L1 h3 l9 C   ├── config.bld
2 o) D3 @7 F2 x# S: z   └── SystemCfg.h4 z9 x- n; N7 T5 e) V9 H
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。! W. q( F- H# j
- d4 E& M; z4 [  ~
./makefile8 J2 H! R" f9 Q7 v% t& T& q/ l
0 [+ O1 r" c( Z2 I
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
1 y( F( Y2 {" L) ?/ q 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15) u' I! y5 \1 x% d# I2 o% s" V
3
( I" j/ a3 o' q; x" Q, Q 4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi4 I2 J) X. G( I& N9 w7 j7 u, w7 D
5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-
6 w; X9 M' f' y! j/ B5 ~ 6 , O$ M0 p- a! P4 C- Y. O
7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50
8 o7 p1 t" N' r. M, N( j8 s# o 8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72
- ~9 J0 ?( m+ w3 T6 e 9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
& ]: W/ s3 F4 q' d8 e  A10 ! o* k7 L4 s& |$ K9 A+ C6 P
11 export SYSLINK_INSTALL_DIR      \
, P% h5 m  N: S. a) L& k' {. \12        IPC_INSTALL_DIR          \
; `# P5 ]: g. g+ H/ n& `3 S13        BIOS_INSTALL_DIR         \! \1 r2 o) a" I# }  ^% e6 k
14        XDC_INSTALL_DIR          \! ~$ s# [4 k# y' Z- S
15        CGT_C674_ELF_INSTALL_DIR \
! i$ j! \8 r( @. R7 F16        CGT_ARM_PREFIX
! P, Y  {0 P. N/ B17
$ N: }1 N8 R& Y+ A& i0 j2 }4 f18 all:
, \; z) F: k1 X% f19     make -C host all$ H& V( m1 z  S# P6 \$ l
20     make -C dsp all
4 |" F+ ?5 E( H6 ?21
4 T7 k" G/ W% K  r22 clean::
3 P! v& c' z5 B: z4 g9 T# R23     make -C host clean0 E3 D0 B6 o3 M/ D' H& M
24     make -C dsp clean$ i/ d9 M, |4 E  c7 T& K  V) ?
./dsp/makefile
2 m' }' I3 a+ i$ @) M" J1 o
. U- b9 b- v) k2 V6 t, x) ? 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件
$ J5 C9 l+ t. P3 U8 s3 n; m 2 objs = $(patsubst %.c,%.oe674,$(srcs))( i0 a& M1 O4 |  r4 ?0 \( U! f
3 libs = configuro/linker.cmd7 ?, W9 k8 Y0 z: `' u' i
4
. ^" X7 ~/ Y8 p" X  v+ P 5 all: configuro/linker.cmd
3 ?8 E  d% @8 Q2 N7 i 6     make server_dsp.xe674
7 K& t* Q& z$ z% _7 \5 g1 p 7 3 o8 u1 g! _7 A3 R( v
8 server_dsp.xe674: $(objs) $(libs)
) l2 Z( A* j$ e" o- u& w 9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
! U& w6 P( @1 }$ e6 A10
7 {' t  U6 H$ W" f11 %.oe674: %.h1 `  ~8 v1 {. K0 `: U4 T. g
12 %.oe674: %.c3 `' X0 h2 V1 q% L
13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<% ~" O* |* o+ w9 A  h& V2 ~7 X
14
: W0 P, G) Y/ s2 a15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
$ ~* R/ p* L! ^- u2 ?16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
. U4 j2 K6 f+ [4 z1 i: e17             xdc.tools.configuro -o configuro                        \
, k9 g* x  {# p4 r& C% J3 @18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \
0 I( W: h) R. A6 K5 @" d9 G" H9 Y19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \
& S8 K/ S0 S" b20             -r release Dsp.cfg7 ]8 H: T, l, U& B0 ^
21   A2 @. C# U7 \. k0 E  Y& J
22 clean::  @1 y0 b  {8 u
23     rm -rf configuro *.oe674  *.map server_dsp.xe674
9 Q7 q% Q, g' P/ u" v24 * g, q' P4 R* j9 J2 h: ^
25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages
) Y, H1 y) X9 [& n3 z) M5 n: ^26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages6 E" t5 g8 F; g+ {9 V* O# G
27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages2 M5 U8 ]6 C$ [# l
28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages+ U- Z/ `, ^( N' c$ o5 L% C) i
29 9 ~( }% D1 A$ j" b
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)
- d6 B! p# X1 m4 s  e& @& }31 % q3 G7 H& ?  L) I7 X. N" k
32 CC = $(CGTOOLS)/bin/cl6x -c                         6 n0 p  e; x$ K: t$ I+ V& a  D
33 AR = $(CGTOOLS)/bin/ar6x rq
- H1 {* l, G0 Q) A3 V2 B# M6 m34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi
6 C0 w3 M! @' \! F1 D' o3 ]% s35 ST = $(CGTOOLS)/bin/strip6x
" X2 Y8 C0 @: X# X; t/ V, T% X36
: b! B) `/ z3 ~( X: E7 N, H, h: \# s37 CPPFLAGS =
; i' y* g/ G0 i' e4 {) Y38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)
( S1 g& Z7 T4 c# H, U( H- q8 ?39
  k. p* ^' b* o% w40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)
+ q2 X2 ~, C2 D. m7 E41 1 |; t8 _) x* N
42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     ! V- U- E5 X, H' e
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
2 ^; e2 @3 \, k/ E+ K./host/makefile( C: t$ E% i# v: y' q

  ^) G" X) _/ p0 p$ W+ ?4 J* D 1 srcs = main_host.c App.c                       # 在此加入 c 代码文件5 n1 I* y$ ~- a
2 objs = $(patsubst %.c,%.ov5T,$(srcs))
% f' \, w3 j2 l: W 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug& w& ]) L# R1 X/ b! C& d
4 # |( Z( R$ V4 ?+ l4 L7 _
5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
9 j5 n0 l! S. T+ k 6 9 b) F$ g1 G7 ^$ `; `/ H
7 all:2 ]$ `+ y* L- C3 E
8     $(MAKE) app_host1 g) B$ I0 c" y& P3 v% o3 a
9
0 V; K9 l; ?9 j7 o" ~10 clean::& N# X7 n- E; R, c" q% \
11     rm *.ov5T* *.map app_host# l6 M, \( ?0 c, I
12
$ X% h6 u3 o5 N+ Z  N0 p13 app_host(objs) $(libs)
4 E/ [  b3 y; I8 S" z1 V14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
+ N! n# J% G9 J3 J15 ( C2 U; A6 [) R
16 %.ov5T: %.c
) G) p, V% l+ Z+ [$ N17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<# e$ ]: M. Y4 F: A( F2 R$ p
18
0 k7 _+ ^/ O9 Y" M3 W( p6 E3 x19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t1 a8 D6 m% w) D9 Y# a* d0 @
20 AR = $(CGT_ARM_PREFIX)ar cr  a7 u( ]2 ~6 X5 D, S' o4 v6 U
21 LD = $(CGT_ARM_PREFIX)gcc" V; }; h8 f$ I9 k; q# `* l
22 0 G+ K* v3 F- n# a1 O' y3 r5 H
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
; l7 h) s+ i; u' b+ X24            -Dxdc_target_types__=gnu/targets/arm/std.h" L$ ?" t6 N. V- s* ~
25
( @. d% ]% T* f) s26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径
1 S4 l- V9 O* z1 L; c( Z' M! a27          -I $(SYSLINK_INSTALL_DIR)/packages                        \- A$ W: x9 J. y1 V; M8 t  j
28          -I $(BIOS_INSTALL_DIR)/packages                           \
, u. z4 C( F0 M% [3 ^$ b29          -I $(IPC_INSTALL_DIR)/packages( S( H$ Y  z! @8 w
30 % y8 V9 p6 C% I3 C$ B* _
31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map* B4 A3 ?" b* [# [; D( K0 F
32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
# D. i! b8 k) P5 V6 q编译工程7 G) {' p* ]) u  V0 T% b

! d( F3 h1 S2 q) E4 g! X/ g7 e makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。& s- @3 Y: U& Z) i

4 v2 c1 V' A6 G& O运行工程
" K5 J7 ~' E6 U
3 P, m7 |8 B- k* ^, j 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。
3 ?& |7 X  A- A' I2 d
: h! s0 Z0 L1 u8 e! W: ^0 _8 u1. insmod syslink.ko                    # 加载 syslink 内核模块
5 h" n( t( L3 G2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序' A# P- U( P0 W  ~% Q+ O1 f2 r' h( ~
3. arm_app                              # 运行 ARM 端程序
8 r0 y+ w5 H, ?7 A) p+ W1 N4. slaveloader shutdown DSP             # 停止 DSP 端程序
6 e5 K4 k: n% [3 F! ]: F/ Y! q( X sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。
1 T/ [  z0 O* X" y: ?0 T 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。1 \3 j9 {. j% Y( _1 _1 m3 r
6 a" K' Y) `0 ]
1 #!/bin/sh, q* T1 y6 h* c( A% _9 F
2 0 Q& R5 u7 Z" P( q
3 set -x
. d6 w9 C9 c0 v! Y7 { 4 2 Y0 X4 g6 o, _4 d
5 insmod syslink.ko
  C6 O" i9 f3 H) e 6
# g+ U  F) k- U- M" ?- @ 7 ./slaveloader startup DSP ../dsp/server_dsp.xe6740 d" G# l+ _# l0 O4 e
8
( [4 V  S% z0 f 9 ../host/app_host DSP
1 y) q0 E7 F% @; |2 e7 U1 H10
% ~% g$ `$ Y, {0 q, D11 ./slaveloader shutdown DSP
, V2 n% Y# O; W; l7 U1 M) B% i/ M( U# Z
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:055 `$ a6 K& _5 O' j7 C  {
建立工程
$ X3 G! Y0 R! s9 q7 c. w
+ }3 ?6 g! d7 u& Y5 O 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
/ ~- }) S  d& X
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$ Z, o4 k/ x- [$ q6 [1 ^+ k( G1 F
建立工程
  I4 o" D# ^( y5 O( ~9 e
% N8 p5 I- N9 u1 L; _) }8 Z; X! A4 q: B 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
! `7 P) V. n1 m* n0 }8 Z
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2190

积分

创龙

Rank: 8Rank: 8

积分
2190
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40
! s5 h9 H) e0 V$ [slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
  A# F- B  H# o
dsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 02:39 , Processed in 0.043517 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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