TA的每日心情 | 奋斗 2020-3-25 15:17 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于仿真器的程序加载与烧写- 查看仿真器是否安装成功
5 H( k. {$ j8 t- [( t8 f8 y- v 广州创龙配套多种版本的仿真器的工程仿真配置文件,均在光盘目录下"Demo\NonOS\TargetConfig\ccxml"里面的。" b) v0 @7 L2 m6 |
如下TMS320F2837x的开发,均以TL-XDS200仿真器为例。开发板断电,连接好仿真器和开发板,并将仿真器的USB口插进电脑USB插槽,开发板上电。右击计算机图标,点击“设备->通用串行总线控制器”或者“设备->端口”,查看是否有对应的仿真器的选项出现,如有说明仿真器驱动已经正常安装,否则请先正确安装CCS。$ w& L( k1 g) Q
& i4 S. q" [( R5 }7 c: k9 P
图 1% y& p+ U" n# Y
% I8 Q' u% m2 ]! p
CCS集成开发环境自带XDS100及XDS200系列仿真器驱动。如果仿真器无法正常使用,请检查是否存在驱动冲突,XDS100系列仿真器使用FTDI芯片,请检查是否与已经安装使用FTDI的USB转串口驱动冲突,如使用XDS200仿真器,请检查计算机中是否正确安装USB转串口驱动或者尝试重新安装计算机主板芯片组驱动。8 v2 R4 ^7 l. {1 n9 _1 I! v
, f' @( \+ ?8 `" n5 N) A1 ]* K: y- 设置工程配置文件信息
% T& y6 U) D2 u7 H- f 请先按照相关软件安装文档安装CCS,然后打开CCS集成开发环境,点击菜单"File->New->Target Configuration File",如下图所示:
6 U2 ` L/ D1 e- p0 D' Y- K![]()
5 q) z6 Q! e' o$ l+ E图 2
9 L( k: H# d/ G- ?3 Z( j8 g- T0 N6 Z
2 I [4 |4 }! N9 M& A在弹出的界面中输入工程配置文件名字,然后点击Finish。如下图所示:
7 t/ J; w- j1 E: L; P' v1 k![]()
( x9 d c: Y* s [5 T5 s! _$ b图 3
, v& q% @, _, a4 ?
" ^ f) d9 d* {9 i在弹出的对话框的"Connection"下拉框中选择对应的仿真器类型(如使用TL-XDS200仿真器请选择"Texas Instruments XDS2xx USB Onboard Debug Probe"),在"Board or Device"下拉框中选择对应的CPU型号:TMS320F2837xS,并点击保存。如果CPU是双核,请选择:TMS320F2837xD,如下图所示:$ X R( i6 e9 ^+ G" n
4 u; X& b, M1 ^3 P- _$ M
图 4) i! T8 I3 O- o# Q
& m. P+ X3 c7 @9 i4 r: q仿真器连接开发板,上电后,点击"Test Connection",测试仿真器是否连接成功。如下图所示:
8 [3 _( O. z0 V* [/ H. s![]()
6 r5 \1 ^( I" k图 5
, E/ T2 I7 s! o6 x. ]! o& x7 m: ~) `
/ e0 A: u4 j( Y7 S5 h7 Y: l- 加载GEL文件6 a* r+ A* q/ R! o
GEL文件主要用于在仿真调试的过程中对CPU进行初始化,如PLL、DDR等,还可以执行一些调试操作。CCS集成开发环境自带"f2837xs.gel"文件,为默认选项,可在Advanced界面配置。# n& X5 \# |, O9 m5 _! l
% K$ F% |1 c+ j0 l' a, P0 b" v8 ^( o
图 6
. M$ N* [: B& ?& g1 x+ c' f" C- A6 ^1 u" o
点击CCS菜单"Run->Debug",弹出以下类似界面,可以看到C28xx核,是可以加载GEL文件和程序镜像的。2 o9 m4 T& s, ?8 @
0 [0 K9 T& \2 P6 _
图 79 r* T. }1 H2 x: Y
8 }, F2 \2 f1 U. `1 |右击对应的DSP核,在弹出的界面中选择"Open GEL Files View"选项,右下角会弹出"GEL Files(TMS320C28xx)"对话框。8 ]4 x7 M& x. A7 {
! Q, O& ]6 X/ h; |% j) S' F
图 8
3 t4 Q5 H7 i/ F6 G- d
- Q, g" E, a4 H& Q* z! C8 H若前面没配置,可在对话框内点击右键,在弹出的界面中选择"Load GEL"。选择对应目录下的GEL文件,再点击确定,接着右下角的"GEL Files(TMS320C28xx)"对话框会出现Success提示语句,如上图。# V6 _5 P% L3 `1 g# U) I
9 i( ]: Q$ L+ W( {( g" R( c- CCS连接开发板CPU0 ^, q3 L+ V8 s, d( B
右击对应的DSP核,选择"Connect Target"选项,会显示Suspended状态。这说明CCS已经和开发板CPU正常连接起来了。/ j& ?8 E0 `$ T( u
& B' y, Q: i# ]2 d* I( Y1 G
图 92 [) P1 j8 Q* y" `8 j& [' h
! d \) ?9 W9 }3 G! h6 k
备注:如果此处提示"No source****"的信息,不是错误信息,可以将其忽视。
" f, B( Z" _( ~, X l, g+ O1 X' u, E$ f# H; `+ O$ z) C; V, w
- 加载程序镜像文件
- l6 M. v- K; Q/ x. K% j 点击"Run->Load->Load Program",选择程序镜像文件(光盘"Demo"目录下有用于演示的LED.out文件,现象为底板LED灯被循环点亮),可选择并点击OK。接着点击绿色三角启动按键,程序即可正常运转起来。
/ {5 n3 g; W: z/ j( [9 |) J( a![]()
/ R* S0 V- w6 A5 q. e% c图 10! H+ v! H4 q% p
! \1 t. O- J3 ~" |7 \
![]()
! J+ w* D( | j+ M# u
8 N6 E* h" \- ?+ L图 11
1 I+ T) l1 P' f* u
/ Z3 s/ @0 E' F' e. |; g+ z0 u& K$ ^- 烧写程序到FLASH3 r1 Y1 `& s9 T9 A8 f( S( E
烧写单核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。具体烧写步骤如下:( k6 ?( I- e+ H$ U- X7 C0 t
添加CMD文件+ p ?, b' l: i5 n+ B
右键工程点击"Add Files…",在弹出的对话框中选到"2837xS_Generic_FLASH_lnk"文件,路径为光盘"Demo\F2837xS\NonOS\F2837xS_common\cmd"目录下。3 w5 V6 v: ?# B5 ]' t
![]()
9 t9 X3 \" b4 s* A* H B图 12
! v5 ~" i; |3 }8 z. B' z5 x* M5 A$ Z
; k7 J+ {4 y/ ^' E& U& s / O8 y+ L' H9 e+ m# W- ]# {
图 13
% y/ l7 d& S4 @% b* l4 R
- P1 E1 C1 V' u) q( t# K在弹出的对话框中,选择"Copy files",然后点击OK。
" P; r' W0 J% o6 ^/ k![]()
, z Y8 B0 k- H$ H& E图 14
' M- o8 T# l4 u i# I# B2 D0 N# B+ E& b7 I1 L) @9 y
编译程序镜像文件
8 j3 \& D3 g) }7 L' n/ G先右击工程中"2837xS_Generic_RAM_lnk"文件,点击"Exclude from Build",再右击工程,点击"Build Project",即可对当前工程编译。
6 s) F$ c7 X9 n7 P% v$ y' e+ w 4 \3 T0 @) v( r# _7 p0 ] F
图 15$ \4 o/ L8 g* M r2 c
: @- V# G( Z/ K' J! r烧写程序镜像文件
% q% ^& z0 c4 I3 p( \点击"Run->Load->Load Program",选择刚生成的程序镜像文件并点击OK。加载完成即烧写完成,重新上电就可以运行程序。
) K7 [/ }: y6 ^4 `2 r: g![]()
# d7 ?4 v) V0 p* e图 16' U8 X+ z; c) v% Q: E
3 P9 e4 D7 L! O$ z: b3 {! L如果遇到烧写效果与仿真效果不一致,则有可能为例程中存在延迟函数,导致运行效果延迟较大(几百秒以上)或无法运行,解决办法如下:7 N; c: Q0 Q4 e8 D9 b0 R5 j. `
请双击工程里的main.c文件,在文件里查找是否有"DELAY_US"函数,如下图:: P+ b- w8 a$ Q8 o
- b9 F; T2 \' r2 q1 k
图 17' T3 T0 w8 _" l3 J! M" ^7 ?
; R. D/ O' U% T0 n k. `5 z/ i
![]()
# j2 u, s, F8 B# P& h" \: {/ Y图 18
& U7 T$ G0 R: q' i
" j3 @9 e8 w1 ^& p7 v将其注释即可。- l* _) S$ X5 L. S5 T! D
如有,请在文件里加入外部定义和复制内存地址代码,并重新烧写,添加位置如下图。* c/ \% Z( z. |% u
外部定义代码:
* i: m* o7 ?' B# ^extern Uint16 RamfuncsLoadStart;
1 }9 N+ a2 R0 ]extern Uint16 RamfuncsLoadSize;: w s5 C e/ T. z8 {% D, _
extern Uint16 RamfuncsRunStart;
3 \% @6 i0 |8 n+ X: d8 i. a8 j% |3 P复制内存地址代码:: h, W+ ]' e- L. F9 y, @# O7 I& u
mEMCpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);7 R O5 W) ^, N
![]()
( a( r, P, |4 L6 Q8 ]图 19
7 a+ a# I" A9 |/ F9 g' P, F( P2 Q, g2 N2 C# S2 s
备注:如果遇到烧写不成功,请按以下流程进行操作:' R" a5 e( q! w( x- D& Q1 A
- "Help->About CCS->Installation Details->Installed Software",搜索flash,点击"Debug Server Flash",Update更新即可。
- 更新完成,提示重启CCS。9 ?' Y, V3 [* u( V! \! F$ ?5 h
重启完成后,Debug Server Flash版本会变成Debug Server Flash 6.1.0.1425。
% r; n% ~) n- j% H# q2 h& F' {6 w5 m1 _4 n4 }$ ~& s
烧写双核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。
- V* c$ y! n h以双核工程led_flash为例,具体烧写步骤如下:
- M4 M" @3 N$ L& [按照工程文件的导入步骤,将led_flash_cpu01和led_flash_cpu02的工程,导入到CCS的Project Explorer窗口,如图所示。7 H1 l: P5 Z& F7 n: C
![]()
6 d+ }1 q l+ J: q/ P图 204 H8 C6 a4 j) K! u, F( n
% k* h$ m0 j3 M打开led_flash_cpu01的工程目录,右键点击"2837xD_RAM_lnk_cpu1.cmd",左键点击"Exclude from Build"选项。
b- x* m: k" M7 b0 F![]()
8 q4 i# e) N3 i! K. X/ Q8 Q4 l; N4 }+ W9 P3 [
图 21# I4 b5 v, ~2 |
) R4 \5 ], g( [/ l
然后,在led_flash_cpu01的工程目录下,右键点击"2837xD_FLASH_lnk_cpu1.cmd",左键点击"Exclude from Build",取消该选项。
0 ^4 n- V2 _5 V% Z4 B![]()
3 Z5 I4 I' x6 y+ k6 G8 H图 221 o7 R% o; p3 e) ] h* X( L. ]1 N
, `4 q9 M T9 a9 \在main.c文件的定义中,添加以下代码,如图所示:
& C+ h8 u. Q8 C/ a% v* ^#define _STANDALONE
$ r4 l* J: h+ G- T) w#define _FLASH
( y$ \) F- c; }#ifdef _FLASH
6 n- r" e0 h* D4 O sextern Uint16 RamfuncsLoadStart;
% a+ Q: ~+ x, m* c7 Kextern Uint16 RamfuncsLoadSize;9 `% N/ ^7 d( b U( r6 P1 C1 l" [
extern Uint16 RamfuncsRunStart;
8 W/ v& m1 V; O8 e#endif! _+ Y' F- A l/ i( D8 E
: j" b. W% I3 n" K
图 23
7 {7 n, M. X* J# `
' \& }* D( K5 p0 k在主函数中,添加以下代码,如图所示:
/ V4 _7 ~1 W0 H#ifdef _FLASH
9 H; Q" t8 `6 g5 L2 Kmemcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
' a, E0 t" V1 Q+ C( ^# ?% o#endif! Z7 `0 Y, e3 Q
' ?, Q7 t/ {4 M7 P#ifdef _STANDALONE
* P& @ U6 Z) V/ n1 O#ifdef _FLASH
" D4 O$ w+ `- h //发送 boot 命令,允许 CPU2 开始执行应用程序
3 N% ]; `1 }1 a: o; M2 \7 qIPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
" D* V' y& T l# l' M S# s4 \) t#else8 W/ X: `5 j; }4 b& q* `
// 发送 boot 命令,允许 CPU2 开始执行应用程序9 f" n+ G4 R( [
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
3 A" Y [& e/ P3 q$ k7 q) m- }8 t#endif
; Q5 ]0 z& u8 _# }; S9 I#endif X" t8 s, u0 p9 e7 @
" D2 ~3 ~& U% f2 U- i' O6 C
// 片上 Flash 初始化
& |# Q2 s* M7 j6 B! W! w#ifdef _FLASH% ]- K! f. i9 C; L! e
InitFlash();: @7 t- `# C! ^6 [4 _
#endif
* ?9 ?2 ]; d9 X$ p& ` 1 ~6 Q6 e, n' v$ m/ o D: j) |
图 24
' o; U* X& { n0 h3 O( K
* u% R/ B/ x. D9 W5 R保存修改,点击"Rebuild Project"选项,重新编译工程。
0 {3 i. ]3 y" y![]()
/ D+ S( u1 K) c( c图 25: B4 [$ ~1 }3 B) ?4 m! B
}2 h# a1 _0 M' p打开led_flash_cpu02的工程目录,右键点击"2837xD_RAM_lnk_cpu2.cmd",左键点击"Exclude from Build"选项。5 g+ u1 [/ t: S: k9 J, ^3 |
4 {( w& X5 I$ x/ K
图 26
. c2 F: _* e4 J1 x/ J5 E2 \- z& \& v7 @ B6 U0 D
然后,在led_flash_cpu02的工程目录下,右键点击"2837xD_FLASH_lnk_cpu2.cmd",左键点击"Exclude from Build",取消该选项。) `" L; U! C3 t8 Z
![]()
3 @5 S0 ?* C" g+ G6 Z& u5 z# j图 27; m1 d0 g) d: N5 B) D
& v" C0 [4 Q: |5 y' d9 A3 s
在main.c文件的定义中,添加以下代码,如图所示:: b# |& `9 ?! |% r1 \3 Q
#define _FLASH
! f, |1 |: p" |) i5 x" _% e0 x! F) @#ifdef _FLASH* y# i# O8 L0 Y$ A: d E7 Y
extern Uint16 RamfuncsLoadStart;
- r7 |, h' V! h" e4 o& ~. z, Q) Mextern Uint16 RamfuncsLoadSize;
: P4 s& Q' g$ X% [$ A7 q8 i* lextern Uint16 RamfuncsRunStart;: h' H( H* O% ~0 ?0 n
#endif, |1 l! Z3 U4 ^, a+ X
+ d `" @+ v" ^6 D" }
图 28
: k# q9 ?, F1 p+ `
w# k* ^5 g5 l: l L) f) V在主函数中,添加以下代码,如图所示:% E! b% m2 Y, v' m1 R" u( l
#ifdef _FLASH
0 z) h: i5 y4 Q/ ?( \' cmemcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);5 B/ G. S" F- C# o8 q4 h
#endif- w* S& p7 u+ Q% V. f D6 _
. ~1 ~. u0 p, c9 J; c T% ?// 片上 Flash 初始化8 e {" a% c; r4 Z
#ifdef _FLASH
$ I5 a N6 j' J0 h0 O+ C1 {0 d InitFlash();" O6 R% ?4 a( ?7 `2 u0 ?) l2 x
#endif
, }/ J% m% D9 p# S1 n / o7 X$ r v& T. B/ N
图 29 z, w; Z8 e `8 J3 }& k
* d$ o3 \. o4 F, Z+ J4 Z2 n- y保存修改,点击"Rebuild Project"选项,重新编译工程。
A5 h! i! h) ?# o 1 z# ~- U. A8 i$ R7 } H
图 30
0 u% W2 k3 o! j; {, i8 h: G) o. O5 |9 _ [# { J
按照工程导入步骤,将生成的led_flash_cpu01.out和led_flash_cpu02.out文件,分别加载到CPU1和CPU2。
, g. b6 i/ ?8 Z. ]3 H开发板断电,然后重新上电,就可以正常点亮,核心板上的LED流水灯。4 K" O1 }) c0 B' t9 t
烧写双核SYSBIOS程序到FLASH以SYSBIOS的LED工程为例。% L. P* n# }" k' F5 }
将光盘资料的Tools目录下的"TMS320F2837xD_BIOS.cmd"文件,拷贝到对应的工程目录下。; C# w2 B9 f' R; E+ M
![]()
9 M" G( e7 f9 p7 ?; d7 L图 31
8 h/ w) u' x" b5 n* ?
6 C8 f S6 U0 |# j E4 n按照工程文件的导入步骤,将光盘资料中"Demo\DSP_F2837xD\SYSBIOS\Application"路径下的LED工程,导入到CCS的Project Explorer窗口,如图所示。( Y j& X) y! T; N7 v2 ^
![]()
' J' X6 `+ m+ b9 m) `图 32
) r" L2 @; J) b+ g& s9 ]1 {( s5 q9 Q: P! R& F" f) l" P2 H, V/ D
打开sysbios_led的工程目录,右键点击"TMS320F2837xD.cmd",左键点击"Exclude from Build"选项。
$ e9 l* O7 B" E; l$ u8 @. l![]()
! X( I7 e0 |. e7 x2 x4 U5 p图 33; _" D. K L* [7 t
' O2 S' z" c0 Q2 j: X5 }; E
双击工程目录下的app.cfg文件。
/ J/ i! e5 f% R![]()
; G) d0 Y) R' j J! @图 34
% e2 Q' N1 L# t. V3 N) f+ \
- T9 x9 p" c2 H% D: \, k" q7 N点击Boot选项。' ]/ A7 \6 ~9 m
![]()
3 v! N+ |' A3 v f+ d" ]图 35
2 c/ l" y9 b" U" a+ Z5 I) e2 H0 k# e- F, Z- _ n8 ~
确认Boot配置,如图所示。
}4 ^0 e) f% K& P' t( O![]()
7 @" A, z+ T9 f! d1 p9 k" u图 36! \ e. t2 f6 a5 @" _) \
+ B% l. K0 _/ Z9 U: w: Q+ z保存退出,右键工程,选择"Rebuild Project"选项,重新编译工程,如图所示。1 U! h- H) i& m& H: T1 q" p8 k* p
7 g% B: `! b3 ~3 u5 V( H. o+ U
图 37& N% b, o( K. B, y5 ?( k# D
, b" {5 `. }$ m* G; ]按照工程导入步骤加载sysbios_led.out文件,然后点击程序运行 按钮。0 K+ E! `0 U& w6 V
开发板断电重启,烧写到FLASH的流水灯程序,即可正常运行。
8 d6 D1 h# V+ y0 L( I$ n
4 p S+ k# h7 ~ |
|