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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
* D/ q$ T! D3 E7 b& tdsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。- _% U; t* T& E! w3 \, k. M

1 N7 i  O: v; `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
推荐
 楼主| 发表于 2014-9-22 09:33:09 | 只看该作者
Dsp.cfg,  config.bld,SystemCfg.h这三个文件感觉不太好修改。能给推荐一下怎样编写这三个文件吗?' @8 ~7 M+ M5 B6 I* v+ J! p$ o
回复 支持 1 反对 0

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程
% f# ]# y, Q9 |7 F- m' f
) O2 `1 c/ D4 Z' x- p2 p 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。
( y0 S9 ^8 E& d4 ?0 Y 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
8 R# L8 O" U7 u3 @7 M “清理”过的例程的源码如下:4 m7 Y$ y& S+ h" N1 }6 B3 b

+ s  t+ A$ |. ~( `* x# u5 @7 K├── dsp' c1 C- e# A+ N0 n" ]8 L7 S7 w1 y
│   ├── Dsp.cfg' G8 h+ O2 U- A6 `2 ~
│   ├── main_dsp.c
. F1 u6 C' V# q+ }- Q' e│   ├── Server.c
. V& c) e7 a; ?1 u8 z│   └── Server.h
& }6 ]/ ^  P4 S7 D- @1 r├── host
) R5 D' f0 O( j$ Y( f1 W! B: e│   ├── App.c% g9 D' u5 G6 x2 M( |3 P
│   ├── App.h
; W8 a6 `) `, M- {5 |* f. r2 W9 ^│   └── main_host.c! F# r/ D$ y7 u# H9 n
└── shared
! r, s+ e$ V  \; I$ T5 X, P   ├── config.bld
" ~5 ?" p) N& N- a   └── SystemCfg.h# [+ D, z% C2 s; O" y. i. S
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。
/ S  A( v, }) o! j
/ z6 g; ?, R; n2 i- T6 i5 j./makefile0 S8 z/ ~& j& X, D) t3 F" u+ i! I
7 Z; w; J7 M/ A: }
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05  G& t. F/ ~, _, [3 g/ u/ j
2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15
( L$ ]0 @+ e- g$ X5 Z/ c( G( p, w 3
' j% T+ g5 |: t: }% `+ m0 o+ l# `8 }! B 4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi) I' d1 w  r8 x( R2 i
5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-$ X' u3 T7 i2 e
6 5 p% @; v6 w% @2 n3 }7 _
7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_502 I- X+ ]2 ~( M0 \+ F
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72
* g) i7 v$ ?) R9 _  N( ?5 ] 9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
( r# l5 k1 j& b10 9 P4 {' x% q0 W; ^+ w
11 export SYSLINK_INSTALL_DIR      \
& C' O3 W' Y- y9 x3 {) g12        IPC_INSTALL_DIR          \
, i) v0 u! Z7 ^* o13        BIOS_INSTALL_DIR         \+ v3 T' W/ Q$ N9 T5 k7 k8 |9 `+ `
14        XDC_INSTALL_DIR          \
4 f% Z4 w: y% x( [. M15        CGT_C674_ELF_INSTALL_DIR \( y5 z  u  t" s! o# U& X. n8 x
16        CGT_ARM_PREFIX9 ~5 r! |. o( g! D2 ~6 L9 y1 L
17
+ A" C( S: F/ J0 |18 all:
* B) m  K( L! r8 i/ w19     make -C host all1 Z. p; u% R% k9 `1 g( k
20     make -C dsp all
8 t' s7 G  L$ W' R- Y# S, U21 ' g) F' X) u/ B2 i# ~
22 clean::
  r  s3 _  }% H5 l1 @' s8 k- h2 t23     make -C host clean- A: a) G; b8 J- @. J$ t' Q
24     make -C dsp clean( I9 Z* t  m- w: s  H
./dsp/makefile
6 `- |* V3 U: H
/ U8 q4 {% B# r* b0 _ 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件$ c$ H* o8 |8 i. {
2 objs = $(patsubst %.c,%.oe674,$(srcs))* O7 J2 E* R: D
3 libs = configuro/linker.cmd
8 M& \* K/ e2 b+ I0 s 4
0 \4 v' O7 S) T& L/ @! i 5 all: configuro/linker.cmd  C  l  u+ L" V  @* f) l
6     make server_dsp.xe6748 g) k# G" ~9 ?4 A5 j' k
7
4 J1 n8 w3 p1 u  @' I! ? 8 server_dsp.xe674: $(objs) $(libs). [9 \% E7 ^& r$ N9 S. Y: n
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)" I: }* `4 a$ X; h# }" X; U8 p
10
3 V5 q: E2 V7 g4 P, s11 %.oe674: %.h8 c; E( }. b! @. N) ?
12 %.oe674: %.c9 F& C6 `9 i% a4 Y
13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
% U9 x8 a: G0 j; X& x  d' T8 w14
% j: x; ^6 f& |7 X6 R15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
: b1 K# e% p# p$ P2 m16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \5 b) M! a  v: t- e- |" q  y
17             xdc.tools.configuro -o configuro                        \+ `. x; }* T# K2 O) y# m; \3 H: N) H
18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \1 c9 X* j8 a' [9 [5 _  @4 e
19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \
7 C% \1 p1 b8 g3 ^20             -r release Dsp.cfg% B! @! W) |0 i+ E& i
21 0 Z! t, N7 ^1 o! z
22 clean::
' U1 K7 |2 s- h7 l9 ]; r' V23     rm -rf configuro *.oe674  *.map server_dsp.xe674% j/ `6 L6 _  F6 \' ~7 l
24
. F9 S* @0 J# O25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages
6 n, |$ M! Q( d: S/ \; ]26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages% p3 e& ~4 n6 \6 E0 q
27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
. Q. `5 ]7 H! `5 ]1 A: i2 s28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages! f- f9 o0 o' v1 H1 i! @
29 $ a  P4 q2 {" ~/ O
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)
9 ?4 Z% j: a5 o: y1 S; d3 l. `5 w2 h31 , T- ~; b: m% [% h. n
32 CC = $(CGTOOLS)/bin/cl6x -c                        
3 |0 A; k6 d& f33 AR = $(CGTOOLS)/bin/ar6x rq- x' W9 B2 c/ M) J5 \, l4 n) z/ p
34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi- O. x, P8 o, ?" O' q, |6 c
35 ST = $(CGTOOLS)/bin/strip6x
/ }5 d$ U, t' C4 C0 i  k36
. `) c+ g) j% O, H& P' S37 CPPFLAGS =
7 D/ |: G9 v% K38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)& X! T5 C4 y0 f7 k! ~' m
39
" x( Z2 k% ^2 i. v7 m" g! R; p  z0 @40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)1 J  L& ]5 V" e  u" v
41 4 o6 h: Z" u# a6 P; L3 Q5 \
42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     
) K+ j* _* y9 R; }& @! n! D43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
3 v! y  V4 c$ d9 b* W4 v! b' X& E./host/makefile* J% Y' P4 n' R" V4 O

' L0 [+ w' I* F, v 1 srcs = main_host.c App.c                       # 在此加入 c 代码文件! {- q; H$ J# c! p5 N
2 objs = $(patsubst %.c,%.ov5T,$(srcs))
: W& f3 u5 U. g" }4 U3 R* }( Q& D; q4 d 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug, |) \" b# M6 [9 [1 ~" r- R
4
5 w3 o% E5 |9 G) @7 i7 n% ^- f3 W* E 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))5 W* x6 p, Q7 v& ?
6 9 B/ S4 F0 T+ M. I/ `
7 all:
. h0 D6 F& |( Q 8     $(MAKE) app_host
2 k0 i( {4 h4 h 9
* W! q5 U  b6 }# c1 j+ C4 \10 clean::
4 N" C& g7 w% |5 L8 G11     rm *.ov5T* *.map app_host4 k& p5 x( ~! S
12 0 A! V$ Q& R( h, O+ [4 l
13 app_host(objs) $(libs)
3 A# I; ?) O" c14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
# |' {- F6 h( v) b* |; V7 W15 & W/ V* b) x  T/ f
16 %.ov5T: %.c- x! r! D1 Y# s: `- Q0 C
17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<
6 r6 n4 q+ k& n! Z3 \18 9 {) v1 ?  f# |$ T  I
19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t1 ~' V; W" P& n' P5 }
20 AR = $(CGT_ARM_PREFIX)ar cr
9 j- p+ Z. G" A% ^: r$ X21 LD = $(CGT_ARM_PREFIX)gcc
, I/ f" r5 f, ]22 4 j7 A4 v' R9 z$ P. J$ w
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \* A0 r) O$ C2 n+ G5 c( m1 q
24            -Dxdc_target_types__=gnu/targets/arm/std.h! m$ k$ u+ @6 d4 Y4 v! r$ W! j: W
25
2 B' T" t  ]: ?3 i9 Q26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径8 e5 [* V: Q! E1 I% F% h$ _
27          -I $(SYSLINK_INSTALL_DIR)/packages                        \
6 b1 N9 ~. }7 {# j0 W28          -I $(BIOS_INSTALL_DIR)/packages                           \& B" {) p6 }/ Z9 ~& T" G
29          -I $(IPC_INSTALL_DIR)/packages
6 g  d) v2 c) _4 _30 ; y! W+ W$ z  n! V# x$ C
31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map
/ V7 |9 b: G# E, t32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
% x* f( w7 \3 f- D8 u0 i编译工程# i: X# q; }- F

/ i- E. t2 u# T; E9 Q makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。& ?+ r, {0 C3 f2 x$ H9 w  y3 T
- ]- y  B9 F% R- X( a3 a' n
运行工程) [+ c7 a1 j9 u7 I
7 ?  ?5 Z) T) }+ {+ Y
 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。6 c5 n* c' {" o6 g
% Z6 J* G8 s; E% l2 Y8 T
1. insmod syslink.ko                    # 加载 syslink 内核模块
0 ~0 O' u& j$ [; t6 M3 M2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
: g9 A; w! f0 s3. arm_app                              # 运行 ARM 端程序; c) c) _' \" C* i$ _/ y
4. slaveloader shutdown DSP             # 停止 DSP 端程序- O# B, Y7 k: B: N9 ^
 sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。
: n7 g1 ^. _& _! U. C0 F  }: B3 Q 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
' U  }3 A6 _1 g) O/ X6 v+ {( z/ M" W' D& e) e
1 #!/bin/sh
# T$ S) U( ^$ |9 i 2 $ F( ]' ^! m! k" |& }  j* f& |
3 set -x8 E0 ^, A* Q/ _( H. X& c- V8 l
4 8 P- N1 G6 b3 e) l6 x( F
5 insmod syslink.ko6 Y. y$ ?' f5 `0 O+ x" E
6
2 g, X. S6 [! u4 \% T1 U" h 7 ./slaveloader startup DSP ../dsp/server_dsp.xe674
; F% e: `3 W2 Q2 u& f2 z, `3 F 8
4 y" [8 G: b0 Q% F 9 ../host/app_host DSP
6 `) m$ ^2 C( _4 i" u- ?' y10
/ `' t+ c5 P0 }$ f9 w1 R$ j11 ./slaveloader shutdown DSP
8 `* ]/ j% i2 s' M/ d$ Y+ H
1 S$ d' H4 Q; U* d+ b
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:05
. `% K8 L- Z' R7 ~/ y: b建立工程
) F- ^, R+ o8 {+ `( M9 P
0 M' T1 k' {* j# a! x$ r8 G1 c 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
2 d1 u  l5 c( d1 u  z
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
( k6 d7 P: B  D建立工程
3 [" g1 y) b& K1 N( C. X0 Y
7 T3 A! |) n3 ]  u: X! T 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
: N% d$ N8 G: M: C4 N$ p5 o
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2196

积分

创龙

Rank: 8Rank: 8

积分
2196
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40
* V3 I8 @# {$ L( @+ t! r" nslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
5 U# I# }# t& h% u; A
dsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-3 10:43 , Processed in 0.046542 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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