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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
/ v! v6 q8 N/ a8 \9 Tdsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
1 h0 c5 ]0 @+ @" x, z! l1 k7 R9 ?* i$ Q" z1 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
推荐
 楼主| 发表于 2014-9-22 09:33:09 | 只看该作者
Dsp.cfg,  config.bld,SystemCfg.h这三个文件感觉不太好修改。能给推荐一下怎样编写这三个文件吗?% ]* ^- [5 y6 v* _! y
回复 支持 1 反对 0

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程
3 b: Z' Z2 F4 \, {' C, ]$ D9 K: L4 p: K
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。
' F, p7 L" L& ~ 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
+ t5 s/ a7 T  P: A) z- C  W% k  r' T “清理”过的例程的源码如下:
0 r6 b4 Q! A/ I0 I# E5 i* X  A6 w$ l
6 o8 f3 l, m0 B2 B4 V├── dsp; L' C, c& ]3 e- v
│   ├── Dsp.cfg
! y( n2 ?2 B& p7 E│   ├── main_dsp.c) n; l# n) w% u1 |; z+ e( s' ^" g
│   ├── Server.c) n9 c6 N- ?0 ~
│   └── Server.h
  l$ j; C; ^' ]# h5 [! S& o├── host
1 V! P' A# w( _3 t$ Z( g( ?# l│   ├── App.c
3 Y+ I5 F3 c& X6 C│   ├── App.h' o% l* w% Y0 `
│   └── main_host.c" K/ d5 P& g& A1 I1 ?
└── shared) r8 t9 Y; g" w" W
   ├── config.bld
