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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,/ Y! L5 w/ N8 g$ ?) g! l% x
dsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
- ~  F$ {) K8 p1 j, h+ I
' x+ L. O* k' Q& }* P4 n+ w. B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

113

帖子

2088

积分

创龙

Rank: 8Rank: 8

积分
2088
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:405 r, K! C! E7 r8 L/ s$ `- \7 S
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
) ~$ }6 B2 ~, G$ y# O& `; M3 }7 R
dsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
5#
发表于 2016-6-15 16:40:40 | 只看该作者
tenny 发表于 2014-9-19 18:05
* i$ r+ |) C8 T$ D建立工程
0 d, Y# l3 E& Q/ e2 @* M8 y$ Z' U. Y. p6 A( E+ u
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

1 S9 ?0 W- |# V+ H) U8 _( Rslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:05
/ _6 F8 X4 y% J) c' ~建立工程
. R* \, `) o% ]/ m* I% n# f' e0 w; A/ U7 f/ G6 B. D# J7 e3 c
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
6 w" ^7 C9 I9 Y+ H. G, J6 y& n, R
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程
/ ], ^/ @$ T% a1 H8 ^% P, }7 A
5 n% i$ f; H# n2 W! @ 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。" Z: U% v0 Y4 A  x4 _! e) S' z, ]
 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
5 M4 y1 L8 A7 ~5 D “清理”过的例程的源码如下:6 i) N6 f' M! A% [. j4 p, u2 q% j

8 O- l' @4 y2 z! B# j4 w├── dsp
/ F5 r  g# c$ C0 t1 P│   ├── Dsp.cfg. U( Q4 Y; V+ _, B+ Y
│   ├── main_dsp.c# `/ @; d, K* Z5 j7 [, D" @- m
│   ├── Server.c& L, L& {6 m/ a: F: E( a, w
│   └── Server.h
; T6 U: J5 k2 J; ]2 g4 d├── host4 F6 o9 x) z: u  M" p+ R: f' w
│   ├── App.c2 J# @: Z" q- \" E8 p# x2 A0 d) y
│   ├── App.h
) M- L4 [0 W0 ]  l│   └── main_host.c+ s: L0 |& ]8 x/ G
└── shared
  P4 n1 u& x0 h   ├── config.bld
