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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,' r5 u% r* a6 a1 v; l- u! P
dsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
3 A  S# p6 [( N/ I5 G2 u: h; k. Z# N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程' ]4 l4 [3 G& z
3 ^/ b: Q' e. E# v% x, s
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。
8 {, S8 r! v/ t. g7 N: R  f 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。6 `" f0 l, i0 S- O2 ^8 K
 “清理”过的例程的源码如下:2 f& p- ]' O( c

9 M/ G8 t5 D: s5 I+ A├── dsp+ P3 J7 @' L( k, H4 n# X
│   ├── Dsp.cfg( q1 ^9 c6 s/ ~
│   ├── main_dsp.c
, Y0 T" ?2 A; b8 I7 i4 m│   ├── Server.c
; m1 p  ~( N1 d/ r% D│   └── Server.h
4 k( T; a- j$ p7 q1 D├── host* `1 ~( o. J0 r+ T4 g. l! O
│   ├── App.c0 p1 e" p% K  B; s. m" O
│   ├── App.h
$ q$ G$ e- c+ M& H- ?│   └── main_host.c
. j4 d; U) \  F; U5 c└── shared
3 U3 T. m9 i7 {+ ]3 m7 U   ├── config.bld
7 ?7 i1 \* b: m2 |3 X! q, I+ q   └── SystemCfg.h. ], p1 K- v# R( T
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。
  e! ?: W% G3 c  b- o4 u. \