! [* j+ r# W0 ~  P  s, v   └── SystemCfg.h
3 H, A5 O* J% ?9 }3 J8 S 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。
2 ]) C0 G% N& @, N# Z% }# W: A
7 S% Y+ o0 f) g( Y./makefile
( u% G  ~& T2 c' |* f/ R4 j" B. D. j. K$ p" L, F
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
  L3 A$ k9 A2 x" b 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15% ^8 `3 [) g5 C) B8 h2 P! I' ?
3 7 c" J( k+ F8 g1 B% x
4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi
8 i* P+ @" e; ]2 K( i 5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-6 S/ M' n( p: d# g- j4 o. r' H
6 ' E8 J  j, I9 B% |0 u( F  H! S
7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50* L# C' O, e' }' |7 s, s4 G
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72
6 A% ]0 |- E, Q' {" n1 S 9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4! @5 h- D8 l; v5 d4 x" U3 p
10 $ [: E% Z4 h! K
11 export SYSLINK_INSTALL_DIR      \
0 L/ i& v+ b/ `1 O12        IPC_INSTALL_DIR          \0 A7 V$ \$ e+ M/ \/ R
13        BIOS_INSTALL_DIR         \
# m) H+ z, Q+ j14        XDC_INSTALL_DIR          \
: Y8 O1 U6 g& S; D15        CGT_C674_ELF_INSTALL_DIR \& l; \2 v" U9 J' I8 P9 M
16        CGT_ARM_PREFIX
" P( D4 ~; o' V; I! Q17
. _8 |5 b8 x! I, G. T# @18 all:
4 h9 M7 i. [6 R4 v19     make -C host all
( h9 c& |5 K; B) d3 h" S# F9 i( N20     make -C dsp all
: m) R  `2 u# g  m$ N21
) U# g" K0 K& l. Q  K22 clean::- A+ u, b; ]1 ^- ?  X
23     make -C host clean# Q( P4 x' }' C) n- N6 y8 |. B
24     make -C dsp clean& A9 w+ p3 i/ x  U7 Y) P
./dsp/makefile
9 ]4 C" i4 Y2 `$ O  R0 Z5 F4 A
9 |8 i* U  k/ L; x0 h3 x4 O 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件. x% a$ ]. p8 b$ U1 z6 L* ^; _
2 objs = $(patsubst %.c,%.oe674,$(srcs))
( r8 W* i3 X7 A/ g 3 libs = configuro/linker.cmd3 G' _  g* b7 P6 l2 }& Z' l
4
/ B& e* P2 v/ ]1 J, b' n 5 all: configuro/linker.cmd. @7 W" p$ Z" m" W
6     make server_dsp.xe674
# D% \3 L8 `4 y; }  _+ B& F- z 7 / e. D) Y- |; }  W; O6 E$ y4 ^+ {
8 server_dsp.xe674: $(objs) $(libs)
3 o. ?0 I$ R3 L2 J& [ 9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)! I* k9 @6 c1 F* N. P4 p
10
4 H. u7 G2 O3 F11 %.oe674: %.h  O% ~9 m8 K% d% G9 B
12 %.oe674: %.c' a" V" L) N/ ?2 B* @8 B7 ]
13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
( \$ y" S" g* j9 ]' W- L4 Z" S6 w4 Q14 3 a' r1 T6 d; A
15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
) w' i" F" X$ P: w% A" ]; m" ~; J16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
* O/ n2 O3 o* Q9 N( W' g6 G17             xdc.tools.configuro -o configuro                        \
1 D& h8 L8 I7 }; E18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \
$ W/ M1 G# o8 @$ ^" |* X19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \
( E- Y% R/ N7 L' o. h- ?' |) m20             -r release Dsp.cfg, o  ]# N& Y& f7 E" p* l
21
& L  X, h9 j8 D3 x, I22 clean::+ Q; A$ O# i1 d2 J# B1 M1 f3 j
23     rm -rf configuro *.oe674  *.map server_dsp.xe674$ B" z/ U# j0 }8 E+ w2 |
24
& {, G, F# _5 h. K4 t: b1 z0 t& L25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages# b/ q" X% Q6 |- M% a$ ~1 n
26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages
3 j" ?7 g' \7 P$ [  j27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages( @" a/ l3 M% p
28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages
8 k4 X6 e: b6 A: l29 % u1 ]3 v/ ^( [: w& o
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)
) D% s0 @- g, p  V" Z) c31 ' A. E. w; K- o* ^
32 CC = $(CGTOOLS)/bin/cl6x -c                         ; r7 Y2 a( m& V. g
33 AR = $(CGTOOLS)/bin/ar6x rq, {0 l' r) t) n: B
34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi
  ~7 p! R- h6 ?35 ST = $(CGTOOLS)/bin/strip6x, C7 ~/ G# v! `  p; M$ J" \3 ^' P. V
36
; A5 u6 ^- ?4 N7 {3 e: X37 CPPFLAGS =
  `3 |7 ~9 h) q, @% a0 @38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS); \+ T' P- v0 M$ t1 e- k8 o
39
4 B! t$ q) z: F2 i40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)
( K' l/ I; Y, K0 G6 [' V41
' L6 j9 G: T& C6 F  j42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     7 n, g/ m5 p3 \! q' C! z/ w
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
1 k3 o) e" o" M3 [./host/makefile# E: A% s/ [( d' x) m1 s

5 ^+ p* `$ V/ X7 e, s 1 srcs = main_host.c App.c                       # 在此加入 c 代码文件( g( k+ R- ]8 v/ T. v' }2 E' Y7 F! \
2 objs = $(patsubst %.c,%.ov5T,$(srcs))/ U: F( C9 p5 _' w8 F: I# n9 \
3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug
. P$ f7 q- F  d5 n4 z; Z/ ?8 S 4 ) ~5 ^/ j* Z3 X' X- F7 f0 b
5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
7 ~, V; ^! i: H! J 6 : u! U2 z  E& s
7 all:# o* W7 ]% S: e# D
8     $(MAKE) app_host! o! a0 R! b0 R5 D4 L) a( u
9
3 _( [  a7 c/ z, ~/ E0 T10 clean::/ E! E5 \) ]' ~' b
11     rm *.ov5T* *.map app_host- P3 f0 l9 B: x- A7 _, V4 X
12
' Q% O; [4 q7 j" s- P1 }- ~13 app_host(objs) $(libs)
; x7 h6 U# @; e$ v9 r1 J5 B14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)9 d' Z: F% X( I& L  G
15 " A# i/ V) G: R% |- u
16 %.ov5T: %.c
3 ~3 D/ [0 u0 r/ O! W6 q$ N17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<. j# T# }: V0 w4 a% W
18 9 _! x5 Z3 e9 E* y' P4 @1 j
19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t0 q* O% N4 C  T4 D: {2 X
20 AR = $(CGT_ARM_PREFIX)ar cr, F5 v0 n/ T) P  h" A" w0 V
21 LD = $(CGT_ARM_PREFIX)gcc9 x3 u' O0 {9 H/ L
22 " L; L/ U! n& ]9 x: r
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
" v  `* L/ c# d+ K. c& z4 g1 h24            -Dxdc_target_types__=gnu/targets/arm/std.h) n2 P/ T9 X# B- A' w& p; ?# X% N
25 8 ~/ R9 g& d: s' g( {
26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径- Z. z- k0 e. u- [7 B) Y0 z/ Z' t+ f
27          -I $(SYSLINK_INSTALL_DIR)/packages                        \
1 j" \* L% n3 f3 G1 R, x8 x28          -I $(BIOS_INSTALL_DIR)/packages                           \
$ G0 H$ e2 e' v: p' Q# f' |5 X29          -I $(IPC_INSTALL_DIR)/packages! [% {2 X$ `5 S5 S, r
30
2 n2 J- S3 h3 Y% Y" u4 p  C4 |" i31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map! g$ @9 h: J' j% \
32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序, h1 x0 w7 c# m
编译工程( c. n, l8 m8 n7 D0 A

* K0 @4 [& [& B$ s+ b; s6 _ makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。; ]; D; {) ^% |+ l& \
. @9 ~: d$ S3 T* b5 Z3 x; \8 v
运行工程
, O  \( a  C" \+ k9 o) V
) _( W3 d) L& T1 @( g, Y. c 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。' L/ v4 ], e8 P8 K* l

7 M1 U' A) l2 r" i% |8 X& `1. insmod syslink.ko                    # 加载 syslink 内核模块. b! }2 K; B! V# s
2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
9 Z3 j% H: O! j! m! V3. arm_app                              # 运行 ARM 端程序
. x  h/ `* f1 J1 z* T, S# A4. slaveloader shutdown DSP             # 停止 DSP 端程序
+ p4 p3 u  ^8 m! U sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。 6 C2 N* l9 W; d" K/ z7 g
 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。# T, V0 s1 P* l  w6 i5 Z: h
% s! u  e' {, y) r2 g; |: c
1 #!/bin/sh
- q6 N0 s9 v  C$ [3 c7 ]4 v 2 3 q; s! [" b: K& s, a
3 set -x
, n* z) K% z; x, \1 D' f2 i% V! | 4
: }& m3 `7 ~, Z  O9 J5 A. M8 q  H 5 insmod syslink.ko
; O8 l; R1 S( ] 6
" P: I3 F/ o& ]9 S; w 7 ./slaveloader startup DSP ../dsp/server_dsp.xe6741 s; q. }1 l' h
8 " K# n+ u8 D$ N: t8 X3 R% u
9 ../host/app_host DSP# R% N& j! n/ C8 G
10
: I  V6 L! ~) J+ c& H- N11 ./slaveloader shutdown DSP& Y/ z+ x- d1 `5 N$ r
$ G+ Q1 f% q4 D, d# d  _" q
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:05
/ a* F% B& y8 j* `+ H建立工程
  `6 S' a6 D: s) k! z* N+ ~: d+ D/ ^* x+ V" i
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
) S9 b+ M5 Y' A1 \8 Y, [
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  P6 ?7 Q3 ^) y# j. W- ~
建立工程
! `! S, y# N# M& \: x( E' n7 N* E$ A
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

! Y# O% M. W7 ~- K3 J0 }slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2096

积分

创龙

Rank: 8Rank: 8

积分
2096
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40# z8 l0 m+ g7 I: E
slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?

6 i4 j% e% T# Z% mdsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 16:58 , Processed in 0.042096 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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