& L4 y$ v# C- X; w6 V# M5 k* ]( |   └── SystemCfg.h! _: H4 N4 Y; ]7 T" D+ R7 y7 {
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。9 }4 c& @2 {, H
/ `2 h, t6 D6 `, K
./makefile9 n# E6 {: ?1 h6 c" @( q

. U. J( o* S! I# C/ X( a 1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
" J* A( ?& N2 P4 |4 b! D0 ^ 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15& a% O( v9 Y9 H3 P" {! P
3 - `% V1 i4 H' Y
4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi7 D) x% r. H$ _" w$ U7 h
5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-5 j4 G1 T- F3 ?3 `: s& W4 U
6
8 X: @9 \4 v3 y* P# w5 q( n  F 7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50
8 o5 K0 T" ]; }  B+ M 8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72
: o! T: U% G6 a3 I0 Y* U 9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
' N) Y7 c8 e, N, s+ ]. L10 ' d( w: G. M' e. A# z/ V
11 export SYSLINK_INSTALL_DIR      \
" X  e5 O% ?, N- F- ^7 m" C12        IPC_INSTALL_DIR          \# n4 ^. A* {8 R
13        BIOS_INSTALL_DIR         \
4 ^( Y, x1 \( C14        XDC_INSTALL_DIR          \) z0 W. G  X' ~. ~
15        CGT_C674_ELF_INSTALL_DIR \1 t  }) F. T/ z
16        CGT_ARM_PREFIX6 t. r4 c5 q1 r3 _. e
17 9 z, P. Q% U4 W8 p5 k
18 all:# v2 Q$ d0 j  q- v6 |" Z4 `$ H- T/ B
19     make -C host all0 y7 L; v% O: u8 a) e" z5 U2 ^
20     make -C dsp all
( i. p) h7 V( H( c, Z21 0 w, u; ~8 z  Y9 {; L
22 clean::' Y! K- e! A4 L& }; J) x( d
23     make -C host clean$ w. L+ C; d) v3 k
24     make -C dsp clean
$ L1 n- u0 _& b, S( x$ \./dsp/makefile+ f, J. ^1 l3 V. ]' J2 O
5 S/ E- P3 B6 j7 J+ v
1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件. w# f) y* J; b+ M( ~  D
2 objs = $(patsubst %.c,%.oe674,$(srcs))0 t* \8 b: q" h1 C3 K
3 libs = configuro/linker.cmd+ o/ n  Z7 L- V# w5 o/ z+ s( H$ ]3 U
4
& @- A, u; R6 d+ h# Q$ y1 r0 m 5 all: configuro/linker.cmd. N: w: W& W% A0 K% Y- D
6     make server_dsp.xe674" E3 W. `. C  O
7 / c* E" U+ D3 u) K4 l( d0 g/ O
8 server_dsp.xe674: $(objs) $(libs)
2 D% m" v1 |1 X' _# ^ 9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
0 ~! a/ A% Y, l2 p  K$ i10
# W# |5 r2 v# q; [11 %.oe674: %.h1 m% [8 k3 j' H: M5 i
12 %.oe674: %.c* X' A5 J2 F" ~
13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
2 p2 @1 J- C1 V14
3 u7 g9 D$ L8 d15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
8 ]7 U- h# d1 i' J7 z$ }16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
9 Y: Y* u& x5 Q) L$ [% f: u17             xdc.tools.configuro -o configuro                        \
5 r  O" i6 H9 r$ M& L( m# Q18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \
& b  U" B) V; a! m19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \& G  \4 s9 u' `* m3 U. M: H) R
20             -r release Dsp.cfg
' \  e# t! k2 A: c/ t21 . y9 R( w9 J8 e
22 clean::
8 E! [3 q5 U3 _% q0 V; @4 _23     rm -rf configuro *.oe674  *.map server_dsp.xe674
( ~# X# S8 G  k0 D% u# V24 1 N2 o7 _& W  `
25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages
4 i& A+ A7 X( ^" t1 I6 I4 w3 P0 I26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages$ M& E- r# ]( S2 c8 `( N4 e# X
27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages* j# e5 [# o: |- _1 Q1 g
28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages% u0 I$ O6 y$ U: l9 C3 S4 _: K
29
3 h( W2 _, Y6 ?2 e9 e30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)9 y% |$ R+ X8 H) R# n
31
$ i% @9 F4 @$ ~1 N" m& s32 CC = $(CGTOOLS)/bin/cl6x -c                         ' g' t' b, `* Q4 F4 a
33 AR = $(CGTOOLS)/bin/ar6x rq& x6 e0 f) f; h5 I+ \
34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi
8 y* l2 Y8 \# c- c& G35 ST = $(CGTOOLS)/bin/strip6x
, {3 W! @  [" ?36
& r, ^, o3 T& y# v37 CPPFLAGS =
/ \* _$ D+ i& W# p  K38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)- E5 X+ t2 S' f, J* ~/ ~, F
39
& B7 l& E" i. a' y- P40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)6 }5 `2 W7 L. N; x* V
41 1 `; ~$ R% _( p& z
42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     
2 r% @( s  ?6 u3 o  @43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
% E  `2 U" M2 {  d. Y./host/makefile
" V6 N- Z2 j4 |8 N- M. a+ P! R7 z: R( q& k* B" e0 \1 ?2 S4 \
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件8 b& B# |0 [* |# |
2 objs = $(patsubst %.c,%.ov5T,$(srcs))
4 a+ j5 L) c, ^. m8 v5 W( x 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug1 u+ p: G* F& {- W, f, x( N
4
; T4 \% E2 [/ c$ h# r 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
) k7 a/ p  ~9 T1 D) U+ V/ R 6 3 r& f9 n! d8 n$ j( m  S
7 all:( W# W& Y/ O3 X9 ]; O2 I* s
8     $(MAKE) app_host* b& x* m6 ?; w$ v3 R1 @3 c3 u$ w
9 4 V7 j* {  v8 w; ~& P2 Z
10 clean::2 Z; {4 n9 z& N' ~8 S- P
11     rm *.ov5T* *.map app_host" u  K( `3 o3 ^
12
; ~4 p" ^+ X/ C0 m, r% _* i+ d13 app_host(objs) $(libs)
' d9 o2 d9 D8 }4 V/ |3 W* {) @. T14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
3 S4 B* F3 S5 w. {  `, v2 }15
; J; h1 v& P' n5 J+ ]6 q16 %.ov5T: %.c
; {0 [6 j( ~7 b5 L17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<
4 D# l  m; v. ^) A18 ; [+ T5 ~$ Q$ w# N# \6 q5 E" ^
19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t
/ R1 U3 e. x  w# D/ l20 AR = $(CGT_ARM_PREFIX)ar cr2 A! `  Q" ~* J! o4 T& v7 R; C
21 LD = $(CGT_ARM_PREFIX)gcc9 w1 t) I! H$ L
22 : n% t8 @- b* ~: D8 D7 i9 {
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
$ k/ C) m2 Y- P3 ~24            -Dxdc_target_types__=gnu/targets/arm/std.h
! w' t- A7 s; H% A, d8 C25
' Z) l! E$ @# L0 G$ _$ u' E26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径
! s4 N' O# y9 \$ b9 s/ z# k3 W7 t9 S27          -I $(SYSLINK_INSTALL_DIR)/packages                        \- H5 r5 t3 T  I; o$ R2 K7 B9 }
28          -I $(BIOS_INSTALL_DIR)/packages                           \2 G# g5 o$ {, G3 ~9 |. `
29          -I $(IPC_INSTALL_DIR)/packages
4 j$ Z7 l' e" g( n30
/ S2 ?! H* q8 h1 `: e1 i- F31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map
- @  M- ?9 a) |) [& f+ Y32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
& y; R6 W% Y( [4 o) m  m编译工程. Y4 r. K$ V, Q+ Q
/ C  r8 G6 E5 S7 ]
 makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。3 L& G2 [6 D  v) d5 P+ Z$ P, x! Y1 L

: \1 c) T+ g$ [' D运行工程1 T2 S7 a: w/ V1 P

# R" K9 Y9 a* l, S 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。& C+ Q- b5 I3 W
. J3 y( u) T3 R1 m3 V1 g
1. insmod syslink.ko                    # 加载 syslink 内核模块5 y  u: C# x1 e+ M6 b; Y( }0 J
2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序. G% T- t  L$ m  L  S
3. arm_app                              # 运行 ARM 端程序
. u4 Q3 S6 B  v1 f% f4 b4. slaveloader shutdown DSP             # 停止 DSP 端程序8 }# ~3 {# E2 k' y! ~% G4 u+ f: A6 V" X
 sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。
% y" y: f2 s4 m- N+ I8 O) K0 J, C 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。2 m( a5 ?; K. |( o, M# F/ D

& f8 R) |- j  I7 L+ o: H7 Z 1 #!/bin/sh
! Y3 B& T: b8 R8 T( Z4 y, r- g7 | 2 * J+ a. l# W# H" |2 E! F
3 set -x* w1 ^; h( V6 h4 {/ ~4 u4 o  f
4 ! t. Y  r; Y4 N# w, f# F; o
5 insmod syslink.ko! _5 i4 ~# T' s+ A
6 3 `, }# y/ u. U& _- M+ L
7 ./slaveloader startup DSP ../dsp/server_dsp.xe6746 H) I5 j4 K! `- k0 B
8
$ y  W+ l4 V% y. Z1 M 9 ../host/app_host DSP+ m* y7 K$ U2 X' P2 o+ v( ?6 T
10
3 _/ j& t; _) x! m1 x+ d) Y  F11 ./slaveloader shutdown DSP: P* H: A* o& L9 R3 H7 x
  K8 @, p1 p* A/ m. Z' {
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-15 09:16 , Processed in 0.042115 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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