' N- \) Q* B$ z' N* Q./makefile2 P9 L( V  ~4 P/ l. m$ G
4 k" L! i+ y; ~# l
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05, m5 w. o' w& d& E* ~/ r1 @
2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15' V6 S, {1 U; o, w* D" Q1 @
3
! U4 F. a/ p3 ]) J# [6 w( p& F 4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi3 i% w& i8 E& o1 @6 |
5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-
8 U$ z' J( i. j. h7 _ 6
  p/ j+ ?- C. f3 j" @ 7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50$ L! ]" f# T0 i4 b! `2 Y7 K
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_726 G! l# w" I' z" o. a2 ]. T
9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4
! K, v$ k4 W$ r2 P4 G10
; E2 T( j5 C+ @, ~* [) o11 export SYSLINK_INSTALL_DIR      \$ g  ]( O7 s8 O. O0 l
12        IPC_INSTALL_DIR          \
- E" _6 ~3 `1 H- D13        BIOS_INSTALL_DIR         \% c3 }' _/ ^1 ^0 w
14        XDC_INSTALL_DIR          \- C/ r8 I: g/ F- M4 D+ H+ g& P
15        CGT_C674_ELF_INSTALL_DIR \1 s3 `" Q# }2 }: z9 F# @
16        CGT_ARM_PREFIX8 r- u  M- u9 K
17
2 ?6 e4 C( c+ N18 all:7 J+ f* d6 E4 v2 P
19     make -C host all
# K$ ~/ c/ h! I7 i20     make -C dsp all
6 g* x' @+ M& n+ a21
; Z# `- y2 I1 X) n! u2 Q: J22 clean::
% k( `. ?8 ]5 O; o# T2 a23     make -C host clean' C+ g# ?8 x4 x& a' c* o0 q9 z- r
24     make -C dsp clean
9 K+ }  z- w$ O: ?; J9 m./dsp/makefile
1 {# A- C" z7 O! [, S/ F, S/ v9 c4 _, N! m. v
1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件
3 N, z& n+ r- m+ r; i, d1 u6 M 2 objs = $(patsubst %.c,%.oe674,$(srcs)), x5 A3 x  v/ Z! X( [8 W& z8 }
3 libs = configuro/linker.cmd" c/ |: [4 N7 J1 G7 R
4 2 e% k- p: e' c& W
5 all: configuro/linker.cmd! R0 D2 y1 p' x9 R1 f* a( j
6     make server_dsp.xe674
) U$ p4 U( [  P- X9 J 7 ! V3 C6 N% P, g2 [+ T6 K
8 server_dsp.xe674: $(objs) $(libs)* m# G; k* f9 b# H( z; N
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
3 Y. j5 H+ g/ R2 l) b10 4 y" W1 M! m$ |7 t( \$ T
11 %.oe674: %.h
/ J0 B; G  @9 h7 `( }" K0 ~4 k12 %.oe674: %.c) w, d# ?- d6 Q! p; H
13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
7 z- K! s( |% H3 t6 Y  M14
: H! Z- C  a  s/ _- T: ~+ s3 q15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
$ ^; }' |/ p. A. [* F7 f16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \& v  ]9 @! Y- I) H6 T: U  k4 s! _+ {
17             xdc.tools.configuro -o configuro                        \
* U7 y2 L- W9 `( h18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \9 n1 A. k# u5 ~
19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \
& j) f; N6 [- s: Q9 `20             -r release Dsp.cfg
, m. Y* r, z/ g) }4 ~21
/ n  o& T( I0 t/ C" R; I5 M22 clean::
5 n! o$ |4 G/ ~0 n23     rm -rf configuro *.oe674  *.map server_dsp.xe674
) A0 \+ E+ g2 Q7 B4 L% A% R24 1 B& b/ J* F- l
25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages
( b8 ~" y1 d% w& a: E' J2 `5 O26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages
$ w3 P$ J" W; x9 C27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
* v8 g6 |2 \( w( h" N28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages
: _% T# B  m$ `. ?' {, `. G29 6 ~! O# u" K5 w, ]2 C
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR). _& J; N5 v7 ^* Z* t. h
31 ( o4 c' K- Q: y) u
32 CC = $(CGTOOLS)/bin/cl6x -c                        
2 j, q- K- c6 x6 U0 \* R33 AR = $(CGTOOLS)/bin/ar6x rq  v1 k+ R, U- o8 A( q
34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi6 |, m0 [* `5 K" H$ k* t
35 ST = $(CGTOOLS)/bin/strip6x5 f. H9 X  A8 s0 a) p$ {4 |" B
36
2 g9 a: N) Z; e( j$ d37 CPPFLAGS =
6 @6 J- s7 p, z0 Q7 k38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS); W# h- Q, @3 E5 g5 j
39 / v1 ^+ Y# M. b; R
40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)( T( \8 |$ A4 i% _2 u7 V
41
  g6 U6 [% Q) `42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     & W6 {# x( K: i" |8 z7 ?) h4 \
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
! [2 F5 M/ c  d$ Y6 ]0 g./host/makefile
2 `2 u7 `! M% e1 O1 D: H' C5 k. M) O  O' G% e' N
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件; Z' a* V; V$ I5 j- ?
2 objs = $(patsubst %.c,%.ov5T,$(srcs))' Z8 Z  @4 `; z. k/ S" K. Q
3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug
  q% t+ E: E# Y( }5 Z/ J7 v0 X3 e 4
6 N* e. ^! l4 U1 g/ V: h% L& E 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))! i3 x! ?) U- W8 l" k- N0 p$ B2 R
6
! o, P% t3 O( j6 E5 T 7 all:
9 o2 |" n+ K4 u- u7 h) w2 y' N 8     $(MAKE) app_host
6 q, ~/ |! }; x# I4 A" j: B 9 1 P* G7 b. S' g: v: _
10 clean::# X0 i! B$ K. o3 L7 q' e
11     rm *.ov5T* *.map app_host9 S' W, `4 I( }6 M% M0 Y2 |" g
12
( y+ ?% m5 `1 Y" G7 y$ D6 [4 j13 app_host(objs) $(libs)
5 z1 I0 h0 b3 M# Z14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
8 X3 D4 t9 L) x6 g) U" s5 a15 8 ], x: ]7 b1 e- L/ s. u- @$ l
16 %.ov5T: %.c' W7 R2 U# g; E0 A% h+ x2 e4 n: Z
17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<
& f0 @6 C' X$ ~/ M+ C/ w, v4 M18 # j. ~8 b, Q9 ^' c' \% X
19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t
. B. C" r/ l# M* L# L  ~20 AR = $(CGT_ARM_PREFIX)ar cr" `; U9 I- M: y2 J. s0 U  X
21 LD = $(CGT_ARM_PREFIX)gcc
( j) m. ]: k( k9 E22 ( _" \6 x% u9 e7 n4 S- o- c- E
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
$ @; J* C, M2 m7 I$ A: N+ @. L+ C& a+ ~24            -Dxdc_target_types__=gnu/targets/arm/std.h- q' P6 M) J0 X. F. M
25
  i  n# b4 \3 R% N26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径
  B. _2 s8 C; }27          -I $(SYSLINK_INSTALL_DIR)/packages                        \
% ]  S. r/ V& G5 S& G8 m1 d) W28          -I $(BIOS_INSTALL_DIR)/packages                           \
+ ?3 A. v0 j# U( s0 h3 C29          -I $(IPC_INSTALL_DIR)/packages+ \% K- d7 ?  ?& [7 g' \
30
. j3 `* C. v3 b* Z( z" v31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map% N" X- |" I! N5 f# g: l/ ?% b9 @
32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
  u. {! M) D$ [" A) \编译工程( k! |2 w3 ^3 j4 J6 O) P9 Q  M1 W- f

$ W7 o0 d" x1 J, f* b8 [. f( ^$ b& ` makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。
, m) T: S# `+ Y) C0 f
/ X1 X! r+ b, k" J运行工程
) Z' D$ L& N9 ^7 B
( w& E5 g: Z7 ^( O) v% H; A# ~' y' ^ 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。
" C! F# z: J/ p8 Q/ w$ ]  d
# G& j% N" w3 k1. insmod syslink.ko                    # 加载 syslink 内核模块
; a" I5 @6 h* U$ @' F2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
6 y- N" M7 P% p/ |8 L+ s1 y2 b! s3. arm_app                              # 运行 ARM 端程序' d6 ^' a4 q- C, X5 H1 g9 D
4. slaveloader shutdown DSP             # 停止 DSP 端程序
* T0 t" b; R7 {' `6 S% ^ sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。
  w5 v! A) N! N  Y 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。$ S  {5 `6 O" v9 O3 P
+ m  t$ C! d9 f; l* u
1 #!/bin/sh: |3 M6 H3 J! w/ Z& ~% m
2   |$ }; G# {$ u$ F7 w& T, o' S3 @: w3 W
3 set -x
& |2 |8 s8 m' @4 l$ A6 n3 C 4 8 W% u) ~" Z$ ]
5 insmod syslink.ko1 r4 G7 v6 w. |( U: g6 e
6
: u" w% o5 a/ j- r$ M 7 ./slaveloader startup DSP ../dsp/server_dsp.xe674
3 r' Y7 m( T9 n/ I' P6 U 8 1 E4 C  ^' w  v' C
9 ../host/app_host DSP
; C( t! t$ s, g4 y$ V10 ( v( j" A6 U$ J4 P
11 ./slaveloader shutdown DSP
2 w' W( n5 o. |9 H2 J
% k4 `4 t. D  O/ d% K
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:05
/ }  n  r: c7 |" q/ c建立工程
8 R2 a9 R) f4 Y  H
5 R: d5 ~; f7 E: z" ~" h) p 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
) ?' Y3 ~" p/ o
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
5 E% {, t$ r+ q2 M3 L. a# h建立工程
) x  r: [9 C" ~$ w# M  Y% o# s' w7 e" x+ D+ t: X5 w; B. c6 R2 L9 x
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

/ I4 o$ ?: y  s6 k- @9 u, Z! }5 eslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2027

积分

创龙

Rank: 8Rank: 8

积分
2027
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40
* p6 N. _/ ?  |7 z$ z: Qslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
4 N6 B) T/ M1 }% E3 g
dsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-7 16:44 , Processed in 0.043269 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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