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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
! b+ ^8 y9 L8 Z2 Ldsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。
8 q- U" J4 }1 x* V" p/ w, ?
' X7 \  w4 G5 k$ A0 u- v9 ]7 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

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

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程
! Q+ Q3 z# i+ m. S/ q7 @: z! o( A+ }! t7 t1 T& f$ c
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。6 A5 y6 U- Q! d; h: g
 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
# Z  J4 L7 @7 y5 i/ j3 O “清理”过的例程的源码如下:7 k, ?/ M3 `( t5 q4 I
$ W, o) P& \3 Q" t8 g
├── dsp
( I1 a5 ?8 j3 B3 _# R/ ?│   ├── Dsp.cfg6 L" e2 U0 g7 F- \
│   ├── main_dsp.c8 q, ?% ^( O4 \/ n+ r
│   ├── Server.c
7 r( h  ?1 K4 z6 R3 j# `│   └── Server.h, U+ j& X; Q" V, k4 U' k7 C* E% w
├── host! h; A! d4 k( [* |! g- v/ l' _
│   ├── App.c
  a) I: ?" a6 S│   ├── App.h# Z* J2 {/ m' V8 h
│   └── main_host.c
4 ?8 [) X: r6 H└── shared( N% Z( `- Y0 Z6 u" f
   ├── config.bld
- A' J$ ]0 `" `( H   └── SystemCfg.h: P6 ~& I. O  K( s
 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。
+ v) R* C6 f' K( R5 f; c- V' |. n& }2 Y& T8 [# d/ L
./makefile
( i# ^* v8 H! ^
/ v: n  x0 j2 ?" H 1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
5 K5 e# X& I; ~# o3 ]9 K2 V  A# w( y 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_15
5 Z- x  f5 z8 \% T, ?, K2 n- C 3 ( f! s9 Z" Q6 `$ C4 S" X  Y  x
4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi* u% e/ n3 B; e2 B% f: R
5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-( f' {) I2 I% C# q5 ~9 i
6 % L2 e  k$ t+ q
7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_50; N* |3 h$ C/ l! g- _) S, a' ^
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72( a/ v: d& S8 }2 V
9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.4: o& V' s) \% g' {
10
, a+ L0 m2 y' z0 B1 J6 P) |  a11 export SYSLINK_INSTALL_DIR      \
6 U) L, Y3 W$ v12        IPC_INSTALL_DIR          \
! T: `6 G% m. c: O13        BIOS_INSTALL_DIR         \
0 K9 [. z" R2 V) K14        XDC_INSTALL_DIR          \0 Q# F, @8 x5 c% v1 l
15        CGT_C674_ELF_INSTALL_DIR \
- f! _3 A0 V. O, \16        CGT_ARM_PREFIX
0 D' v. T+ u% X& R17 # K  [- R. h4 ^& n# P
18 all:
: f8 x. k% _( g% D5 Z2 X19     make -C host all* Z4 y8 m* r& I
20     make -C dsp all
/ ]5 Y% b: U: u3 i% e7 d0 d21
1 T3 C3 r; g" U( Y5 r22 clean::
$ _) {; }3 j: D+ {$ A) M23     make -C host clean* c& Z" b3 _5 u1 I; v
24     make -C dsp clean
& |8 X$ [7 Z" y, v% @4 u" F./dsp/makefile1 \2 }# p8 s% Q/ g/ r2 `
# o+ j2 U( q" E, `8 B- E0 y6 ]
1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件
4 y: m6 y( d9 V 2 objs = $(patsubst %.c,%.oe674,$(srcs))
, |  i3 n3 n* j9 f7 Y, _+ j 3 libs = configuro/linker.cmd
; K% B; Q0 m2 ^2 @! ] 4
* ?* ^1 l0 E, b1 h( _3 T( X 5 all: configuro/linker.cmd
1 D* q' q& D4 n8 O+ ` 6     make server_dsp.xe674
; y/ D# j  Y  Y6 t 7 % D( {+ E6 D  C- @; [) \- ^- g# e
8 server_dsp.xe674: $(objs) $(libs)/ j5 M  P8 h, W+ A8 Q1 y1 ^' E" {
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)! h8 W& L. @" r3 z
10
, F# F( q2 U. k6 p3 {11 %.oe674: %.h  X$ {2 M+ p3 W0 x7 }
12 %.oe674: %.c
: a6 x  }) h3 \  S7 r13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<4 \0 l# ]! ~" I; L2 A; b  Y
14 * `+ u4 f. u9 Q6 ~7 S
15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
. r3 G* s0 K0 r16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \
4 v' U, m; }0 A4 A17             xdc.tools.configuro -o configuro                        \& J& A; a" j( \1 R- k) f
18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \2 }7 w( B+ L( D- n0 x3 q
19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \# O# m; ^8 Q; h4 y% p
20             -r release Dsp.cfg
7 R8 t! {3 L0 o; U6 X! f2 {21
: p+ G- [& {- ]22 clean::$ p. z9 G* n, q3 {
23     rm -rf configuro *.oe674  *.map server_dsp.xe674
8 s, Z) M: m; Z6 o24
+ E' c# T: Q: y3 l, {1 x# S2 F25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages$ s5 B/ V5 l2 F' Z8 y+ n
26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages
% G3 Q7 f2 I, e0 E! l27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages  D6 c. e5 w  z+ ]
28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages
" S8 e4 n% I* {' X3 N29 ' V* e2 ]+ @0 ^
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)3 y  W8 B: q/ J/ }
31 5 {7 I  i. J# A( U4 d
32 CC = $(CGTOOLS)/bin/cl6x -c                        
7 d7 t( D" H% [5 b) J' S. ]33 AR = $(CGTOOLS)/bin/ar6x rq
2 w  j5 I: r: e4 S' x34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi, N; v3 ?7 a) |' z* a7 \0 E2 f
35 ST = $(CGTOOLS)/bin/strip6x+ Q5 W* V  i. t8 ~( \, L7 K
36
+ y0 {  K  m7 Y9 @37 CPPFLAGS =
" Q; Z3 C0 a& d38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)
! b6 u6 t) \+ c: O, c39
! l* |. b0 |! t: b40 COMPILER_OPTS = $(shell cat configuro/compiler.opt), f" R3 h: A: n/ M7 e4 z
41 9 S* Q' a7 ?+ l% S5 m5 h7 @) U
42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     
9 l* o' \/ J4 X- y; P! ?" L9 a+ t43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序$ a. X4 x; Y) Y% s; l
./host/makefile
, o: Y( S3 K* k8 b) y# [. q, U
8 T5 m" T) a$ c& z% }6 H5 e 1 srcs = main_host.c App.c                       # 在此加入 c 代码文件
: c2 ~% a4 ?' r) W 2 objs = $(patsubst %.c,%.ov5T,$(srcs))
. L) G9 c: {) Z# C7 L8 ?3 r6 h 3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug& c0 O; K' ?$ D. K0 V* Q* ]
4
! k" ~) N2 b- u$ m/ ?0 B 5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
- M& j9 \, W0 x  w" {, H 6
2 f5 k2 U  q7 ~, H( r7 N 7 all:
. N' W/ {" F& N  A3 ] 8     $(MAKE) app_host9 y  \- d6 I1 ]5 c
9 + I, D/ y0 B& S% Q. B
10 clean::- M" b1 `( ^3 ^( z7 L" P1 o* \
11     rm *.ov5T* *.map app_host
! {5 i5 C: B* q/ }, A2 O" Z12 ; R$ S  s' O: f
13 app_host(objs) $(libs)
' o$ I- P% N/ C" h+ d+ r14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS): e# ?' ]( y3 u0 f3 d/ Q
15 / _' ~) l! Y, a
16 %.ov5T: %.c
2 C! e+ O* ^1 _0 p17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $</ g; l* O! M- b& M! L- q
18 & y' |3 k, R  v: W( G/ N+ }
19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t2 C; l7 \7 P& L+ L% l
20 AR = $(CGT_ARM_PREFIX)ar cr
7 T. a$ z" s! |21 LD = $(CGT_ARM_PREFIX)gcc- m5 |0 D. s! K+ t8 t* d6 {$ J: I
22 ( i  ]+ c: {% P/ R
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
* ?' U5 Q8 z- W  B24            -Dxdc_target_types__=gnu/targets/arm/std.h
4 K! y: h* l$ p3 \, ]4 M1 f# C25 $ d9 G$ j5 ^$ U% h6 L6 _( x
26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径" }: p! K4 P* T! t0 |; L2 B1 q3 I4 ?
27          -I $(SYSLINK_INSTALL_DIR)/packages                        \
# A4 n/ m6 _' E' U( u. v; T28          -I $(BIOS_INSTALL_DIR)/packages                           \
& b) P& x+ D7 A3 D! j1 Q$ ]29          -I $(IPC_INSTALL_DIR)/packages
6 J. C( \; r$ c! C' q30 1 N- E- g! i9 F3 b! K8 R% I- ]
31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map' j$ M" a7 k  R: W1 O9 D2 B  O
32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序1 M% d2 G: Z0 X; Q1 ?' m
编译工程) C, T; j1 W6 U: V3 S' T
: z4 ^$ p  l, u" Q; e3 {
 makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。. l: e9 j3 [, A) i

& H, Q2 B  d, B& h4 P5 C运行工程
+ ?+ ?! d) e( \1 V4 p
8 K6 d9 G) ?$ S8 t- P) V 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。$ q0 Y2 e/ |9 V2 {
( n, N3 j2 o2 t9 o$ T6 |* p
1. insmod syslink.ko                    # 加载 syslink 内核模块! \2 `/ K4 l9 q' m. B3 C
2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序
: n5 p* q" p9 P7 w* _" [* L3. arm_app                              # 运行 ARM 端程序
; Y2 T9 L8 d( ]* P9 Y4. slaveloader shutdown DSP             # 停止 DSP 端程序4 L$ q' a' c6 {) F4 @
 sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。 ! q# K. F  ^7 }% [! |) Y" \" p
 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
6 g$ B. D0 [, W& K4 @( @0 ?1 B6 ^( C9 H' d/ H! m; r& K
1 #!/bin/sh9 o5 P# i1 a" G% U8 N$ L) O
2
& y0 L2 C3 ]3 Q 3 set -x
0 E1 ^& ]! Z( h 4
. J) ]; z+ v2 R 5 insmod syslink.ko3 Z0 }" d! z( A! F0 b
6
9 F1 a8 \8 c! X, A5 b5 J1 ~3 P1 p& Z 7 ./slaveloader startup DSP ../dsp/server_dsp.xe6743 q7 d+ a8 E) i& t2 G9 ]0 a. w
8 + Z5 z' |! Z' d$ I4 F
9 ../host/app_host DSP
9 N0 ?+ h- j# p: r- k* ], |10
2 d) x( K$ S; ]) d4 _11 ./slaveloader shutdown DSP9 G8 g2 m( O  Q; i1 `) {! A
) E- ~0 O3 A+ l/ z0 H$ B! O
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:054 o6 ]( S+ j( ^4 I$ n  R. g
建立工程
1 N" Y: Y! E, K6 s6 G7 o
$ A) P0 k, M* f7 { 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
- \' R$ Y1 N; h% c& w. m' C
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:050 z% @. }7 m0 c( W% q
建立工程$ k3 i2 {' ^5 w8 \0 F5 j2 }
$ M/ s1 A' T+ m+ s& e% _
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

3 A6 g0 n; M- G! s9 w' E8 Aslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2070

积分

创龙

Rank: 8Rank: 8

积分
2070
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40
4 j% G$ ]5 I9 Q' Aslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
, _/ e! |. S2 D' F) F; u' z6 ~0 Z
dsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 09:23 , Processed in 0.044194 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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