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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
跳转到指定楼层
楼主
发表于 2014-9-19 08:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚接触OMAPL138,软件都装上了,例程也看了,不明白的是例程里面有 dsp,host,shared,makefile,products.mak,run.sh,
& P8 V/ a! s: m1 P6 idsp和host下又有cfg,makefile,c等文件,哪些是需要编写的,哪些是形成的,怎样搭建一个工程。! [+ U+ _- [/ R! X1 b2 I5 ]
9 G- l* f& v1 `, x% o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖
回复

使用道具 举报

15

主题

30

帖子

139

积分

注册会员

Rank: 2

积分
139
推荐
 楼主| 发表于 2014-9-22 09:33:09 | 只看该作者
Dsp.cfg,  config.bld,SystemCfg.h这三个文件感觉不太好修改。能给推荐一下怎样编写这三个文件吗?1 R6 S3 m; D4 _" A0 L: N
回复 支持 1 反对 0

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2014-9-19 18:05:57 | 只看该作者
建立工程2 U2 f2 F4 H( b/ e5 @
3 W% k  O  o0 z3 j9 {# A- \' C- ^
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释和对 make 工具的使用方法的说明。
% K$ X  W/ u! \$ C8 `9 i 现在我们先查看 ex01_helloworld 的例程源码,然后使用 make 对其进行自动化构建。为了便于演示,我们尽可能去掉了那些“干扰”因子。
' S, T/ C5 b( H$ W" h5 |1 O! { “清理”过的例程的源码如下:4 q2 h9 F3 O$ U' m4 t- G' a

$ {0 W: s' y0 q* z& ]├── dsp# B6 d1 G; W: t
│   ├── Dsp.cfg4 e9 y5 `) P+ ?: t+ E) m& ]
│   ├── main_dsp.c
6 ?# ~! D7 O( E1 S2 ?) q│   ├── Server.c
3 y5 [( s2 ], ?│   └── Server.h
: d% d7 R9 ]* J" m2 Q├── host4 W% ~' C" D  k2 [, U" \. O
│   ├── App.c' \- h8 x1 h" b8 K  f
│   ├── App.h
8 U& U3 p/ t; v6 Q5 R9 J│   └── main_host.c! r5 N# n" K3 M/ G5 \; @0 j
└── shared/ G. |& V4 |$ K7 @9 r, D, O
   ├── config.bld
+ J5 w# O1 q* Z7 b( r1 d   └── SystemCfg.h
& R# y# T% |' N8 m% b% q" P! g! l 现在,我们开始为其编写 makefile 文件。根据目录结构,编写 ./makefile、./dsp/makefile、./host/makefile 这三个文件。! b, ~+ b8 t0 H
$ p* _( K& f/ q- ]
./makefile. K  G9 i) [% T" Y1 f7 e" x7 I+ h
  }2 h  G1 Z- }8 T$ d) x. y, S2 y% c
1 SYSLINK_INSTALL_DIR      = your/mcsdk/path/syslink_2_21_01_05
0 r+ h. n% K3 n/ R. R  @ 2 IPC_INSTALL_DIR          = your/mcsdk/path/ipc_1_25_03_157 F( _' v* s2 i$ a
3 7 s+ n# H- J. K
4 CGT_ARM_INSTALL_DIR      = your/toolchain/path/arm-none-linux-gnueabi
" Y4 x+ ]7 W5 D5 R! }5 r5 b) H 5 CGT_ARM_PREFIX           = $(CGT_ARM_INSTALL_DIR)/bin/arm-none-linux-gnueabi-
! H9 c0 u& \( Y1 k$ c 6 3 w, x8 ~6 Y2 s4 x+ p
7 BIOS_INSTALL_DIR         = your/ccs/path/bios_6_35_04_500 g; w& y8 K% b2 z  q; N
8 XDC_INSTALL_DIR          = your/ccs/path/xdctools_3_25_03_72+ r. p$ W2 H+ |5 L
9 CGT_C674_ELF_INSTALL_DIR = your/ccs/path/ccsv5/tools/compiler/c6000_7.4.48 P6 u( `8 p8 Y9 |5 y
10 & U- Z6 u1 p$ D: X: C! [
11 export SYSLINK_INSTALL_DIR      \! v& A, ~! U6 r* h
12        IPC_INSTALL_DIR          \2 S2 N8 z0 P; K% j9 F
13        BIOS_INSTALL_DIR         \( i, q* F# d# N" k
14        XDC_INSTALL_DIR          \
* L+ ?1 y5 }* d4 ^6 V15        CGT_C674_ELF_INSTALL_DIR \
8 q2 |2 b7 m& X16        CGT_ARM_PREFIX
* _4 |- h$ a& r% O/ S17
7 B9 B, p1 f5 _# ?- b! t" R18 all:
- ]4 a4 h" {; Y6 k7 k2 P19     make -C host all+ s+ P* _$ K* R. s; S
20     make -C dsp all" u# r) ]6 m$ e' B3 w3 M
21 + R! B, V0 f8 o
22 clean::
* D& M9 T2 i3 e9 S+ Z23     make -C host clean& @, l$ k' O( J$ J6 V9 `
24     make -C dsp clean2 |% R: G9 @$ P( d0 h
./dsp/makefile; u( h: z" B  f2 `

; [' S4 U6 {) Q$ O* t 1 srcs = main_dsp.c Server.c                    # 在此加入 c 代码文件
) X& t  a3 {0 O% j 2 objs = $(patsubst %.c,%.oe674,$(srcs))4 `9 d+ y7 ?$ s5 _1 ~3 t/ ]
3 libs = configuro/linker.cmd
2 f/ D' @* t# r' e 4 3 Y6 ^& e/ K9 ~; ^
5 all: configuro/linker.cmd8 g% V) v3 Q2 E
6     make server_dsp.xe674
6 T+ m  w. P# G* C( v* Z 7 2 W/ m: x6 ?5 X: w1 g4 E( c7 t. y/ T
8 server_dsp.xe674: $(objs) $(libs): }! |0 j6 w& y8 U
9     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
- c# v3 Q* i9 Y( E10
5 D: l* |6 _# O' V* i# p' T) x5 L3 ]11 %.oe674: %.h: }" ^# P+ Y! x! a' A
12 %.oe674: %.c
8 k5 P0 p/ D( ?2 y$ S13     $(CC) $(CPPFLAGS) $(CFLAGS) --output_file=$@ -fc $<
, o  I  R/ C, e5 S3 U14 1 `5 C. y8 G4 V7 x5 ?
15 configuro/linker.cmd: Dsp.cfg ../shared/config.bld
6 y+ E# B, @$ }2 {16     $(XDC_INSTALL_DIR)/xs --xdcpath="$(subst +,;,$(PKGPATH))"       \' n4 Z  M5 w7 \, Y5 t. q
17             xdc.tools.configuro -o configuro                        \
6 L4 v2 h. _2 d7 {18             -t ti.targets.elf.C674 -c $(CGT_C674_ELF_INSTALL_DIR)   \1 k* q) c( H( Q
19             -p ti.platforms.evmOMAPL138:dsp -b ../shared/config.bld \7 ~3 Z* C# ]( F' i1 G$ L2 m
20             -r release Dsp.cfg
- J3 X- T% @8 f. W- B21
9 u0 l7 |+ f- O$ T# _' o7 N22 clean::- \% G& {' |5 Z2 I# o3 x
23     rm -rf configuro *.oe674  *.map server_dsp.xe674
9 i1 n) L  E! b9 ~5 e; a# S24
2 h9 q) q2 N! G2 K9 |: [, W  T0 _25 PKGPATH := $(SYSLINK_INSTALL_DIR)/packages
- J6 N$ _3 E/ N- e+ z+ Y26 PKGPATH := $(PKGPATH)+$(BIOS_INSTALL_DIR)/packages
7 m& F1 C) I+ Y; Z27 PKGPATH := $(PKGPATH)+$(IPC_INSTALL_DIR)/packages
  ^6 K6 M7 B- y9 C28 PKGPATH := $(PKGPATH)+$(XDC_INSTALL_DIR)/packages
4 ~9 ^4 W1 I$ O  d. p29 , p( J! M! |7 k! E( ]
30 CGTOOLS = $(CGT_C674_ELF_INSTALL_DIR)
! j( |7 }8 {8 _31 ' I6 @4 g3 O: e3 j8 T
32 CC = $(CGTOOLS)/bin/cl6x -c                         " N0 ?% z( S' O( k$ U! o9 M+ z5 P
33 AR = $(CGTOOLS)/bin/ar6x rq( h! I. a3 R! T3 ~( w2 u$ \# O
34 LD = $(CGTOOLS)/bin/lnk6x --abi=eabi
% y, l/ O5 A) h- B( e+ A( r35 ST = $(CGTOOLS)/bin/strip6x6 q# }# @# f  K7 ^4 }5 y
36 , U# o! _* m$ b* W2 t% ?
37 CPPFLAGS =
2 Y( I" J  m7 ]  T38 CFLAGS = -qq -D_DEBUG_=1 --symdebug:dwarf -I. $(COMPILER_OPTS)5 }, s' ~- J; t( b  Y
39 ) ^, S  m, j: C( e: O7 C" `
40 COMPILER_OPTS = $(shell cat configuro/compiler.opt)1 W! }1 T. Z- S, @7 G4 j
41 % m; J' [5 D5 ^4 U% M
42 LDFLAGS = -w -q -c -m $(@D)/$(@F).map     7 _+ |  }+ a2 @7 P4 a
43 LDLIBS  = -l $(CGTOOLS)/lib/rts6740_elf.lib    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序( w) o( p7 |0 z* A- J( q
./host/makefile
* ]+ l: I8 }6 l" m9 w: S2 o  K# l1 R3 d( w3 E" M
1 srcs = main_host.c App.c                       # 在此加入 c 代码文件
6 S# f* u4 Y6 {! j( O 2 objs = $(patsubst %.c,%.ov5T,$(srcs))8 Q( _: D5 w$ u5 }% ~
3 libs = $(SYSLINK_INSTALL_DIR)/packages/ti/syslink/lib/syslink.a_debug
- k/ I, l) X: ^- Z0 q/ b 4 2 }5 V. ]7 D; R2 m9 E% F+ ]
5 -include $(patsubst %.c,%.ov5T.dep,$(srcs))
* E( G' i. ?* N) o$ J 6 0 `8 o( ^' Y) T2 K; ]: i- \
7 all:4 D) @& d3 w6 b0 W. O  e- h. V/ O
8     $(MAKE) app_host
4 u% p1 b4 D4 ?, [3 F 9 : j; s% _! @% [$ ]2 p
10 clean::9 C# S. @6 K2 P- q! `
11     rm *.ov5T* *.map app_host
1 l# {9 G( ]9 k+ ~# V3 _" d3 B12
, }; k7 B% J/ p! j% e& |13 app_host(objs) $(libs)+ }9 R' T7 T, Y, X0 O, N
14     $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)$ k; t# Q  w7 p) D$ s( D& G
15 ' |4 |9 y' \9 x& h0 L  I
16 %.ov5T: %.c
0 @2 |# L, G6 F9 ?3 _17     $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<
. e3 V4 N4 J! q2 I, m( Z) ]18 1 h" y( A  _' E
19 CC = $(CGT_ARM_PREFIX)gcc -c -MD -MF $@.dep -march=armv5t
* ]6 x$ {' ]. a# i: P4 c. T% D7 M20 AR = $(CGT_ARM_PREFIX)ar cr
& v( B+ r0 F3 [! O+ A, [! n21 LD = $(CGT_ARM_PREFIX)gcc/ @8 ^3 \* i6 i+ H1 a% K- ^+ _+ i
22 3 D3 T( h# P; R* Q5 ]: C1 w
23 CPPFLAGS = -D_REENTRANT -Dxdc_target_name__=GCArmv5T \
  B7 `8 S6 m4 k7 B/ S. E0 e4 }2 Q24            -Dxdc_target_types__=gnu/targets/arm/std.h
+ P$ d. g9 p- s( D) {, P2 Z25 3 v% ^0 e/ Q: @* \
26 CFLAGS = -Wall -ffloat-store  -fPIC -Wunused -Dfar= -ggdb -D DEBUG \ # 在此添加头文件的搜索路径0 i: h. k( m* v8 {
27          -I $(SYSLINK_INSTALL_DIR)/packages                        \) ^' {' m: T7 I5 F& [# t& H" V
28          -I $(BIOS_INSTALL_DIR)/packages                           \5 \& A" P' A0 c. B, f' E3 k
29          -I $(IPC_INSTALL_DIR)/packages
; a: o7 e. `9 w3 B, ^# h30 # M/ |, T; O, G: o' ^3 F2 e
31 LDFLAGS = -ggdb -Wall -Wl,-Map=$@.map
' Q' w) V* F& Q2 o1 I1 ?% z/ B8 p# ]- f32 LDLIBS = -lpthread -lc -lrt                    # 在此添加需要用到的库,如果库之间有相互依赖,需要注意其添加顺序
& ]% f0 f" k! ?+ ~编译工程5 t& i/ [! h- o" g4 S
/ V+ a: i+ c* x, d& W/ X7 C1 H: a6 [
 makefile 文件编写好后,编译工程只需要打开终端,进入 ex01_helloworld 目录并运行 “make” 这个命令就可以了。如果编译成功,我们将得到在 DSP 端运行的 ./dsp/server_dsp.xe674 和在 ARM 端 Linux 下运行的 ./host/app_host 这两个可执行文件。
6 y' H+ N' J6 y  X" h: m0 M+ t' Q) ~8 v, b6 y, t
运行工程2 D: p. ~0 k! c- L. X: I& t- `

! d2 s4 n& F0 N. O 要运行一个双核工程,需要在目标机器上分别运行 ARM 和 DSP 的两个程序。9 f* K4 Z, f, ]9 d$ i- O

9 R: E' ]  F' t6 R2 g( y7 ^1. insmod syslink.ko                    # 加载 syslink 内核模块
/ O: X4 x$ J; I4 z, m2. slaveloader startup DSP dsp_app      # 加载并运行 DSP 端程序1 Y6 d1 O7 m7 A* \% v9 u
3. arm_app                              # 运行 ARM 端程序
! ~* C! ~0 ?9 {3 r4. slaveloader shutdown DSP             # 停止 DSP 端程序% ^0 K8 k( n2 Q! s/ m4 I( u* f
 sylink.ko 和 slaveloader 我们可以在编译 MCSDK 时得到。
' q7 v$ [! Q' U: E! K* v1 j7 h$ | 为了方便运行工程,我们在 ex01_helloworld 目录下建立一个 run 目录,在其中放置 sylink.ko、slaveloader 和 run.sh,启动程序时,运行 run.sh 就可以了。
7 k4 S' \; |2 Z- o% ~- i' N: A( b1 Z% F8 w& A
1 #!/bin/sh. K" @9 [# U, [* |- T$ V
2 . o( o7 ?$ S1 ~4 Y* Q
3 set -x( r7 ]5 y. G9 [
4
9 }) o+ f! [5 m( X$ s 5 insmod syslink.ko  `# @4 ^7 y" i0 |! O5 ^! l
6
/ s& c- u. r0 S  r 7 ./slaveloader startup DSP ../dsp/server_dsp.xe674
& r# u/ o6 K! V: _: F* e* Z 8
4 A* M8 V* V7 c 9 ../host/app_host DSP4 t! Y1 h+ b- C: `3 Q
10 , Y) h9 _2 _/ K% o$ K9 F# @
11 ./slaveloader shutdown DSP. \: M& i# _/ O% |( E( {

+ b+ P( _. Y5 p. [4 |7 a2 `8 q* v
回复 支持 反对

使用道具 举报

6

主题

22

帖子

121

积分

注册会员

Rank: 2

积分
121
地板
发表于 2016-6-15 16:39:56 | 只看该作者
tenny 发表于 2014-9-19 18:053 v1 w# H" ~* [* A. Y/ a! t1 F/ `
建立工程; q( V% j# W. p& c4 d$ F9 n  }
# d( ^/ S# Z$ h; X
 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...
4 S- }7 n0 V& w* V* i
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
& X' V) ?( [8 [6 x1 g# M0 i建立工程1 `! o8 h9 |+ Y8 j/ I. o% X

/ O5 T4 m3 \) D! D- R5 d/ T 这一节将涉及到 ex01_helloworld 这个例程和 GNU make 这个工具,但我们并不会进行源码的解释 ...

) N1 h9 L6 M6 H& Z9 sslaveloader startup DSP dsp_app 里的dsp_app怎么生成的?
回复 支持 反对

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

0

主题

113

帖子

2190

积分

创龙

Rank: 8Rank: 8

积分
2190
7#
发表于 2016-6-21 16:59:08 | 只看该作者
zxbdlv 发表于 2016-6-15 16:40
9 V! m' A+ J" G; c& a/ I# w! R( y0 \slaveloader startup DSP dsp_app 里的dsp_app怎么生成的?

, o8 ]3 U2 ]' i4 U3 Cdsp_app 就是编译的目标,可执行文件。通过 makefile 里的编译规则编译生成的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 07:58 , Processed in 0.046286 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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