TA的每日心情 | 奋斗 2020-3-25 15:17 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于仿真器的程序加载与烧写- 查看仿真器是否安装成功( ]$ [( I3 b* l1 Z0 G5 r9 B2 `
广州创龙配套多种版本的仿真器的工程仿真配置文件,均在光盘目录下"Demo\NonOS\TargetConfig\ccxml"里面的。
2 [4 T* n1 h% \) r* H如下TMS320F2837x的开发,均以TL-XDS200仿真器为例。开发板断电,连接好仿真器和开发板,并将仿真器的USB口插进电脑USB插槽,开发板上电。右击计算机图标,点击“设备->通用串行总线控制器”或者“设备->端口”,查看是否有对应的仿真器的选项出现,如有说明仿真器驱动已经正常安装,否则请先正确安装CCS。 a% r6 Q- m1 G: a, p
![]()
e6 o' A* N# H1 e$ h* V图 1/ q, u; H* W! x2 f$ w
; }* `/ G9 R- h3 u& b+ O, r. ~CCS集成开发环境自带XDS100及XDS200系列仿真器驱动。如果仿真器无法正常使用,请检查是否存在驱动冲突,XDS100系列仿真器使用FTDI芯片,请检查是否与已经安装使用FTDI的USB转串口驱动冲突,如使用XDS200仿真器,请检查计算机中是否正确安装USB转串口驱动或者尝试重新安装计算机主板芯片组驱动。3 a( E2 E2 ~- v. E* ]5 I' ?; u
: P1 S. H# q1 G3 i2 b/ a! X+ T* h
- 设置工程配置文件信息8 }+ V0 b" `6 ^/ s- Q9 o2 X
请先按照相关软件安装文档安装CCS,然后打开CCS集成开发环境,点击菜单"File->New->Target Configuration File",如下图所示:
2 \0 A! t7 L f![]()
* @ e( W0 `0 j! o4 B图 2
4 z: p. z* r# R) J! C# n5 r) Y6 f- R/ \& h
在弹出的界面中输入工程配置文件名字,然后点击Finish。如下图所示:# [! \" K5 @6 n. {" U8 a
![]()
; f$ T' v6 J% b1 F+ o/ E图 3" m2 E2 c$ [/ L a! b
8 ~. C/ u1 o/ a* k- f+ g3 u在弹出的对话框的"Connection"下拉框中选择对应的仿真器类型(如使用TL-XDS200仿真器请选择"Texas Instruments XDS2xx USB Onboard Debug Probe"),在"Board or Device"下拉框中选择对应的CPU型号:TMS320F2837xS,并点击保存。如果CPU是双核,请选择:TMS320F2837xD,如下图所示:
5 p. z# h6 C, q- r![]()
$ z( V4 D/ M* |8 W! w图 49 v+ _$ V% r% @' L2 U. R* M
8 a9 k$ m3 B u! O4 I
仿真器连接开发板,上电后,点击"Test Connection",测试仿真器是否连接成功。如下图所示:; V7 c T9 f% P# R
( G4 y+ h f8 C! n
图 5( v z3 N0 V" e) _0 J* S$ m
8 N9 ]) J! [3 L' u% [' @
GEL文件主要用于在仿真调试的过程中对CPU进行初始化,如PLL、DDR等,还可以执行一些调试操作。CCS集成开发环境自带"f2837xs.gel"文件,为默认选项,可在Advanced界面配置。
* D, o' u$ X4 O: Z5 g5 @. V% A![]()
3 H, {$ g1 }, k图 61 l% H: q# s2 \9 y& M- y
9 O! ]6 m. d) I$ R7 g2 ?
点击CCS菜单"Run->Debug",弹出以下类似界面,可以看到C28xx核,是可以加载GEL文件和程序镜像的。# D$ u0 N$ p9 q1 v8 Q
![]()
8 H7 [& o; d/ M5 ^4 d图 7
8 r) Q' y1 J9 r+ P5 S" L
2 {+ A2 R0 E8 _右击对应的DSP核,在弹出的界面中选择"Open GEL Files View"选项,右下角会弹出"GEL Files(TMS320C28xx)"对话框。
2 F) j( b' Y5 r' A: ^ + I5 T1 W9 M: A
图 8
( O) N+ I6 V& n6 @* V3 h2 Y% n3 q0 d) \# K H3 S& k
若前面没配置,可在对话框内点击右键,在弹出的界面中选择"Load GEL"。选择对应目录下的GEL文件,再点击确定,接着右下角的"GEL Files(TMS320C28xx)"对话框会出现Success提示语句,如上图。
; a4 ?( L6 w. r( F
8 H- p7 `4 W3 b6 U. z; a- i- CCS连接开发板CPU
, n" n4 Z6 ?7 x( j. I 右击对应的DSP核,选择"Connect Target"选项,会显示Suspended状态。这说明CCS已经和开发板CPU正常连接起来了。
5 r8 z+ x4 R; D * A8 \' @6 m9 t8 H/ G/ X$ t. X! m
图 9
& b; A8 N+ W. z
) r! }$ p2 {# _备注:如果此处提示"No source****"的信息,不是错误信息,可以将其忽视。
. g. d% N6 t7 \# l/ k2 v
$ j/ X7 @" z/ I- 加载程序镜像文件
$ r: u" G: g" m/ O 点击"Run->Load->Load Program",选择程序镜像文件(光盘"Demo"目录下有用于演示的LED.out文件,现象为底板LED灯被循环点亮),可选择并点击OK。接着点击绿色三角启动按键,程序即可正常运转起来。" p3 |/ z) v3 v
) L. a( M j9 Q
图 10/ \8 v! G+ d4 }7 J1 i0 y% d7 r, e
' A/ ]8 q6 i$ P; x
![]()
" ~! K6 N8 F; y4 d7 N, e* S
0 |5 B) o) k& T+ S! z# l; L: E; ^6 D图 11) V# `* l4 q1 ^) N2 @8 e/ c; N
( g) J1 t- Z% u& C5 ]& I
- 烧写程序到FLASH! ?9 ^" R8 U7 k# h" ], K
烧写单核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。具体烧写步骤如下:8 R& d- S' |: ]0 e4 Y
添加CMD文件
0 d& ?3 \% V* y右键工程点击"Add Files…",在弹出的对话框中选到"2837xS_Generic_FLASH_lnk"文件,路径为光盘"Demo\F2837xS\NonOS\F2837xS_common\cmd"目录下。$ m; A7 Z. M0 ?* D5 Q1 J
![]()
, g5 i1 Y1 A1 I; o$ C图 129 Z8 K! p, b$ J$ O9 z7 ^
* W$ U: }1 \6 X! a![]()
V) ?! [* b( o ]& a图 13
, \: a; e# w4 N1 p7 F! S
) e! ~- Z8 z1 H在弹出的对话框中,选择"Copy files",然后点击OK。, ? {' m: F9 }6 ]
![]()
5 a, @) X5 v9 \$ h& q* \ i- V图 14
- |# n0 i- S) F' L7 T; y$ V
" T' R8 N2 y. u* B% n编译程序镜像文件
0 I9 U* `! M+ X& ` H先右击工程中"2837xS_Generic_RAM_lnk"文件,点击"Exclude from Build",再右击工程,点击"Build Project",即可对当前工程编译。* h' X; d+ B1 z( a2 c9 c j
![]()
9 D5 Z( s4 Z' L图 15
0 a8 b( }) p7 m" e
- T9 Z1 c1 ]2 r, ]+ c9 x烧写程序镜像文件
8 q; V7 [- e: U8 P9 K1 r点击"Run->Load->Load Program",选择刚生成的程序镜像文件并点击OK。加载完成即烧写完成,重新上电就可以运行程序。4 n' j( Z$ h8 j# r- y6 J
( Q/ q/ B# ^ E3 v3 Q5 [, v5 S0 A
图 16
+ \ g. l+ f* E) E- a( Q
( o$ _8 N2 s7 K0 x3 L如果遇到烧写效果与仿真效果不一致,则有可能为例程中存在延迟函数,导致运行效果延迟较大(几百秒以上)或无法运行,解决办法如下:
% T) }; F! s8 p! e$ H( R请双击工程里的main.c文件,在文件里查找是否有"DELAY_US"函数,如下图:. Z2 V7 ]# A: I: r
![]()
8 E2 `; {8 D# O图 17
9 z/ q# a0 \8 Z+ ~$ w8 D- M* X8 Q) Q$ E& v0 s
![]()
- @; ?% W: D5 Y0 Q! K0 \3 [$ M图 18& f2 V. ^5 c* S$ I" P. b4 m' F
9 {' t2 v2 \9 [将其注释即可。; \4 j' h S. a1 b! t* j3 k P) b
如有,请在文件里加入外部定义和复制内存地址代码,并重新烧写,添加位置如下图。
* t1 O# }; X% c/ p# b外部定义代码:
9 q, q2 r" b7 V- [0 G! `extern Uint16 RamfuncsLoadStart;2 y0 \* x' } C
extern Uint16 RamfuncsLoadSize;% t2 r$ i( ^! n! s% t# L/ E) T
extern Uint16 RamfuncsRunStart;
1 t! V: X g l7 O M4 W8 D复制内存地址代码:
6 m1 X. U& b) U3 b6 @mEMCpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
6 u6 u- X- o3 E![]()
5 h% e) P" o1 D9 U图 19# O0 v8 ]$ t0 O: C$ R+ W6 k7 K6 j
8 f0 ?5 P8 G( J/ o) C# p W0 W
备注:如果遇到烧写不成功,请按以下流程进行操作:
- k$ W+ n% U% i3 r1 o: {- "Help->About CCS->Installation Details->Installed Software",搜索flash,点击"Debug Server Flash",Update更新即可。
- 更新完成,提示重启CCS。- B4 X2 ?9 T; g$ ]& y% g* p. L
重启完成后,Debug Server Flash版本会变成Debug Server Flash 6.1.0.1425。
' R$ X" e0 @- k i4 J; r- {1 v6 \5 m0 z; M- B. G, W
烧写双核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。
& f5 Z. F) u9 d- F. |以双核工程led_flash为例,具体烧写步骤如下:
3 O/ z. @- ~ z% W- W* O按照工程文件的导入步骤,将led_flash_cpu01和led_flash_cpu02的工程,导入到CCS的Project Explorer窗口,如图所示。9 e* @! D; O" N
![]()
9 L& d( K0 Z: P6 u图 20
( P G' t, y& Z$ Y2 f- r. ]1 h+ m; @+ n- O0 }" @4 B5 e g
打开led_flash_cpu01的工程目录,右键点击"2837xD_RAM_lnk_cpu1.cmd",左键点击"Exclude from Build"选项。* D6 V( H% L" ~* [( k: d6 R8 F7 V
" Y/ j; y/ z( J7 B% m9 `
7 Q( l, Q4 l4 B5 a& X8 f. }6 V
图 21
. S8 C p3 U# J9 l7 p0 S( `3 j( I' [ V# K( o$ k$ w
然后,在led_flash_cpu01的工程目录下,右键点击"2837xD_FLASH_lnk_cpu1.cmd",左键点击"Exclude from Build",取消该选项。. L. W; g- P" r+ u5 V* V9 F
; ~: }& A4 H* h9 a8 _+ y" S) N8 `
图 22
/ H# S. {+ T7 |- ~6 B8 t" b i: w0 v% E, d# V
在main.c文件的定义中,添加以下代码,如图所示:
+ f; O2 J' I# P9 Z#define _STANDALONE
1 i: I' _7 F1 C3 t% J# Z#define _FLASH
8 M7 D @/ } ]9 D#ifdef _FLASH; `; W, f2 {) Q/ \
extern Uint16 RamfuncsLoadStart;
! g# u1 x! H3 l( Q1 vextern Uint16 RamfuncsLoadSize;" d) U0 o$ S! e t4 J
extern Uint16 RamfuncsRunStart;; ^7 S+ j7 m( n
#endif5 E# U9 O$ |" `' v# m( ]8 n
; D. b# ~9 M0 J9 o% ^. A
图 23+ b" N9 L0 @- {) i+ N
3 G; A w& K- W- w0 j8 n
在主函数中,添加以下代码,如图所示:$ G _4 o3 _2 s: A9 n% H" { H' u
#ifdef _FLASH- p; c* G: A( m8 C& s& w2 v% V0 ]
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);6 v+ V& s/ ~% m. j6 S
#endif) W0 o0 f7 P5 J9 k
( A; d3 \4 M b" ?+ A#ifdef _STANDALONE& q- q/ W! s& D2 X
#ifdef _FLASH. Q5 M- S+ }1 B H, ~
//发送 boot 命令,允许 CPU2 开始执行应用程序* T1 r4 q0 J5 F: H
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);/ \0 F, @+ Y. g1 T
#else' \* Q. A6 Z( P& T' r4 E- `
// 发送 boot 命令,允许 CPU2 开始执行应用程序 V* `& j* R) x7 o: H- s' b0 Q$ c
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
, h" u, P& |. H$ b+ y8 `) R2 T1 u#endif; q" R X7 ^; ^
#endif
( Q, H& @! W' _+ k8 h3 {
$ u. K5 g+ [4 M; x# C! t7 p// 片上 Flash 初始化5 X3 X J) V6 k2 v
#ifdef _FLASH
& i, P: x6 L9 R' Y, n InitFlash();
0 l& |+ t: |, J+ e1 u' \#endif* y9 x; G1 D* b. G3 X$ B* K
![]()
0 b* _' O3 l" `8 p" I/ ?& [. [, t图 24 D i( o: p+ {
7 N. ]" k# D5 k6 [) _% e) ?保存修改,点击"Rebuild Project"选项,重新编译工程。; o; t4 J& v+ x. T8 w3 T
4 E% @0 O2 R. b% U9 R
图 25
: H; }1 O' s, o/ ]; a! C5 M9 Q1 x3 N# G: s9 y4 F# ^8 L7 B
打开led_flash_cpu02的工程目录,右键点击"2837xD_RAM_lnk_cpu2.cmd",左键点击"Exclude from Build"选项。
5 ]: S8 x Y# | t % H, r. ]: \% ?+ p7 C0 o
图 26, G, m% x4 m/ c3 `5 Q% J
3 W1 Q; a% v" x: N然后,在led_flash_cpu02的工程目录下,右键点击"2837xD_FLASH_lnk_cpu2.cmd",左键点击"Exclude from Build",取消该选项。
3 d( g f3 T/ l2 \9 e 1 t* J" E8 Q+ j4 v' C2 O& ^! P! @3 u
图 276 G# t f1 }2 F" @1 t, `* k
; P; A/ k: s9 E- s在main.c文件的定义中,添加以下代码,如图所示:, k% N& B% l4 r* T. N) a% l
#define _FLASH6 n4 s* S; a8 l1 q/ R
#ifdef _FLASH
5 N6 g9 f8 s& O/ |+ b* mextern Uint16 RamfuncsLoadStart;
( Y' I0 ]) ~" y' S7 j1 V! Zextern Uint16 RamfuncsLoadSize;! m8 p3 B1 C4 \% `' w) w
extern Uint16 RamfuncsRunStart;5 R; F' _6 A/ {' e4 U
#endif
) |! u9 N0 O- f6 B$ m V8 c. Q![]()
7 K" _% u! {% H/ a图 28
, v5 s5 b0 y' Y! m. i+ H
8 ]& N# g; P0 k" P' f. ]6 Z在主函数中,添加以下代码,如图所示:) U- Z, T7 R! u9 [7 `; ]3 G
#ifdef _FLASH/ H6 ^0 o6 N) \8 F0 b8 h! q
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
! s' j+ R$ L- R$ O" _ y1 @0 y#endif: ~/ k4 h* g5 s" t. a
% c" C" I: l" H6 s1 Z// 片上 Flash 初始化
2 i0 S9 Q _, W& ?) v1 P) a& U#ifdef _FLASH
% q( S+ u2 J7 u* j InitFlash();
: `0 O5 S! `- Y#endif
7 e s# r4 r$ A# T, c. G![]()
8 s$ V1 _* j6 r% G. r( l图 29
7 D5 l* V1 X+ F7 w A( ^ l* x7 s% Y4 A( H, z* B- T a6 e& l
保存修改,点击"Rebuild Project"选项,重新编译工程。3 w: V5 \( r* m! ?1 p% s& G% C( f' l; m
![]()
9 R' O' _1 Y& _7 |( ~- C0 `图 30
: ]; g. O4 u" ~. h
8 R2 p4 s4 [4 r$ k7 s- n9 g. V按照工程导入步骤,将生成的led_flash_cpu01.out和led_flash_cpu02.out文件,分别加载到CPU1和CPU2。: U. B9 a( f: I' W) j1 ^
开发板断电,然后重新上电,就可以正常点亮,核心板上的LED流水灯。
7 X; A) g. Q/ H' @7 l 烧写双核SYSBIOS程序到FLASH以SYSBIOS的LED工程为例。/ F$ t- L& e( r' b$ V
将光盘资料的Tools目录下的"TMS320F2837xD_BIOS.cmd"文件,拷贝到对应的工程目录下。
7 j& y' g" B$ Q# ~" @6 Q![]()
% X7 X& j6 \) L0 S0 y7 P4 ^+ N图 31
# }6 Y+ _' r2 q3 _, d" H- L4 g3 S! C6 D
按照工程文件的导入步骤,将光盘资料中"Demo\DSP_F2837xD\SYSBIOS\Application"路径下的LED工程,导入到CCS的Project Explorer窗口,如图所示。
4 E+ s# N# G/ M4 l![]()
( ]6 ^5 R5 |* v* X1 r3 J图 322 F' q8 e1 w% @0 ?
1 R; E3 g! x0 i( l; X: ~8 ^
打开sysbios_led的工程目录,右键点击"TMS320F2837xD.cmd",左键点击"Exclude from Build"选项。
! m5 w# I8 R, P' U H0 I 8 k3 @- @9 o# J# D! `
图 33
4 W, I3 h) a$ V. B& r7 {8 D$ g; n0 D
双击工程目录下的app.cfg文件。
0 q2 T2 @1 B; r' o 8 k# d+ v* o% d2 S0 E7 ?3 T. T
图 34
) N( y) y3 Y3 U1 A+ V: A$ b; H/ o0 R( s1 H' H9 x% n
点击Boot选项。, z8 q; q1 K; u( i7 h3 x
" F- _/ n% l$ ~3 k4 S
图 351 m, E8 x- v2 M
; u% _6 b! E; W
确认Boot配置,如图所示。9 ~" c$ v: `2 E8 z3 y8 i
* l( Q8 V, V9 v( ]& x8 s) j) s
图 36
' c5 B# N6 _) ?0 v4 ~
3 |, @ K4 ?" M2 A保存退出,右键工程,选择"Rebuild Project"选项,重新编译工程,如图所示。
5 S' h; l3 `- m# V![]()
) J$ N) S8 |! g图 37, ~$ C2 s! w3 Y$ n- z/ y, {8 |
7 }2 ]+ u" l; m# K" [8 C/ m
按照工程导入步骤加载sysbios_led.out文件,然后点击程序运行 按钮。/ U; B! H/ k/ ?( Q/ _
开发板断电重启,烧写到FLASH的流水灯程序,即可正常运行。
: t1 \2 U. [6 T% h9 V
1 e+ H* y- y- Z( @, U: O$ H5 Q( X |
|