找回密码
 注册
关于网站域名变更的通知
查看: 316|回复: 1
打印 上一主题 下一主题

基于仿真器的程序加载与烧写——TMS320F2837x

[复制链接]
  • TA的每日心情
    奋斗
    2020-3-25 15:17
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-9-14 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    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
  • TA的每日心情
    开心
    2022-11-22 15:53
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2020-9-14 11:07 | 只看该作者
    步骤很详细,小白都可以跟着练
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-26 20:45 , Processed in 0.078125 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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