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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
, {, J% y! G7 k3 D2 g9 ldsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
$ Y% Q6 O( w7 |9 X0 c4 Y
3 ]! ?6 b* }( R2 [( t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程* _" o1 d- C# H- E5 y8 t" c: v

7 [$ _' y8 B& ~ 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。7 p- {" W  m% [: L) q$ E7 @( |$ k
 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
+ _+ C% U8 T) I- h& `& Y0 m “清理”过的例程的源码如下:5 U$ s: |5 F0 G' _/ R

1 B- g( K( Q& j! i5 C├── dsp
3 a- P' g  b3 i│   ├── Dsp.cfg$ Q1 z. M% ~0 G6 b/ `5 x8 [+ r
│   ├── main_dsp.c
# Z- G* K+ ^- \' O$ R* |│   ├── Server.c9 e1 H$ S+ G2 K
│   └── Server.h
9 j- O. B  y0 O! D  ^$ B9 L├── host( N. d6 I! j( ~9 b) H4 c
│   ├── App.c
" b* O1 S2 l: e│   ├── App.h! @7 D; |+ k% K3 [; x
│   └── main_host.c/ @0 e$ A3 X! Y/ n
└── shared
- c- J* ^6 V3 x: a+ \  [/ Z   ├── config.bld0 o7 x2 H# k" Y; l- p( @0 y
   └── SystemCfg.h
5 M4 ]9 r& v0 i- s2 ` 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。
2 }  e8 |( I7 m$ F# S" b8 M6 t3 y6 m/ p2 b$ T  c/ _
./makefile; G5 W/ {- m% |. C+ }' @! ~

5 a# S9 \0 H1 I6 C' g3 b: y 1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_050 Q. A/ B: W/ f1 |  f
2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15
" H1 \( i: W9 h 3 + g( {3 `& h# `4 T' o/ u2 m
4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi
% E. U" n. D- E; W& c& A 5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-" g3 ?7 x0 h' [5 t0 ?# w4 m
6
, i% c0 k: O1 ~1 A 7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50
2 Z  q8 t2 T3 e& |" A( L 8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72
/ R1 k. s3 J6 v4 d, ^ 9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
* \: j$ ^, e3 D+ j) Q0 v) {! Y10 4 `+ ?  K8 G  n6 J
11 export SYSLINK_INSTALL_DIR      \
1 ]& s1 q/ e$ D9 b5 a. Q1 p: `8 `12        IPC_INSTALL_DIR          \5 w! C! D1 ?" k  J$ M
13        BIOS_INSTALL_DIR         \
  z6 i  N) t+ s. m+ J4 M14        XDC_INSTALL_DIR          \( E: D( L; n: R; t" c
15        CGT_C674_ELF_INSTALL_DIR \
5 E( y; z8 ?8 j' h5 r" q$ K16        CGT_ARM_PREFIX
+ [: D9 w4 }1 ~# b. E( H- ]17
( j4 |2 C$ V  a3 e18 all:
- E1 r; b% K/ Z& {0 ~' i+ y6 u  a19     make -C host all
6 W/ H( k' X, I/ e20     make -C dsp all
8 W1 j; {2 E$ o8 y7 r. Q& e21
2 I9 p# O) G7 M! g5 d' v22 clean::8 j6 S5 W/ Y1 T1 _$ Z
23     make -C host clean
; v& b0 A4 F+ f6 f3 ?; z! }24     make -C dsp clean' x" j- V6 o; Z( g2 e* j- ?
./dsp/makefile. B3 H. I3 j: x5 S
8 n8 V7 Q# t  f$ b' Q
1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件
  M+ w" i7 D, G9 N: d4 [+ X$ i 2 objs = $(patsubst %.c,%.oe674,$(srcs))
; ?( h* ]2 p; b) k! R7 v9 p* y# \ 3 libs = configuro/linker.cmd' s# C2 {4 }, @4 k) Z
4 9 d& X: B8 E  a, X% z( z& @
5 all: configuro/linker.cmd" b% [; G3 A! g" ?
6     make server_dsp.xe674
3 G! ?' J3 U0 e 7
& y7 t; d% y) B6 K$ ^  N. o5 b 8 server_dsp.xe674: $(objs) $(libs)2 V. R" \/ z- V- I/ T
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
3 M" T+ k/ w0 `1 n$ p$ X10
4 |6 N  q& C- r6 i/ U4 g! N% z( E11 %.oe674: %.h/ G4 r: a* l* q2 H5 Q* r3 F
12 %.oe674: %.c
/ e# D1 E; |8 i* j2 x/ S13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
/ C) H- W/ P( s14
% `% x( ]& l" k5 c2 R- n15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
! G5 ~9 ?+ t) K8 V# m; X! g6 M16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
+ \$ }9 n: T* `; j# b' U17             xdc.tools.configuro -o configuro                        \: q/ J8 ~3 V! |) F1 m" b
18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \
- t5 A9 i/ v7 m0 D% A: I19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \
6 s' T; ^- j7 y' T$ I20             -r release Dsp.cfg( c. f1 P( }) L0 Z; W/ e
21 - f5 y0 Y0 {) V/ r4 u% A
22 clean::" v' F) w! @- a1 ^! X! z3 Z
23     rm -rf configuro *.oe674  *.map server_dsp.xe674
. ?; b) O6 `5 n& K* i* S24 / a* K9 d$ I2 ]3 }) E9 P
25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages! B$ }) Y! R7 q$ d
26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages1 |* x, o5 |; M1 Y
27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages8 D: y) T' e3 o# R
28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages5 o! D: ?/ Z6 p7 q, Q: L8 Y
29 6 F# _  W: O' l2 ]6 ]3 j/ u
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)  B" O4 z6 O) v: P& g5 h" u8 Q
31 : M) w9 k) C5 e9 I; B, T
32 CC = $(CGTOOLS)/bin/cl6x -c                         $ o* P) `: Y/ A
33 AR = $(CGTOOLS)/bin/ar6x rq
8 C6 [0 ^1 V& ]34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi
. j, |/ g+ X; F0 w; i35 ST = $(CGTOOLS)/bin/strip6x
, Z  I) m# Z1 [5 U% @+ }36
$ u9 R" v% s- C, h: N! C) E) w37 CPPFLAGS =; z8 `3 p" x8 R5 J7 N# F
38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)
/ @" Y- Y4 a0 g! o39
, U( C! q, |/ G! M5 p6 y40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)+ u) V+ z* E$ K& Y: ?
41   a8 a8 b3 E+ [9 j
42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     & X9 _' ~8 ^4 s. K( Z9 q
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
5 T' R; O% R4 T0 t) q( w+ j7 a./host/makefile1 t! x3 G& l4 c$ Y
. O8 ]1 N+ ?4 d* l9 h
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件& B; A/ {# Q. @' V
2 objs = $(patsubst %.c,%.ov5T,$(srcs))) N8 K, {3 {6 r% n5 `
3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug+ F% x& _  l* k# m/ {
4 . ?7 P2 z7 Q& K9 {( C
5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))1 y/ w  t7 G* o
6 * C9 a; n7 G- d( b! E
7 all:
+ L; A: W6 H9 m! B" a; y; P 8     $(MAKE) app_host
# U7 Q$ p9 c  u# J# G 9 0 q5 E5 p/ y$ H  B8 f# g
10 clean::; C6 G0 I% V( w! c0 l
11     rm *.ov5T* *.map app_host
# T* D# h/ @6 p3 A5 }! o12
* H: Q0 E& S4 e13 app_host(objs) $(libs)9 ~. q& l* i7 h
14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
& J- \' X; O/ p( |+ J3 e2 y15 # `3 m5 x! z: Y- K6 O4 q# L$ p4 N
16 %.ov5T: %.c
" s  p- x, m8 @2 L' V" P17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<
4 \' R  L3 |& S! U% N- C" W18
  R# ]* `+ W& j19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t7 S$ D9 Q$ I' v  o5 v: X. i
20 AR = $(CGT_ARM_PREFIX)ar cr& @- j& I' [" H& L5 {2 g2 N
21 LD = $(CGT_ARM_PREFIX)gcc
- B$ X9 {% L8 J( u" J9 j& `4 O22
# U3 Z( c$ S8 }2 z' y  K' N23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \  ^  A( {/ @. J$ i3 D
24            -Dxdc_target_types__=gnu/targets/arm/std.h
7 x  Z) I0 h  R6 |0 b0 Q4 y25 # e3 R) t8 N# |9 c$ }- j
26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径
! U6 `: N. V- h) S0 C! n27          -I $(SYSLINK_INSTALL_DIR)/packages                        \
$ {: z' |$ }3 `1 ~* S; _; s0 r28          -I $(BIOS_INSTALL_DIR)/packages                           \
* I5 j6 d0 }: {29          -I $(IPC_INSTALL_DIR)/packages
& k8 G6 `% v3 P) J4 Y. F. s! `% {30
( o( ?6 F; G- e! R' T: o4 B( A0 F& s31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map
9 A2 S, t- y3 P# y32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序# Q/ D  E0 u6 j  @7 v
编译工程* K7 L3 i: n! Y+ y/ U( E
" n4 Y2 v1 Y$ {$ h; s
 makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。( P% V8 s& g+ L7 O1 U  U0 Q4 W

+ S0 I5 g8 S% D7 Q1 A6 }) S( q运行工程
7 \" G  h/ v% ]* i3 @: W. @9 p) q. H% W3 Q
 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。& L' L* |. i$ Y/ ?7 x# p
; v0 u. {! c& v# e
1. insmod syslink.ko                    # 加载 syslink 内核模块5 }2 Q1 F2 |: W; ?" ?
2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序* o" Z0 S  |  N$ q" l3 g- E
3. arm_app                              # 运行 ARM 端程序9 u" P, l& z2 A
4. slaveloader shutdown DSP             # 停止 DSP 端程序3 u$ p: Z. ?5 O9 W  p& u1 G
 sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。
" @+ n0 D2 E2 l) n9 G 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
, \  b) t& H7 n( [+ C
' f: Q" Z8 N) Q$ P2 M 1 #!/bin/sh
1 V) |9 ]2 E  T* G$ d7 p$ Z 2 * }! @( h6 S7 j5 d8 ^; G
3 set -x
; F# b# ^6 l2 [6 Y9 m: ^ 4 6 V% b2 a$ o+ D
5 insmod syslink.ko3 U$ B/ ^0 k/ F/ X* e! C+ F2 a
6 $ a& A7 t. f! j+ ]0 b& H
7 ./slaveloader startup DSP ../dsp/server_dsp.xe674& E2 X# z' s& S' H, I3 h
8   T. s4 j/ ]: x5 G* @
9 ../host/app_host DSP0 t. ~% f4 y! m- A. z; S, h
10
7 {2 z  p$ |" t  F. P11 ./slaveloader shutdown DSP+ ^% [( T2 |) a
, N; ^' L3 j7 o- |. L+ [, p7 d
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:05
4 V- J; o; X; S4 E# y, |4 d$ j! T建立工程' p: l: e  o5 V$ T8 j" }9 u  W
/ D7 a( j: O/ P% F* c
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
3 @3 P& {5 [1 H- v; r( k" \
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
9 w: `1 S# ]' {* `6 C9 r% l& o1 @建立工程
" C1 y* J' o$ Z; x4 i
; ^* D! }5 R) z; G 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

5 t+ l7 ]. w7 l# X9 Zslaveloader 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; Y. M) [5 M7 x4 {& T6 d4 p
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?

' t* R% G/ x5 [% C! W, @dsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 16:32 , Processed in 0.043442 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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