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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8571|回复: 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" S/ m4 F- c; edsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
3 H( k3 \' b" T4 m! J( H7 w. B( I
  h. e% K( v' T; |# t3 E4 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程
- e6 x, v2 _( i" N" k! _
) P  g5 M# s4 I% ~7 V7 |: U- Y0 w 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。- g% p/ ]. i' v; c) |
 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。4 l1 ^9 \8 t- k/ l! |0 C+ s& d
 “清理”过的例程的源码如下:
; f- {" ^( j; o/ d8 b3 U& k+ {- Y6 q& @4 ?  I$ d2 N( [
├── dsp6 }8 u0 @" `# J0 T. c, b' h0 Y
│   ├── Dsp.cfg6 x$ k9 e+ Y7 T: [
│   ├── main_dsp.c& D( X" {0 I% }  S0 _9 c
│   ├── Server.c) b' f/ m- `, s0 K7 ]8 s* ^
│   └── Server.h
8 F  E& C7 S, r  E8 i" U+ W6 D├── host0 B& ^+ Q0 Q1 b7 d1 t8 u1 g( Z
│   ├── App.c7 c9 t* C. s' \8 Z; e: e2 k
│   ├── App.h& ]* e& x1 v- }: i: J
│   └── main_host.c+ s2 ^5 q2 B5 k5 m% ^
└── shared( A* ?! N  T+ ]
   ├── config.bld
" [% t: }9 ]) b. D   └── SystemCfg.h8 Z: O9 Q; h/ [: |! f) u
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。3 m% p2 w0 _; H$ i4 B

; T& i7 A5 x0 A6 g9 t2 i0 j/ T./makefile) C# E6 T7 \$ l
6 ?6 m3 Y, k4 ~* k% G3 a
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05" _7 E$ N$ i' N6 Y9 q
2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15* L7 u0 C! }" q$ H( `- o
3
; M9 T8 f; @& w 4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi
( p- U$ {: [; @8 ?& h 5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-' s0 Y$ G: K$ g. j1 }% x+ t! V
6
4 ?* }) h7 j' n  o 7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50, n$ ^/ \' r! D- p  \
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72
. c1 B; v  a1 X( P( D/ C 9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
4 x1 M9 K* g- {$ n$ i- v0 z10 ) L" R$ N) D4 R, w1 X: d7 s7 J( d: G
11 export SYSLINK_INSTALL_DIR      \; m# s4 z7 H/ L/ R$ Q* B' T
12        IPC_INSTALL_DIR          \
$ J6 H2 c; W& S" W, K13        BIOS_INSTALL_DIR         \
" W: D) d1 W/ k- C# n  v14        XDC_INSTALL_DIR          \
6 i) o# k1 k) Y+ ?- l15        CGT_C674_ELF_INSTALL_DIR \
. R/ C# g, W* ?+ Z* k16        CGT_ARM_PREFIX  ^1 [9 h" X0 `+ U& e3 s" p
17
- S( F+ l5 Q4 \' C0 ~1 ]18 all:' c4 D) c' T! ^% E0 |. b/ k
19     make -C host all7 t( F; c) O2 o& b- L: D+ h0 K9 E
20     make -C dsp all+ X8 d4 y* {- s+ ]! @
21 8 o/ x! f5 E  V* s9 _
22 clean::: a- I* ~# b9 J; @( y3 {, [) R! U
23     make -C host clean% u% y+ e. n  Q2 y( p
24     make -C dsp clean0 D1 \5 t, m# B, o0 h6 b% a
./dsp/makefile) f. N! P- I) Q+ i9 V
% a* S# \/ N- l* R# x
1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件6 T8 M/ v3 C1 K9 ^  d
2 objs = $(patsubst %.c,%.oe674,$(srcs)): A. n. o) Y; v0 h" p0 v9 b% N
3 libs = configuro/linker.cmd
. z8 D) a1 e% U 4 # f- l; g0 y+ Q: W
5 all: configuro/linker.cmd
0 S* {2 C+ U  ]% N 6     make server_dsp.xe674
, S! M( }( R1 |6 i 7 3 e4 A# i0 V  p0 E5 o
8 server_dsp.xe674: $(objs) $(libs)5 ]2 r/ x) v" D2 ]8 _
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
& x! j, c6 z  K/ A, |- k10 # X: s4 p1 F$ }
11 %.oe674: %.h
2 m, j3 I) H, Q3 y, i& E12 %.oe674: %.c( v4 {, `, F) l% `
13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
, J! [( S4 q# z4 k$ m" Y, K5 t14
2 o+ O1 H' F0 Z% X6 k6 A1 [2 p15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
7 L7 Q6 {. x8 q$ ~5 e16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
' {- ?/ @( p: Q0 k6 n! J- C17             xdc.tools.configuro -o configuro                        \
) i7 ^& t; V0 R8 k7 L% g18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \9 v4 c  K  `! k0 ^6 R% p
19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \9 t; K; T# U5 _0 r8 e% `" K7 s- i
20             -r release Dsp.cfg* y9 y$ m- _6 O6 K
21 0 ]' o- ?4 t1 N# }6 V
22 clean::
, C3 ^% K3 {  b2 K4 V0 w23     rm -rf configuro *.oe674  *.map server_dsp.xe674* ^. Z3 v- ^- {& v
24
' V7 k2 F, s6 Y8 H. d& z25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages" f: p  c5 S/ d# [- J, y9 A
26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages; V1 |% R$ H( G. \' y0 W6 w
27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
1 J. D; v1 o8 a3 E6 ?# E28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages- p, ~1 I) F" K; G+ g  a
29 1 E2 u) ~, s1 ~0 h& u
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)% b8 B1 p* E$ {9 `( d% t0 p
31 ; n) v) k. I4 A  g- P' L0 }
32 CC = $(CGTOOLS)/bin/cl6x -c                        
: j7 C+ h( A* x9 _3 ]: ?1 ?33 AR = $(CGTOOLS)/bin/ar6x rq
0 ?9 ~; g; g" Y; z+ I- m34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi, \% J$ {; D! ~% o; j: a; Q
35 ST = $(CGTOOLS)/bin/strip6x. J1 p0 i# k4 R3 M4 S) e% h& d* X' X
36
2 E4 I% V: Y" Z, K% i# ?  y; [: V37 CPPFLAGS =
. C9 ]: a8 G" N2 ?( d% ~. X' Q! P, L) {38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)
$ H4 y5 k# |/ i  ]39 . F' e: l2 w0 h, p' K$ c7 F
40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)
' ]! v3 v. ~  T2 {41
& x' O4 I8 a7 l) i42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     
0 V5 z6 P4 V3 s9 |8 h3 Z5 x3 X43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
5 G& p  g) ~( B3 Z! x( O4 T( P./host/makefile; k# Y% e  g' F2 W: V
' n( O9 \( f) b1 y" T2 ?/ D6 k
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件
  Q+ \1 t9 l& l' A: j 2 objs = $(patsubst %.c,%.ov5T,$(srcs))
9 \" w" A+ V) v4 T1 G' j/ G) C 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug
6 k/ W& [6 x0 g5 O0 }# V9 R3 `5 c 4
6 y% c) e" g: ^- h  J$ p  ], m& l 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
! s  }. H% o2 W8 C) c$ d2 S 6 2 c( {  g7 s  O' i% ]
7 all:5 @+ f& `: B5 @! ]; {4 n
8     $(MAKE) app_host" r, \6 L8 {7 i* y4 L
9 # h/ t8 z1 L8 c1 t* A
10 clean::
) |) R% }' f2 }! r1 l2 }11     rm *.ov5T* *.map app_host, [' M: O) W) O$ D
12
2 _4 Q# }+ ~* W# }2 G5 J13 app_host(objs) $(libs)
0 C& M/ ]/ P5 g* B" b& ?3 }14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)5 e* P0 {6 X3 _
15
* c+ `' _% N: O' b, x: z% L16 %.ov5T: %.c
( g# y& ^4 J5 p3 N17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<& P) U& R% l! A7 k! @
18 " }' {0 G. h/ l8 E
19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t1 N& s  T* M5 Z! x# F
20 AR = $(CGT_ARM_PREFIX)ar cr& `7 K- j7 Q* t7 j* r: P
21 LD = $(CGT_ARM_PREFIX)gcc
# m. f, D% f3 Y5 g22 ' ?% g8 i, D# S7 {8 n1 z$ i: I
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
. l2 }, }( y0 X3 t7 j1 I5 ~24            -Dxdc_target_types__=gnu/targets/arm/std.h' C" `2 Z3 X( I; t
25
# p+ p1 I$ o6 B+ e26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径
, w% z) p$ _7 ?+ e5 Y* P27          -I $(SYSLINK_INSTALL_DIR)/packages                        \, [. ?1 n& L9 R) Z3 u
28          -I $(BIOS_INSTALL_DIR)/packages                           \8 o/ `4 N+ |$ W% b- C9 g# h
29          -I $(IPC_INSTALL_DIR)/packages3 Y& a$ G5 J/ `6 Y# M3 ~& `. Z
30 - Q2 G% ^* W0 ^5 y, r
31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map
0 ~7 E; L# N6 h( z) s  T5 j2 d32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
; i8 `. N) h3 q编译工程  E: V9 L4 `4 e8 m- x  ^( C
3 I4 h0 w& O! Y5 Z; W
 makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。6 {0 U3 R' m/ j

. W: j8 k* q- J运行工程
: N7 f5 U* w. x) q8 t! O1 `  O2 L
8 r' h$ |6 F6 i2 X+ J 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。
! I8 C; _, j5 {* U. r: n
( p2 y9 f6 S8 p) d+ Y1. insmod syslink.ko                    # 加载 syslink 内核模块7 W- E: t, `, s4 `9 @' E
2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
9 l8 ]& X: S3 G% O& d/ N! Q3. arm_app                              # 运行 ARM 端程序2 Z6 y9 s, j! G2 d* c9 x' ?# F
4. slaveloader shutdown DSP             # 停止 DSP 端程序0 {5 ?/ r5 W( y# H* ~3 a; H
 sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。 9 b, T; c+ F$ W
 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
8 y0 v& ~& k% ~+ h6 e5 c$ M/ B6 O$ y- W' ~  ^. @6 }& D
1 #!/bin/sh- B+ h* n3 [, v  z, Z
2
! E( K) \/ l! y 3 set -x. w0 f- S- Y' N; T/ r8 ]! S
4 + M1 R: J5 ~' x0 ?
5 insmod syslink.ko" f  l+ B- P1 k7 [, H9 W
6
# {; s8 p4 w; Y0 } 7 ./slaveloader startup DSP ../dsp/server_dsp.xe674  w5 E1 d/ z$ |
8
! v4 R% U2 N- z 9 ../host/app_host DSP5 }5 v8 k/ S8 O; V* P
10
) Q, j. V: u, v8 B1 {11 ./slaveloader shutdown DSP
5 k: [5 V6 k& Z. F3 d, H. G. s; Q9 w/ b& [# M# K2 w6 N
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:055 g/ C& h; g3 Q2 ~8 F
建立工程
. T; S: ]+ k' W4 O- A" c
$ @9 K" s6 _+ W6 |# R: D& p 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
! h2 y: m* H. e, l
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
, o9 z; U8 V4 W6 {. i建立工程. p. D; S/ g- \) j% Q2 ~; z- j
" h# q3 j* p  g9 c( t
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
% Y& o" Z5 {  b4 F4 k
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2162

积分

创龙

Rank: 8Rank: 8

积分
2162
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40
4 e; m% c* k2 c$ G: p9 bslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
: ^6 P" J& @8 U4 E' m  d+ k
dsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-30 04:09 , Processed in 0.045525 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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