TA的每日心情 | 奋斗 2020-3-25 15:17 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于仿真器的程序加载与烧写- 查看仿真器是否安装成功
& S- M) Q' |4 c; S! B 广州创龙配套多种版本的仿真器的工程仿真配置文件,均在光盘目录下"Demo\NonOS\TargetConfig\ccxml"里面的。
2 [7 q: z" V# A" I如下TMS320F2837x的开发,均以TL-XDS200仿真器为例。开发板断电,连接好仿真器和开发板,并将仿真器的USB口插进电脑USB插槽,开发板上电。右击计算机图标,点击“设备->通用串行总线控制器”或者“设备->端口”,查看是否有对应的仿真器的选项出现,如有说明仿真器驱动已经正常安装,否则请先正确安装CCS。
) o1 Q3 J* N7 {![]()
1 D/ y9 ~# n$ S1 [图 1
O3 |1 H, U) S& D# \- a) q) V2 j* ~: F! A4 A
CCS集成开发环境自带XDS100及XDS200系列仿真器驱动。如果仿真器无法正常使用,请检查是否存在驱动冲突,XDS100系列仿真器使用FTDI芯片,请检查是否与已经安装使用FTDI的USB转串口驱动冲突,如使用XDS200仿真器,请检查计算机中是否正确安装USB转串口驱动或者尝试重新安装计算机主板芯片组驱动。
9 c" m9 O; k% M7 M8 T; b
F7 G1 T8 ~% Q( _, s" G- L7 P- 设置工程配置文件信息
) D+ t8 L$ _, T$ r+ n6 J 请先按照相关软件安装文档安装CCS,然后打开CCS集成开发环境,点击菜单"File->New->Target Configuration File",如下图所示:/ H; p( M- y+ U: @6 ]+ i3 D2 b7 \% w
- y' J$ \9 a% m
图 2
: A& a: W5 n0 O9 F8 n( I! J8 N: G* L2 F: \7 J @
在弹出的界面中输入工程配置文件名字,然后点击Finish。如下图所示:. J+ l( R# w6 Q# P+ _! i
, p+ T3 r4 `! C$ ~: E9 _2 M
图 3( K: h% U% f9 r# H0 w
: o3 `/ u; [( p在弹出的对话框的"Connection"下拉框中选择对应的仿真器类型(如使用TL-XDS200仿真器请选择"Texas Instruments XDS2xx USB Onboard Debug Probe"),在"Board or Device"下拉框中选择对应的CPU型号:TMS320F2837xS,并点击保存。如果CPU是双核,请选择:TMS320F2837xD,如下图所示:
! O# t8 X! O! Q: b# N ; L; m7 f8 g* a' l
图 4
" s7 Y2 o: w' t, u+ k8 Y0 L/ {8 ]9 O% D
仿真器连接开发板,上电后,点击"Test Connection",测试仿真器是否连接成功。如下图所示:
. Q4 |. G) ~- K" y! t![]()
( M! o- x7 O/ j8 O. o图 5# T4 k# A" E0 ~# C+ K! i: w# F: c
2 }4 E) [ z' x. ~" D6 h# o/ S) gGEL文件主要用于在仿真调试的过程中对CPU进行初始化,如PLL、DDR等,还可以执行一些调试操作。CCS集成开发环境自带"f2837xs.gel"文件,为默认选项,可在Advanced界面配置。$ N5 U. J! `8 A& l
![]()
( O7 G9 D" t% V% G0 Q: Y图 6
| D' p7 A6 u p& \7 B
& i. V% L9 c; `6 v2 z) E8 ^' h+ m4 E点击CCS菜单"Run->Debug",弹出以下类似界面,可以看到C28xx核,是可以加载GEL文件和程序镜像的。: U: @4 \8 j) o" }
![]()
) _* t* z5 p! ]! k* I2 w图 7
@2 F/ B9 r4 N w6 }4 E; q$ z$ V! T) Q9 W: O
右击对应的DSP核,在弹出的界面中选择"Open GEL Files View"选项,右下角会弹出"GEL Files(TMS320C28xx)"对话框。
! g# t! ?5 C7 s![]()
' f: s$ `% L3 q5 ?/ b/ ?图 8: f2 ^; e$ |) z
- z, c! O# V$ j/ ?2 Q- E- `3 n: q
若前面没配置,可在对话框内点击右键,在弹出的界面中选择"Load GEL"。选择对应目录下的GEL文件,再点击确定,接着右下角的"GEL Files(TMS320C28xx)"对话框会出现Success提示语句,如上图。! \, w- c( j* V. a. F( ~- I0 |8 q
/ ~- o7 ]) R* Y# A9 I2 ~' f _
- CCS连接开发板CPU
# J. G8 o; f' B! _1 i& g1 O* \ 右击对应的DSP核,选择"Connect Target"选项,会显示Suspended状态。这说明CCS已经和开发板CPU正常连接起来了。" {& m7 s$ P! p7 Q- a% Z! f* J
2 Q' _; U. O8 K v9 c" d1 N+ b
图 9/ x% K; _; ^/ P1 y7 P9 v) G& n& [
/ g( I: J+ T1 V- k9 T5 ]备注:如果此处提示"No source****"的信息,不是错误信息,可以将其忽视。; p. e1 c r( G, W1 f3 \% H9 h
" ]. @; W5 u& G ^9 q8 [- 加载程序镜像文件9 ^, M y9 s+ B, _. S
点击"Run->Load->Load Program",选择程序镜像文件(光盘"Demo"目录下有用于演示的LED.out文件,现象为底板LED灯被循环点亮),可选择并点击OK。接着点击绿色三角启动按键,程序即可正常运转起来。
K( M: y" M. r* w7 a![]()
) z* v' c6 G, k9 j图 10
* l7 j+ a; g4 h$ C7 V5 }( {7 f2 i) m4 a3 l' ?% U% f
/ O/ _( _, x9 j* w$ C- I( J
# I. E! p, U3 ~. n* |( J
图 114 V0 j8 N" G7 c8 t) K4 a( W E
5 D# N/ K, x! P$ u6 @# \& f( D! O
- 烧写程序到FLASH/ v( X, X$ B4 H, K0 m- P& `
烧写单核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。具体烧写步骤如下:
# E2 t, Q/ l1 P1 }添加CMD文件0 ]) I G# Y F/ S& k
右键工程点击"Add Files…",在弹出的对话框中选到"2837xS_Generic_FLASH_lnk"文件,路径为光盘"Demo\F2837xS\NonOS\F2837xS_common\cmd"目录下。
3 e' z) y. A" R% ^: }( I![]()
4 d+ r) t+ A$ F2 V3 t+ r图 126 }0 y; _- t/ \# T+ c; K, }
7 Z# l! t! z0 \4 P7 r
4 ^: p; ~; N/ g' i
图 13
1 ]& \% @3 ~/ c; H8 @
/ W- ^' `- d4 |8 g( X在弹出的对话框中,选择"Copy files",然后点击OK。
! z) s: ?9 W: N' U9 c- z![]()
! q1 `% F; K& U. Z h2 m6 Q3 y图 142 x Q: f4 V% C: p0 u% Z
% Y; ^" @( k/ R8 j$ i7 x编译程序镜像文件
4 j1 v2 V O! r1 z7 ~' r先右击工程中"2837xS_Generic_RAM_lnk"文件,点击"Exclude from Build",再右击工程,点击"Build Project",即可对当前工程编译。8 N- P( q1 i" x$ t9 l
( n. z6 r. W+ I: x8 C7 N
图 152 h- O0 c0 e0 D
. G1 ^2 W: s5 Q9 _& N8 Y, a' o
烧写程序镜像文件5 B4 O {' C- u3 e3 n; Y7 J
点击"Run->Load->Load Program",选择刚生成的程序镜像文件并点击OK。加载完成即烧写完成,重新上电就可以运行程序。
6 m$ D; x$ m5 B8 M: y' J : D' X0 ~! | u" m5 A5 s! g, n9 i
图 165 m& L( H% i1 _5 Q( }% E* |. j9 M
9 J$ p, o* z5 D5 l! S) f9 k如果遇到烧写效果与仿真效果不一致,则有可能为例程中存在延迟函数,导致运行效果延迟较大(几百秒以上)或无法运行,解决办法如下:8 ~$ i% X u) v6 {& O
请双击工程里的main.c文件,在文件里查找是否有"DELAY_US"函数,如下图:
5 @& a) g' C) A. E* F& |& h6 E![]()
5 B2 Z- d1 L+ ^, A! |+ K- s1 J图 17( C7 f# v1 B. R. L; a! F
7 s4 _' \5 B. X6 G* _0 z# O![]()
8 ^: y/ r) P2 F% X. C( ^图 18
6 F( b1 l5 C. L8 ]2 \4 X; d4 _2 f
~, A5 R) C# N/ @ J将其注释即可。, c+ \2 O, W8 o
如有,请在文件里加入外部定义和复制内存地址代码,并重新烧写,添加位置如下图。* {% z6 e) J8 a: @, C/ B
外部定义代码:3 u: ~3 [3 c% D. C# @* n; t
extern Uint16 RamfuncsLoadStart;7 @! [- F& p1 A# f* B* m# ?- e' y
extern Uint16 RamfuncsLoadSize;: I9 e* D/ K* l' ]) a- G( s
extern Uint16 RamfuncsRunStart;
3 K* ^- P b8 Q. ? ?复制内存地址代码: f. L0 w/ ?* u# }" L
mEMCpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
0 h# g u5 ]/ }, X6 F 8 a0 f4 L, S; B* f* Z
图 19
/ L4 _3 }$ n; H! ?7 |0 i8 ?$ J; g
, R2 q# V' X, D0 a: f' |. ~8 q6 C+ n备注:如果遇到烧写不成功,请按以下流程进行操作:
9 O8 H& U9 B. {- "Help->About CCS->Installation Details->Installed Software",搜索flash,点击"Debug Server Flash",Update更新即可。
- 更新完成,提示重启CCS。 L& V3 u0 F% g2 ^3 Z+ K" E
重启完成后,Debug Server Flash版本会变成Debug Server Flash 6.1.0.1425。
& T' @, l- H$ @% ~$ F% W
+ E$ P' ` N: R9 O, R% v 烧写双核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。# E: d6 ~ ], m+ d) N3 ?$ \ |
以双核工程led_flash为例,具体烧写步骤如下:1 |2 x! h6 J& K/ l! n- `
按照工程文件的导入步骤,将led_flash_cpu01和led_flash_cpu02的工程,导入到CCS的Project Explorer窗口,如图所示。
. w- e' b$ v6 P' E! u+ I 5 K+ q0 A, {* v+ Z6 }
图 20" t# P) M8 G- W+ a0 C
6 D6 e2 ~: \5 z, v/ e打开led_flash_cpu01的工程目录,右键点击"2837xD_RAM_lnk_cpu1.cmd",左键点击"Exclude from Build"选项。7 H6 v; J9 V$ q# @) [; A( |2 }
/ k0 u8 f- v. d7 q# t
0 R2 a+ k9 i4 V9 D
图 21: i3 N. |' G+ d9 D1 D& m: h8 t4 Y
" ?( }; r# s/ @% @" `: Q6 \( d* N然后,在led_flash_cpu01的工程目录下,右键点击"2837xD_FLASH_lnk_cpu1.cmd",左键点击"Exclude from Build",取消该选项。; L2 P' w8 U- l5 s5 w# U$ z/ H
4 ^. j' |# A3 n* Y7 o3 W5 g4 Y2 N5 J* M
图 22: R) k. Y8 B/ @
( Z& N8 J7 J) `4 d1 ^
在main.c文件的定义中,添加以下代码,如图所示:
. I, E0 r* v9 C" I4 ]/ v# ^, O#define _STANDALONE6 ]5 h/ Y! t' @" P3 u+ Q2 a
#define _FLASH
2 K/ Q* ^' Y6 @; J' q& u2 H$ t#ifdef _FLASH
) E+ Q7 }8 l% D2 V. yextern Uint16 RamfuncsLoadStart;! P/ \7 I5 j r, G
extern Uint16 RamfuncsLoadSize;
5 k, d/ |8 |9 J( G; J$ k* Jextern Uint16 RamfuncsRunStart;
, h! m. [0 c9 o6 U( I G#endif- r5 ?. E5 h i) M" i) U4 j2 U
; w7 W8 [! C3 A0 G$ f
图 23
6 a8 a4 Y5 y7 h6 O9 K8 H' M0 P9 ~8 K; l$ S, w8 A4 |: C
在主函数中,添加以下代码,如图所示:
) z, |' N4 l. m$ X% \% k#ifdef _FLASH
0 U+ _. Z* m. z/ G7 o! nmemcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
& C" W' c9 R: J3 f& `/ y$ g( X+ r#endif9 w& W( V) V- B1 h
5 m$ K# n* S' m- G#ifdef _STANDALONE6 A; j D$ X; Q" _3 w- H8 j- }
#ifdef _FLASH5 q# D- `5 g) z# W
//发送 boot 命令,允许 CPU2 开始执行应用程序
& |- {. A) j& ?, Z" |IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
2 l+ j m; W8 R [2 Z5 G1 X+ l- n#else/ t Y( i, o7 ~7 L7 C& k
// 发送 boot 命令,允许 CPU2 开始执行应用程序( o( M9 M: `. P# Z$ c; h
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
/ \& i2 ]4 I6 q/ w#endif1 D* a3 w" Y J) i) b
#endif' g* d1 ]6 @! ]
0 G& ?0 X# L2 s; r2 ]
// 片上 Flash 初始化' o r5 i- G! Z* \0 o. c
#ifdef _FLASH6 I- A: S; L9 s2 b' ?
InitFlash();6 F; U, I5 @. `: X! }0 B
#endif, X X9 U! y9 u6 L2 Z
![]()
1 x5 T5 n; R+ a( Q5 a7 e图 24
- k! A6 v2 ^4 f6 H3 {5 `
' G1 D- Y2 L& B& A9 D保存修改,点击"Rebuild Project"选项,重新编译工程。
4 ^- [0 \! G, }6 |: h# U! M 3 i6 @; y- j6 ]( a5 R' s
图 257 h9 r, R8 D' ~9 g, D1 j
; O ^8 \7 `+ t8 d' o打开led_flash_cpu02的工程目录,右键点击"2837xD_RAM_lnk_cpu2.cmd",左键点击"Exclude from Build"选项。
# b/ e7 \- d' P! K y( X; h![]()
$ R; R/ O# B" U) ~, |+ s* A- ?, j图 26
# y. l) I% m5 \2 S& a, U1 C1 [. ^
# m( Q9 i: K- F- ?然后,在led_flash_cpu02的工程目录下,右键点击"2837xD_FLASH_lnk_cpu2.cmd",左键点击"Exclude from Build",取消该选项。& g$ \" `8 M( L" v, o
% S2 v' ?5 Q3 W, O$ g Z5 D' D
图 27$ M @7 K1 u. \" ^
: W9 Z: u3 A+ G4 g在main.c文件的定义中,添加以下代码,如图所示:
' F( _% a s/ C) M. [#define _FLASH
! @. _* g `9 o#ifdef _FLASH" B6 U' G' ^1 r$ G/ Q" s
extern Uint16 RamfuncsLoadStart;
, a* A W d5 C# k7 x% \ \* kextern Uint16 RamfuncsLoadSize;/ L% u/ ^1 q2 y+ ~; c
extern Uint16 RamfuncsRunStart;
# N( r5 l, ]* B6 ?1 D#endif
! q) q" ]& l, @1 m7 t![]()
1 E( x' a" O( D& K' r( ~图 28
& v. g6 H% F( F* X
" @* S# m$ ~ \6 |, E3 K& q在主函数中,添加以下代码,如图所示:
* P$ Z# K% k; u* ~- N. F" `#ifdef _FLASH
3 z: G5 |0 W3 t/ e+ M) Imemcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);) s, N) Z5 [$ z7 {; D6 w
#endif' k# D; x1 [5 L# L& {3 P8 z% U; Z
7 V0 l B2 @9 V( o7 m A7 z// 片上 Flash 初始化
* z# n: k* q* D* A#ifdef _FLASH
* d$ y# Q% ?% [' u InitFlash();9 J* g! \- ?9 p) E# v, ~
#endif
* r' g; V; O8 k2 `5 h" s' t; B8 u+ U , j0 _, `# J* V0 Z
图 29) U: _2 F1 C- t
; P/ s3 n- x& x8 m* m# D保存修改,点击"Rebuild Project"选项,重新编译工程。
0 B# D+ C! e9 B' v! M7 n/ x![]()
- I2 c: G! C" J) i图 30
5 r) u, D8 }6 w! K. f8 ~. {& H/ u
5 a0 |4 U2 N% p/ x按照工程导入步骤,将生成的led_flash_cpu01.out和led_flash_cpu02.out文件,分别加载到CPU1和CPU2。$ W6 w8 r1 Z0 q- c
开发板断电,然后重新上电,就可以正常点亮,核心板上的LED流水灯。4 r7 T3 a" x! n2 ~$ V
烧写双核SYSBIOS程序到FLASH以SYSBIOS的LED工程为例。
3 Y5 S+ ] z; W' t/ h+ O1 \将光盘资料的Tools目录下的"TMS320F2837xD_BIOS.cmd"文件,拷贝到对应的工程目录下。) R: G: E' a6 G
![]()
) P4 ^3 i- o4 c# Z/ l: N图 31
$ G8 u3 n: y1 i6 p
* k9 V2 `; k! a- r! B+ x6 O! W按照工程文件的导入步骤,将光盘资料中"Demo\DSP_F2837xD\SYSBIOS\Application"路径下的LED工程,导入到CCS的Project Explorer窗口,如图所示。2 V% b6 K9 K1 h1 l. [ c# M
" ]1 P" Q2 L) c ]0 p
图 325 @% `! @& z/ h R$ N
$ |% q9 v h/ Z1 Z6 d" V! ]
打开sysbios_led的工程目录,右键点击"TMS320F2837xD.cmd",左键点击"Exclude from Build"选项。
3 W. c( d: U1 p" C# y* P8 d![]()
; m' f0 [+ m, V" w b图 333 O8 P4 p( q9 M2 A9 C; c" K
, g+ K4 }8 q2 X3 t5 F0 T4 D
双击工程目录下的app.cfg文件。
) b# X( |; K* R![]()
! v& {9 f7 X. _9 v9 f图 34$ R! V% U$ H2 H9 |9 m7 B7 `
6 k% Y, n, t- y+ _9 A8 I( I点击Boot选项。
& t1 l) }( m' N![]()
3 y3 Y* X- x* B$ P# ~图 35
2 u k' S' [/ | N% c3 D# K+ d- T4 `" }2 m6 {
确认Boot配置,如图所示。
' i# R' D+ |4 k ; [2 V8 N$ A2 c% ^5 E
图 36
3 M, N8 H1 k8 ~0 g$ G/ c$ u5 g. {2 r" U9 Y, N m
保存退出,右键工程,选择"Rebuild Project"选项,重新编译工程,如图所示。
- B# I8 @0 f8 |$ T% N/ K0 a % v; U* j1 ~8 f! Y; L
图 37
" R- \9 V/ ]4 X( A
9 o" M5 V7 w- b* B0 ~5 G6 c按照工程导入步骤加载sysbios_led.out文件,然后点击程序运行 按钮。
* i( r, ]' V1 e R1 T开发板断电重启,烧写到FLASH的流水灯程序,即可正常运行。
6 q# n2 o3 D8 I- X$ `7 \7 Q
. ?$ Z. q u8 ^! x* Z5 x |
|