TA的每日心情 | 奋斗 2020-3-25 15:17 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于仿真器的程序加载与烧写1.查看仿真器是否安装成功如下TMS320F2837x的开发,均以TL-XDS200仿真器为例。开发板断电,连接好仿真器和开发板,并将仿真器的USB口插进电脑USB插槽,开发板上电。右击计算机图标,点击“设备->通用串行总线控制器”或者“设备->端口”,查看是否有对应的仿真器的选项出现,如有说明仿真器驱动已经正常安装,否则请先正确安装CCS。1 @* ^3 }; T! B7 E( z
![]() 图 1 CCS集成开发环境自带XDS100及XDS200系列仿真器驱动。如果仿真器无法正常使用,请检查是否存在驱动冲突,XDS100系列仿真器使用FTDI芯片,请检查是否与已经安装使用FTDI的USB转串口驱动冲突,如使用XDS200仿真器,请检查计算机中是否正确安装USB转串口驱动或者尝试重新安装计算机主板芯片组驱动。
6 q7 F' Z+ C" O |3 I( H" ]3 w0 l. x
l6 ^4 a5 C4 K; W0 p2.设置工程配置文件信息请先按照相关软件安装文档安装CCS,然后打开CCS集成开发环境,点击菜单"File->New->Target Configuration File",如下图所示:5 w, N! [1 X4 O% X+ m# R
图 2 在弹出的界面中输入工程配置文件名字,然后点击Finish。如下图所示:
5 K! Q- H0 {3 e: i) f![]() 图 3 在弹出的对话框的"Connection"下拉框中选择对应的仿真器类型(如使用TL-XDS200仿真器请选择"Texas Instruments XDS2xx USB Onboard Debug Probe"),在"Board or Device"下拉框中选择对应的CPU型号:TMS320F2837xS,并点击保存。如果CPU是双核,请选择:TMS320F2837xD,如下图所示:
. [" M; U9 W; x0 B) X' }+ _) R3 K% a% V2 h
![]() 图 4 - ~' O4 P; l0 U6 i
仿真器连接开发板,上电后,点击"Test Connection",测试仿真器是否连接成功。如下图所示:
$ }( f, {8 N& f![]() 图 5
2 s# z* @5 J/ T4 M3.加载GEL文件GEL文件主要用于在仿真调试的过程中对CPU进行初始化,如PLL、DDR等,还可以执行一些调试操作。CCS集成开发环境自带"f2837xs.gel"文件,为默认选项,可在Advanced界面配置。
! ` H- z. g$ l3 Y' ^. v![]() 图 6
$ d. g9 V1 {; U: e5 i点击CCS菜单"Run->Debug",弹出以下类似界面,可以看到C28xx核,是可以加载GEL文件和程序镜像的。
' A9 i; I$ I* X0 X; N3 P![]() 图 7
! `" E! G3 A" z! S$ A右击对应的DSP核,在弹出的界面中选择"Open GEL Files View"选项,右下角会弹出"GEL Files(TMS320C28xx)"对话框。2 E2 i0 j- H+ \( L4 P
+ k9 e7 T: N8 N D# T
![]() 图 8
2 S7 {# s5 k5 Z+ d* _若前面没配置,可在对话框内点击右键,在弹出的界面中选择"Load GEL"。选择对应目录下的GEL文件,再点击确定,接着右下角的"GEL Files(TMS320C28xx)"对话框会出现Success提示语句,如上图。8 z w# Q+ M: ^$ T7 n
+ C: s# k, i/ w- _2 ?4.CCS连接开发板CPU右击对应的DSP核,选择"Connect Target"选项,会显示Suspended状态。这说明CCS已经和开发板CPU正常连接起来了。
7 ?/ u) P; H9 _2 R) T$ L
+ Y6 z+ |$ r3 C, M3 F9 g![]() 图 9 6 H$ E9 m: {- ]6 p
备注:如果此处提示"No source****"的信息,不是错误信息,可以将其忽视。% S% q: O) F* G+ X! E
" b, k6 s3 S! f6 O, [" R/ c, p5.加载程序镜像文件点击"Run->Load->Load Program",选择程序镜像文件(光盘"Demo"目录下有用于演示的LED.out文件,现象为底板LED灯被循环点亮),可选择并点击OK。接着点击绿色三角启动按键 ,程序即可正常运转起来。
* N7 ]: X: \) D/ D7 r+ W. ~7 _
" N( a1 o+ W. M5 x![]() 图 10 " B6 O$ ^& s* {1 ]7 F+ V3 }
![]() 图 11
8 X/ l+ h1 @/ r. c( ^# N6.烧写程序到FLASH6.1烧写单核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。具体烧写步骤如下:8 T* n' Y% p% c9 {7 F3 W9 y, {/ C
- 添加CMD文件; U7 a2 o X9 B. I Z9 \
右键工程点击"Add Files…",在弹出的对话框中选到"2837xS_Generic_FLASH_lnk"文件,路径为光盘"Demo\F2837xS\NonOS\F2837xS_common\cmd"目录下。" R6 y+ h& t3 n- r
![]() 图 12
" J2 w# S `; @" k G6 h9 i# A![]() 图 13 5 t/ X& C! ^7 q
在弹出的对话框中,选择"Copy files",然后点击OK。
/ N+ u% U7 `1 X2 n6 A, I
& h; K k* s) l! @& L) I![]() 图 14
" R& J: @$ {8 e0 j- 编译程序镜像文件8 B5 k+ z1 d* n: E4 F% z! J
先右击工程中"2837xS_Generic_RAM_lnk"文件,点击"Exclude from Build",再右击工程,点击"Build Project",即可对当前工程编译。
7 O2 ^% n7 i' T# v& U7 e; T7 G; O' p" @
![]() 图 15 . `' l4 q' D( W
- 烧写程序镜像文件* A O" t, c; S* A) a& Y7 t6 Y. ^
点击"Run->Load->Load Program",选择刚生成的程序镜像文件并点击OK。加载完成即烧写完成,重新上电就可以运行程序。$ D1 }9 d6 ]3 k* i. n4 S
+ E" r; j: M& D" n% |) G# d
![]() 图 16
5 v9 p- i. g% p; l- g/ m1 Y如果遇到烧写效果与仿真效果不一致,则有可能为例程中存在延迟函数,导致运行效果延迟较大(几百秒以上)或无法运行,解决办法如下:6 }% g# i+ C8 t4 ^8 r: n! J+ J L
请双击工程里的main.c文件,在文件里查找是否有"DELAY_US"函数,如下图:
) M+ N0 c2 k C
3 B% X1 `; W8 L![]() 图 17 ![]() 图 18
1 M) x/ M: T% c将其注释即可。
9 C4 f3 y* N. g( Y% o& G如有,请在文件里加入外部定义和复制内存地址代码,并重新烧写,添加位置如下图。7 [: R1 q# j6 B" u7 q: I+ r& r3 A9 Y& r- B
外部定义代码:
: i2 Z4 K! w+ v6 ~ wextern Uint16 RamfuncsLoadStart;0 [8 Y; U% [1 g) F7 K
extern Uint16 RamfuncsLoadSize;
2 [; [2 ?3 l' w& a- Jextern Uint16 RamfuncsRunStart;
9 W& }8 `, H3 q& S6 J* e% b" J复制内存地址代码:
1 P% P. d! ]) G$ ImEMCpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
/ C5 |8 r- C. W M( f Z3 u$ _" J4 }/ J V$ ?. t
![]() 图 19
; B3 D4 _& W0 m% k备注:如果遇到烧写不成功,请按以下流程进行操作:
6 F, D V4 v& O- "Help->About CCS->Installation Details->Installed Software",搜索flash,点击"Debug Server Flash",Update更新即可。
- 更新完成,提示重启CCS。+ N' X0 o8 \9 d) H% f! y* X' f
重启完成后,Debug Server Flash版本会变成Debug Server Flash 6.1.0.1425。
: A9 O$ N# _% d u. Z9 b6 i V1 [5 L: E; B
6.2烧写双核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。
' e; ]0 J- z8 [$ `1 r! ]# M5 ^: Z以双核工程led_flash为例,具体烧写步骤如下:
# `$ I. ?& k- K6 U+ F按照工程文件的导入步骤,将led_flash_cpu01和led_flash_cpu02的工程,导入到CCS的Project Explorer窗口,如图所示。; p5 G+ {- i4 e# V
/ |" q$ ^0 q: M% ?) [8 y# a![]() 图 20
1 d- D+ r; Q9 h- t, m9 N) u# C" M打开led_flash_cpu01的工程目录,右键点击"2837xD_RAM_lnk_cpu1.cmd",左键点击"Exclude from Build"选项。0 [: d: W' u* ?: L3 h
" a1 n" J& D. S( N3 a& i0 S6 N
![]() 图 21 / m0 U# u5 j0 q& ~/ }
然后,在led_flash_cpu01的工程目录下,右键点击"2837xD_FLASH_lnk_cpu1.cmd",左键点击"Exclude from Build",取消该选项。) x0 m; V1 O- ~1 |" M6 K
# G% `, S' |/ y, m
![]() 图 22 0 T) X# P. {7 X" a
在main.c文件的定义中,添加以下代码,如图所示:
% r/ W4 d% g+ H! i2 W#define _STANDALONE& y; i9 c5 V5 Z# l
#define _FLASH
7 N' o( `+ h- `; E#ifdef _FLASH
5 ?+ Z+ C" o3 z5 K o$ V+ r4 Mextern Uint16 RamfuncsLoadStart;0 C" T& D0 e6 B f" ]
extern Uint16 RamfuncsLoadSize;
! x; h7 v$ h/ v1 c% B+ iextern Uint16 RamfuncsRunStart;4 l5 m- U8 X& ?; X" l3 |+ l
#endif
+ V$ \* o6 o/ J, F- S' B![]() 图 23
4 q c$ a8 T) l |在主函数中,添加以下代码,如图所示:
2 f/ d) S0 ?: N; ~6 R* b7 V) o' [#ifdef _FLASH c! D2 `! a$ a1 v$ R" J) @1 n r
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);: g c3 d' \/ c5 U& a6 U- `) ~2 @4 T4 ]
#endif9 @; Y; A5 h) @( Y! V
! r% e" T4 `7 b- f/ j4 v#ifdef _STANDALONE
; e, ~" e2 ^- J#ifdef _FLASH' G, v2 S& \. ^/ ?" s) I
//发送 boot 命令,允许 CPU2 开始执行应用程序
$ ^& o5 h( l) w$ Z: RIPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);7 K3 L& {' e x3 v7 x" c1 Y& {* B
#else) U2 r/ L, p' B9 U9 n1 ~! }- D
// 发送 boot 命令,允许 CPU2 开始执行应用程序3 p/ q; z6 r( G9 J7 s5 y
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
* P0 l4 |% A: Q3 ~9 y$ q* X#endif
( d0 i) ^7 s* N6 P3 H#endif1 S) C: d( m. K
- O4 _1 f# V7 M
// 片上 Flash 初始化
4 P. E$ F1 B. x) D#ifdef _FLASH, d O& F/ m: y, B' w) y
InitFlash();
8 }2 M5 p4 z1 [#endif
7 d9 q( z, i# X
1 U8 Y& D! y! {4 v! ], j5 |![]() 图 24
2 R% p% T1 Z% @+ f0 E保存修改,点击"Rebuild Project"选项,重新编译工程。2 e, k8 ~4 G/ ^
- q6 w% Q) i0 C9 w1 @/ f6 K8 B![]() 图 25 8 u0 ^% c3 i+ N, K
打开led_flash_cpu02的工程目录,右键点击"2837xD_RAM_lnk_cpu2.cmd",左键点击"Exclude from Build"选项。
3 ~- N: Q( q9 Z0 i6 i: ^+ l
3 X1 H8 n9 o7 q \![]() 图 26 . `2 u- c# ?# A9 a
然后,在led_flash_cpu02的工程目录下,右键点击"2837xD_FLASH_lnk_cpu2.cmd",左键点击"Exclude from Build",取消该选项。
4 V$ d, h! `# V+ w" I1 h% s+ n. B# i$ T6 r
![]() 图 27
: _% L% ~7 Z( l5 n: a- C8 c在main.c文件的定义中,添加以下代码,如图所示:
+ B' P. x* U) {; C$ Z#define _FLASH9 V$ q* c! o3 v1 k5 v; e3 X
#ifdef _FLASH' h+ _, Q/ c( x; X) O
extern Uint16 RamfuncsLoadStart;
1 } a$ R7 x4 h, n6 Vextern Uint16 RamfuncsLoadSize;
- Z; J# T9 ?+ i* Iextern Uint16 RamfuncsRunStart;
" r! z# \, U' ]6 ]) P6 Q4 G; n#endif: `7 Y/ i) X6 w' ?1 _6 c1 h9 m
1 r% C7 ^3 t9 u
![]() 图 28 * K# I+ z. l4 i: P
在主函数中,添加以下代码,如图所示:
8 h/ s9 g+ d9 ?* a6 N) l. y8 T#ifdef _FLASH
* }* J8 F0 T; _0 ~memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
- D, d* d5 x0 H; }; Z4 l#endif
6 D- J; E, J2 r# p0 i' ?+ e: Z$ b; K) b$ o/ B9 o1 X9 e
// 片上 Flash 初始化, x: h3 M6 J G
#ifdef _FLASH% u) P3 s3 A% o
InitFlash();& ^# u" I$ S ^
#endif& F2 b* _0 z9 k; F! M
- s0 E, q* j, `" l% K; @8 |
![]() 图 29 , N5 m: d1 @# f* c& ^& r
保存修改,点击"Rebuild Project"选项,重新编译工程。1 U; X- `; H2 @$ ~ u8 ?
/ g" ]8 u" P9 u2 H![]() 图 30
2 l8 O# }3 Q. X- f1 }2 o' A按照工程导入步骤,将生成的led_flash_cpu01.out和led_flash_cpu02.out文件,分别加载到CPU1和CPU2。
2 B. w0 L9 t; J7 @# o0 k开发板断电,然后重新上电,就可以正常点亮,核心板上的LED流水灯。0 [, K; H8 n) s# m" S) _5 j5 ]
6.3烧写双核SYSBIOS程序到FLASH以SYSBIOS的LED工程为例。 C9 f# ^" i8 l+ F, g K. n5 k
将光盘资料的Tools目录下的"TMS320F2837xD_BIOS.cmd"文件,拷贝到对应的工程目录下。
2 w2 R( k( X# x: ?- [
9 B+ i, x+ {6 \7 w![]() 图 31
5 D! L. I; r; r, \3 K& n4 r" a按照工程文件的导入步骤,将光盘资料中"Demo\DSP_F2837xD\SYSBIOS\Application"路径下的LED工程,导入到CCS的Project Explorer窗口,如图所示。
, x! f0 A8 @$ K" d![]() 图 32 打开sysbios_led的工程目录,右键点击"TMS320F2837xD.cmd",左键点击"Exclude from Build"选项。
0 k) g4 T- i: d# b F }![]() 图33 双击工程目录下的app.cfg文件。 {* ]$ }% d# y
![]() 图 34
0 i1 R: y, O( i1 J# w4 ~5 h# e- U点击Boot选项。
7 \% L/ W8 u# }& g![]() 图 35
1 j$ D( a5 a& X" [- Q) M( l" E) _4 T确认Boot配置,如图所示。
+ @: D8 [& g0 E. N8 O; c![]() 图 36 ! r, o8 ~2 W' o# h2 n$ |& n
保存退出,右键工程,选择"Rebuild Project"选项,重新编译工程,如图所示。
2 y* y4 w7 R( \; F8 }2 y1 V* k' L" q$ |0 n" w5 i
![]() 图 37 按照工程导入步骤加载sysbios_led.out文件,然后点击程序运行 按钮。! I' ~9 I* G3 _1 |/ X
开发板断电重启,烧写到FLASH的流水灯程序,即可正常运行。$ w$ Q/ _/ x2 B- D
8 c% ?% u' i2 W |
|