找回密码
 注册
关于网站域名变更的通知
查看: 423|回复: 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。  l' b6 U8 Q0 {* h# Y$ A
    图 1
    CCS集成开发环境自带XDS100及XDS200系列仿真器驱动。如果仿真器无法正常使用,请检查是否存在驱动冲突,XDS100系列仿真器使用FTDI芯片,请检查是否与已经安装使用FTDI的USB转串口驱动冲突,如使用XDS200仿真器,请检查计算机中是否正确安装USB转串口驱动或者尝试重新安装计算机主板芯片组驱动。
    , S0 C, |4 r; O  ~
    3 N. X+ e6 d( \5 M2.设置工程配置文件信息请先按照相关软件安装文档安装CCS,然后打开CCS集成开发环境,点击菜单"File->New->Target Configuration File",如下图所示:
    4 E! [3 B5 ^# F5 ]3 ~; y
    图 2
    在弹出的界面中输入工程配置文件名字,然后点击Finish。如下图所示:
    6 [0 F0 I9 m8 _
    图 3
    在弹出的对话框的"Connection"下拉框中选择对应的仿真器类型(如使用TL-XDS200仿真器请选择"Texas Instruments XDS2xx USB Onboard Debug Probe"),在"Board or Device"下拉框中选择对应的CPU型号:TMS320F2837xS,并点击保存。如果CPU是双核,请选择:TMS320F2837xD,如下图所示:
    . p/ i1 z4 ^3 v  A! f% e  v5 T# q8 I; _. t  Z
    ​图 4
    2 H% E6 G# Q& j
    仿真器连接开发板,上电后,点击"Test Connection",测试仿真器是否连接成功。如下图所示:
    , c$ p" P  }# l: V
    图 5
    7 a2 G9 y! J3 ?9 K) R1 [) ]) ~( I9 ]0 g
    3.加载GEL文件GEL文件主要用于在仿真调试的过程中对CPU进行初始化,如PLL、DDR等,还可以执行一些调试操作。CCS集成开发环境自带"f2837xs.gel"文件,为默认选项,可在Advanced界面配置。" g; D* m( {0 p" Y3 q/ M7 y
    图 6

    4 v1 z" I2 f& p# f点击CCS菜单"Run->Debug",弹出以下类似界面,可以看到C28xx核,是可以加载GEL文件和程序镜像的。
    8 L& _- J9 z0 ~& U& d2 c# d4 ~
    图 7

      u# q# X7 {3 r6 R右击对应的DSP核,在弹出的界面中选择"Open GEL Files View"选项,右下角会弹出"GEL Files(TMS320C28xx)"对话框。- ]6 ]1 ?& s" D' z* x! ~
    ; E. p6 h6 ]! j, h
    图 8
    4 z# _1 T' G! X
    若前面没配置,可在对话框内点击右键,在弹出的界面中选择"Load GEL"。选择对应目录下的GEL文件,再点击确定,接着右下角的"GEL Files(TMS320C28xx)"对话框会出现Success提示语句,如上图。. }, i3 r/ b# J7 V0 }

    ! q6 I6 v/ O/ {. H+ R0 {3 U* m. x4.CCS连接开发板CPU右击对应的DSP核,选择"Connect Target"选项,会显示Suspended状态。这说明CCS已经和开发板CPU正常连接起来了。
    / i$ I7 @. r7 Z' ^1 P$ r$ ?' H
    - q5 R& S5 H8 d2 S+ A' ]
    图 9
    6 f1 H9 U) A) l# v
    备注:如果此处提示"No source****"的信息,不是错误信息,可以将其忽视。) [! {/ i) m* Z) g

    0 q, F1 A1 w' d' S/ `( `. u5.加载程序镜像文件点击"Run->Load->Load Program",选择程序镜像文件(光盘"Demo"目录下有用于演示的LED.out文件,现象为底板LED灯被循环点亮),可选择并点击OK。接着点击绿色三角启动按键,程序即可正常运转起来。; m1 a4 L0 `* P

    , H$ ^/ y8 s, }, e
    图 10
    / T$ t" d6 T* e! v2 F7 r: p
    图 11

    : V2 R2 i! l9 n' Z6.烧写程序到FLASH6.1烧写单核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。具体烧写步骤如下:' w6 f& E5 l5 R. b% O) J
    • 添加CMD文件
      * q( v2 j. \/ J( f3 |4 }3 n2 o
    右键工程点击"Add Files…",在弹出的对话框中选到"2837xS_Generic_FLASH_lnk"文件,路径为光盘"Demo\F2837xS\NonOS\F2837xS_common\cmd"目录下。7 Q' {; p. `& i1 }9 {2 G: s
    图 12
    ' Y' n2 q. e" T$ a) {" j, F
    图 13
    / z3 U! a7 D. f& O) i
    在弹出的对话框中,选择"Copy files",然后点击OK。
    . ]8 z- j# U* k" ~3 y- d  X; Z3 R
    图 14
    + v( L7 S/ _' \% k; ~) E- B' R4 z
    • 编译程序镜像文件
      ; r! D7 V$ h: ^3 F' Y! y- n
    先右击工程中"2837xS_Generic_RAM_lnk"文件,点击"Exclude from Build",再右击工程,点击"Build Project",即可对当前工程编译。
    ( R  H4 J6 w9 v: M+ L! F2 y& K
    " x* v9 B" z" D* c6 n
    图 15

    ; h9 G+ z1 H8 {5 t
    • 烧写程序镜像文件
      - h6 Y2 Z: ?: T/ ?* G" }( j1 m
    点击"Run->Load->Load Program",选择刚生成的程序镜像文件并点击OK。加载完成即烧写完成,重新上电就可以运行程序。
    8 y  R9 F3 _6 s& V( Q/ k$ d0 c& ]3 h( B
    图 16

    $ C* ]2 X3 J" N2 j9 _( S如果遇到烧写效果与仿真效果不一致,则有可能为例程中存在延迟函数,导致运行效果延迟较大(几百秒以上)或无法运行,解决办法如下:
    " I% o: ~: W) ], M$ i请双击工程里的main.c文件,在文件里查找是否有"DELAY_US"函数,如下图:( n: z5 V6 ~) b0 a$ n: ~# V* n

    ' q! ?* p8 M, d2 r
    图 17
    图 18

      [2 V9 u# d% g+ ~! o将其注释即可。
    . H* r6 S  K) t: \如有,请在文件里加入外部定义和复制内存地址代码,并重新烧写,添加位置如下图。
    9 E( t% `& H0 y外部定义代码:
    ( K  a- G4 E  V5 x+ |1 jextern Uint16 RamfuncsLoadStart;) W; D, Z! N8 ^2 T
    extern Uint16 RamfuncsLoadSize;
    - h4 y2 Z$ ~- C1 g0 h0 R1 Pextern Uint16 RamfuncsRunStart;
    5 S3 E6 p- ~1 l  f/ |复制内存地址代码:- M' m" c  Y; q+ D" y0 K0 R" [' n
    mEMCpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
    5 t( J; m$ _7 p, v% G! }1 v8 S' D3 w7 h8 z, m& `3 p" o5 w) ~5 G) z
    图 19
    $ `% t9 z" G( ?1 O% w
    :如果遇到烧写不成功,请按以下流程进行操作:; ~* c3 C2 J1 |; \
    • "Help->About CCS->Installation Details->Installed Software",搜索flash,点击"Debug Server Flash",Update更新即可。
    • 更新完成,提示重启CCS。& X# G6 P+ E  u4 j2 Y5 O
    重启完成后,Debug Server Flash版本会变成Debug Server Flash 6.1.0.1425。
    2 {& C4 ?' s4 d! d! ?7 [# S7 L
    % y, y: M$ n# C, w8 c1 u6.2烧写双核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。
    0 m" a- n! ~- N6 Z' E- y以双核工程led_flash为例,具体烧写步骤如下:9 j0 n1 S3 j& A% u
    按照工程文件的导入步骤,将led_flash_cpu01和led_flash_cpu02的工程,导入到CCS的Project Explorer窗口,如图所示。
    0 g( d2 t1 T( D) C4 N
    $ }: N7 c! y" z" j: u
    图 20
    8 C! r! j2 X; h
    打开led_flash_cpu01的工程目录,右键点击"2837xD_RAM_lnk_cpu1.cmd",左键点击"Exclude from Build"选项。
    9 t0 @$ h; w4 I- X. H" Q; j4 u5 R) ?; y3 K' \; r' A
    图 21
    0 Y! n4 K: J8 X) a+ F) E
    然后,在led_flash_cpu01的工程目录下,右键点击"2837xD_FLASH_lnk_cpu1.cmd",左键点击"Exclude from Build",取消该选项。
    & g+ h1 k2 J6 E$ p. x+ _8 K, _1 X/ N
    图 22

    , s9 j3 J' w6 T' V在main.c文件的定义中,添加以下代码,如图所示:7 z# o/ A- X; v( b' ~
    #define _STANDALONE
    * r+ R: {; z0 m( v  v#define _FLASH/ {4 ]6 K4 ?  b) A2 {1 H# a
    #ifdef _FLASH9 ~4 [4 R% o! f  J; Q% m3 L0 S# I& O" o
    extern Uint16 RamfuncsLoadStart;
      p7 h( H" G, t0 bextern Uint16 RamfuncsLoadSize;
    ) \5 l# n% _/ F- O/ jextern Uint16 RamfuncsRunStart;7 K6 G; n8 c! s# v/ E3 h
    #endif
    ) i4 {9 y+ @- K( ?$ P' C
    图 23
    9 k8 _* }$ d- F3 J
    在主函数中,添加以下代码,如图所示:! P8 p2 l/ N% y" [6 w3 A0 L
    #ifdef _FLASH
    6 S% z. y% q' |memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);2 e4 q" D+ M' m& D) b% C
    #endif
    / @& Q3 B9 m3 f- J( Z3 B
    # {8 p& ?+ h, V  g#ifdef _STANDALONE  U% C' f+ B  ~% k& B
    #ifdef _FLASH
    2 U* H( R& J0 [- Q4 S) t6 v2 T$ t //发送 boot 命令,允许 CPU2 开始执行应用程序
    9 t/ k. e: z$ B+ ^1 RIPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
    4 P# h, T, T, q9 y3 @4 w#else
    ' h) Q, w4 U6 `7 [// 发送 boot 命令,允许 CPU2 开始执行应用程序
    / p; k/ F$ n, M) q+ ]7 K3 s' k5 UIPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
    ! s% W2 I5 `! Y3 ~* V/ ~#endif
    5 F1 \/ u5 n6 L) [& G#endif# L7 `/ q/ N" B7 ~, W

    ! }- h1 w+ y6 ]3 ~) r2 y7 C, P// 片上 Flash 初始化
      N3 ~7 t, k0 Q* X#ifdef _FLASH* P. U0 g+ x2 o
       InitFlash();
    9 w( }' ]1 h( K) `0 F% M1 M#endif
    * Z2 \6 u+ _# f( u0 q
    . b; y/ T0 W: K" ^) O4 p
    图 24

    $ `% K# d9 A2 Y1 m+ Z保存修改,点击"Rebuild Project"选项,重新编译工程。; H% b# m: j: M5 b' {( T$ p
    : E, W" E% ^5 R0 c7 c( C. W
    图 25
    / A, K- E5 a: m# Y) g
    打开led_flash_cpu02的工程目录,右键点击"2837xD_RAM_lnk_cpu2.cmd",左键点击"Exclude from Build"选项。4 _( q: Z. ^- R! l
    2 o, t$ a5 Q: }6 q2 T2 @' N  P# o/ y
    图 26
    . P8 n- q/ \% {; z! W) ]( S
    然后,在led_flash_cpu02的工程目录下,右键点击"2837xD_FLASH_lnk_cpu2.cmd",左键点击"Exclude from Build",取消该选项。+ l8 ^: R- L* ^  W
    % F" `4 C# g, i6 [9 T: p( [! w$ u+ z
    图 27
    0 j& ~, Z& q" ]# ?8 U' A" m
    在main.c文件的定义中,添加以下代码,如图所示:4 n' n0 `8 E5 p6 T% s. N
    #define _FLASH
    ; ?' S  ]' {7 b; r: O#ifdef _FLASH' H0 l, B& z+ s4 p+ v
    extern Uint16 RamfuncsLoadStart;
    1 ]8 k# P0 E% T) Z/ eextern Uint16 RamfuncsLoadSize;7 B5 t- o4 v5 X0 C% b
    extern Uint16 RamfuncsRunStart;) V4 L6 m; x+ G# }% {0 {
    #endif, _0 a. V' Z0 T; c
    8 r( Q/ R) M# E! j, t
    图 28

    % U8 i6 k  }' f/ y6 B; Q在主函数中,添加以下代码,如图所示:
    & P" L; P# D4 h& [& k#ifdef _FLASH
    5 }8 F  _- A0 R8 i( V) i& n; Xmemcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);, r* c- T( V5 p  y) h
    #endif, t3 O) u, d3 y- [; q7 |
    8 T7 Y# j* }! k2 L2 Y* P
    // 片上 Flash 初始化" ^7 `* I  o) \8 N
    #ifdef _FLASH
    6 M( O: K8 K1 i, S   InitFlash();
    + t! u$ W) j+ B7 U7 t2 T#endif; V$ c! u/ T/ u  c6 N" W
    7 k) m: P; a" S( o
    图 29

    9 Q4 Q* z2 w4 g% M保存修改,点击"Rebuild Project"选项,重新编译工程。
    ; f2 g% f2 u$ Z4 B
    2 G+ L) w4 d; T7 C8 g- ~! L* b
    图 30
    8 G$ R2 y5 x& q
    按照工程导入步骤,将生成的led_flash_cpu01.out和led_flash_cpu02.out文件,分别加载到CPU1和CPU2。# @1 e, T0 m& L" ]
    开发板断电,然后重新上电,就可以正常点亮,核心板上的LED流水灯。( M+ f8 J8 }/ ^/ p
    6.3烧写双核SYSBIOS程序到FLASH以SYSBIOS的LED工程为例。  @2 _/ C. A5 p+ I" p
    将光盘资料的Tools目录下的"TMS320F2837xD_BIOS.cmd"文件,拷贝到对应的工程目录下。4 q' {; K( t4 R- |/ o
    % [- \: t/ o+ D" g* T
    图 31
    - `9 _* h3 e! \3 o6 I
    按照工程文件的导入步骤,将光盘资料中"Demo\DSP_F2837xD\SYSBIOS\Application"路径下的LED工程,导入到CCS的Project Explorer窗口,如图所示。
    + o' q( _8 |4 p- S% l
    图 32
    打开sysbios_led的工程目录,右键点击"TMS320F2837xD.cmd",左键点击"Exclude from Build"选项。. p9 [, @+ I/ s5 P
    图33
    双击工程目录下的app.cfg文件。
    % z. y* s  H& N# V% E, }( S
    图 34
    0 `) [! I7 v" m
    点击Boot选项。
    6 o" @7 u6 o/ ?6 }% B, c
    图 35

    & j0 y7 u3 W' x确认Boot配置,如图所示。
    7 y+ _! d! s" b9 [
    图 36

    . Z5 z2 ]) Z  j0 @' R保存退出,右键工程,选择"Rebuild Project"选项,重新编译工程,如图所示。3 _6 C  J8 D8 V- ]

    0 r- f/ v9 U( c* u) P% x
    图 37
    按照工程导入步骤加载sysbios_led.out文件,然后点击程序运行按钮。' o8 p7 F2 L) ?/ n# \/ s7 }& t/ [
    开发板断电重启,烧写到FLASH的流水灯程序,即可正常运行。0 z+ L4 z7 ~6 K$ Y+ n, D  P
    " r% K& S; C" K1 X, I- d" p6 M
  • TA的每日心情
    开心
    2022-11-22 15:53
  • 签到天数: 2 天

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-24 23:22 , Processed in 0.187500 second(s), 23 queries , Gzip On.

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

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

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