找回密码
 注册
关于网站域名变更的通知
查看: 421|回复: 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。- C6 O5 S% V" l! }: c" B+ t
    图 1
    CCS集成开发环境自带XDS100及XDS200系列仿真器驱动。如果仿真器无法正常使用,请检查是否存在驱动冲突,XDS100系列仿真器使用FTDI芯片,请检查是否与已经安装使用FTDI的USB转串口驱动冲突,如使用XDS200仿真器,请检查计算机中是否正确安装USB转串口驱动或者尝试重新安装计算机主板芯片组驱动。
    7 Y- w$ j! K0 {7 {: q- k- D1 A
    . a% a- Y5 z* V2.设置工程配置文件信息请先按照相关软件安装文档安装CCS,然后打开CCS集成开发环境,点击菜单"File->New->Target Configuration File",如下图所示:' y/ M7 D! i$ z
    图 2
    在弹出的界面中输入工程配置文件名字,然后点击Finish。如下图所示:
    : S  @; ]+ C0 I
    图 3
    在弹出的对话框的"Connection"下拉框中选择对应的仿真器类型(如使用TL-XDS200仿真器请选择"Texas Instruments XDS2xx USB Onboard Debug Probe"),在"Board or Device"下拉框中选择对应的CPU型号:TMS320F2837xS,并点击保存。如果CPU是双核,请选择:TMS320F2837xD,如下图所示:8 C- B8 ^; K+ k5 x/ r) x/ M) m  D
    8 r3 E7 m1 r1 D2 m" K
    ​图 4
    * Z& L7 n7 h+ f+ X0 ]% x7 R) |, g
    仿真器连接开发板,上电后,点击"Test Connection",测试仿真器是否连接成功。如下图所示:6 e& K8 S# `# ^6 ~  [5 b
    图 5
    5 v+ _" m7 y5 x, |. h1 J" x
    3.加载GEL文件GEL文件主要用于在仿真调试的过程中对CPU进行初始化,如PLL、DDR等,还可以执行一些调试操作。CCS集成开发环境自带"f2837xs.gel"文件,为默认选项,可在Advanced界面配置。
    # s) \, D( M9 ~- {% h) `6 c8 _/ h
    图 6

    : V/ X, v9 j* d% K$ J. U点击CCS菜单"Run->Debug",弹出以下类似界面,可以看到C28xx核,是可以加载GEL文件和程序镜像的。' W  h% ~& j; |$ C; J9 w( l1 {0 l4 ?
    图 7

    8 }* t% B0 k/ K' b右击对应的DSP核,在弹出的界面中选择"Open GEL Files View"选项,右下角会弹出"GEL Files(TMS320C28xx)"对话框。3 w" ~4 P( S" _6 \

    $ X- B; [- T1 G3 u% S
    图 8

    5 {; G1 B& O2 I4 {" x" o若前面没配置,可在对话框内点击右键,在弹出的界面中选择"Load GEL"。选择对应目录下的GEL文件,再点击确定,接着右下角的"GEL Files(TMS320C28xx)"对话框会出现Success提示语句,如上图。
    ( L( N4 c  h3 f0 r% H% e& |- |$ Y7 W4 H: T% w! g# O
    4.CCS连接开发板CPU右击对应的DSP核,选择"Connect Target"选项,会显示Suspended状态。这说明CCS已经和开发板CPU正常连接起来了。
    5 s8 U  a2 m8 U# A
    # s2 x# C9 _  W. R" Z
    图 9

    - g4 v: x7 C( q备注:如果此处提示"No source****"的信息,不是错误信息,可以将其忽视。* n; `" `8 y4 J& _3 r
    9 S0 c) [0 S7 l
    5.加载程序镜像文件点击"Run->Load->Load Program",选择程序镜像文件(光盘"Demo"目录下有用于演示的LED.out文件,现象为底板LED灯被循环点亮),可选择并点击OK。接着点击绿色三角启动按键,程序即可正常运转起来。% }! y4 y* D& g3 d5 B, u4 m
    5 [5 T% I3 {$ G' |
    图 10
    # x) ]. V6 I' w1 v2 w5 E! C. O+ {
    图 11
    9 |' w" i" d0 V* g; i5 O
    6.烧写程序到FLASH6.1烧写单核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。具体烧写步骤如下:+ `7 l0 Q4 ]9 p7 y
    • 添加CMD文件
      % [' A$ Q) X' d
    右键工程点击"Add Files…",在弹出的对话框中选到"2837xS_Generic_FLASH_lnk"文件,路径为光盘"Demo\F2837xS\NonOS\F2837xS_common\cmd"目录下。
    . _! p  B) V# d# O, L6 u" U: X, |
    图 12
    ' Y; P# ~2 `: y* Y1 q
    图 13

    0 @: {0 K0 u& D% ?. ]2 u; q在弹出的对话框中,选择"Copy files",然后点击OK。
    1 }* k. ^& _5 e0 I/ t+ c; l% \4 x( D& y/ L  }; Q4 }
    图 14
    # w5 f2 x7 F! w- k0 c
    • 编译程序镜像文件
      * b7 r9 W. J9 q3 S1 a% ?; g2 O
    先右击工程中"2837xS_Generic_RAM_lnk"文件,点击"Exclude from Build",再右击工程,点击"Build Project",即可对当前工程编译。4 u, w  g+ A0 u' |! ]
    . c. i$ F8 U& [, |9 p0 Q, G* T
    图 15
    % Z# ]0 g$ Q9 N: z, A2 C! k3 i
    • 烧写程序镜像文件. S, C" j' d( p" b: Z
    点击"Run->Load->Load Program",选择刚生成的程序镜像文件并点击OK。加载完成即烧写完成,重新上电就可以运行程序。
    8 g/ C. h5 i+ r0 N- v* x! \% v9 h6 b8 F
    图 16
    ) D3 Y7 [% W* @; _6 Y) K. c
    如果遇到烧写效果与仿真效果不一致,则有可能为例程中存在延迟函数,导致运行效果延迟较大(几百秒以上)或无法运行,解决办法如下:
    # H& o3 W/ X0 Q* y% S! n请双击工程里的main.c文件,在文件里查找是否有"DELAY_US"函数,如下图:
    ; i) W' D4 S4 A( H" i( [! m0 l
    3 s- u7 Z- f) Y( i
    图 17
    图 18

    ' I; D6 t+ F2 q, Q7 l9 M0 ~0 ?将其注释即可。
    # W; O  T$ Y, r$ A, I% S7 F/ o2 H如有,请在文件里加入外部定义和复制内存地址代码,并重新烧写,添加位置如下图。
    , Z  ]0 a& V2 T; D4 Y外部定义代码:
    0 V: v+ D# ]0 Sextern Uint16 RamfuncsLoadStart;
    1 B% H' H/ u4 c9 M7 H% R" s4 vextern Uint16 RamfuncsLoadSize;
    ; R! F0 v; z% {, m& d/ [extern Uint16 RamfuncsRunStart;
    " v2 `) ~, D/ ]复制内存地址代码:/ E7 ?- ^. ~4 f* G6 R$ L8 [! p
    mEMCpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
    3 {+ Z' l' K" o0 [9 l# O6 u* O: I1 |7 ^
    图 19
    3 P! i0 }8 O  `$ u0 G$ [
    :如果遇到烧写不成功,请按以下流程进行操作:4 h. k" x+ n% u0 D
    • "Help->About CCS->Installation Details->Installed Software",搜索flash,点击"Debug Server Flash",Update更新即可。
    • 更新完成,提示重启CCS。
      " N- z* X" |  s- S
    重启完成后,Debug Server Flash版本会变成Debug Server Flash 6.1.0.1425。
    " ?/ C+ K0 O- p9 P4 m7 x# R2 R& S' q. U! e
    6.2烧写双核裸机程序到FLASHCMD文件是编译完成之后链接各个目标文件时,用来指示各个数据、符号等是如何分配到各个段,以及每个段所使用的存储空间的,通过CMD文件可以实现将编译生成的.out程序烧写到FLASH。% [  D8 P- f2 H, e/ s( h  n
    以双核工程led_flash为例,具体烧写步骤如下:8 l' n$ ^6 V7 [8 B; ?) k
    按照工程文件的导入步骤,将led_flash_cpu01和led_flash_cpu02的工程,导入到CCS的Project Explorer窗口,如图所示。
    ) V" G9 i! \) h3 P$ m
    % }# i; s+ m3 H! G; d% n
    图 20
    / M1 L$ D( k' E8 K9 K; \, B/ r$ ~
    打开led_flash_cpu01的工程目录,右键点击"2837xD_RAM_lnk_cpu1.cmd",左键点击"Exclude from Build"选项。. C1 V- ?. o+ x9 v3 [

    9 R9 n: B. C: P1 z( u; P
    图 21
    / P7 ?. q. \' o  M  f2 u
    然后,在led_flash_cpu01的工程目录下,右键点击"2837xD_FLASH_lnk_cpu1.cmd",左键点击"Exclude from Build",取消该选项。! W) j3 `1 s8 i

    / W6 [* ?5 y  J6 ~& K
    图 22

    9 v5 ?3 F% L. C- I: C( J在main.c文件的定义中,添加以下代码,如图所示:* s- {9 ]  p+ }9 k! w, ^
    #define _STANDALONE, u9 E0 p" n$ n- K9 ~
    #define _FLASH: n6 x+ V  g  b0 F& R2 ^
    #ifdef _FLASH7 G: c7 j) Z+ e2 J) N6 w
    extern Uint16 RamfuncsLoadStart;$ a. z" @( @* Q% M9 ^" A
    extern Uint16 RamfuncsLoadSize;
    ' s- e; k" R  Y, A' z$ c# gextern Uint16 RamfuncsRunStart;$ [; I& S5 L9 F
    #endif, ~* X: c' D$ J. ?, d
    图 23

    / u/ k  j# C( @/ ~5 P在主函数中,添加以下代码,如图所示:
      \4 y" V" F- o' a% Z4 ?#ifdef _FLASH- K1 L- W$ p: i  V' c, \9 s
    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);  w* z" h" O1 L% n* K
    #endif8 p" _4 N' ^; c6 `

    ! I/ R1 d5 |+ Q& {& e& ?#ifdef _STANDALONE
    - a" G$ V) v& V/ {) b/ K2 i+ B#ifdef _FLASH
    5 y: K5 d- J* x, h( W //发送 boot 命令,允许 CPU2 开始执行应用程序
      G- i6 |; {( IIPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
    ! R+ R6 g7 q  b* e5 _#else/ W+ G2 f9 z* k) S- ]
    // 发送 boot 命令,允许 CPU2 开始执行应用程序
    0 X: s, L, ]$ A. j' S( S- b6 LIPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
    4 b+ ]0 E9 p3 L9 j# R  t4 t#endif
    2 }) m9 q* S5 _( v" n0 ^#endif
    ! A8 E3 p- h+ L$ h2 x, B1 \7 \0 |! C2 v" G0 I
    // 片上 Flash 初始化7 A' j! y: ~/ q; s/ r* S
    #ifdef _FLASH
    7 W6 U$ M% q; N5 T   InitFlash();
    * D8 o7 @. E3 n" P+ C#endif/ i$ W8 B  N2 K2 Y" m# ~- r
      s! }" [: \0 @: f  \
    图 24

    7 C3 i! b$ }4 N! m) b4 P3 a9 j保存修改,点击"Rebuild Project"选项,重新编译工程。
    % P; k4 Q2 J* n) E2 C3 g8 z* Z/ C
    图 25
    4 `. s" j: t& X- l) _! r6 p
    打开led_flash_cpu02的工程目录,右键点击"2837xD_RAM_lnk_cpu2.cmd",左键点击"Exclude from Build"选项。! z" B+ u% c- ?- e$ F; w- b

    + Q0 y3 v0 N, z
    图 26
    6 V3 P, n+ Q; w" m# P& n
    然后,在led_flash_cpu02的工程目录下,右键点击"2837xD_FLASH_lnk_cpu2.cmd",左键点击"Exclude from Build",取消该选项。3 I* ?5 M2 V# l2 A  `) l

    9 d$ u6 q" g. Q- |# B8 J
    图 27
    $ v: Q8 ?2 A- W; B& E( K( _# l
    在main.c文件的定义中,添加以下代码,如图所示:; C9 @7 v# n2 |, ?% f; r3 k4 X  Y
    #define _FLASH
    8 r4 E$ Y. K0 W4 s# K5 J) W#ifdef _FLASH( U, C3 [3 y) |+ Q3 k1 J" B
    extern Uint16 RamfuncsLoadStart;* v& [1 [8 U# J" ]+ T
    extern Uint16 RamfuncsLoadSize;
    7 y5 ^8 Z& e+ l' l  |2 [0 r9 Gextern Uint16 RamfuncsRunStart;
    / h2 U& b+ p) _) t# a, q#endif0 K5 f1 D3 r7 v! N  N! X
    0 F2 {2 ?5 K- h- a. \
    图 28
    9 Y1 q' e: J" P" k8 |. K
    在主函数中,添加以下代码,如图所示:
    3 y9 _) H" ^; I4 `5 s1 e# p/ J#ifdef _FLASH
    # O$ Z( v' s; G, b& T1 n1 v" nmemcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);+ T6 A" ]2 f4 h+ @9 n1 x
    #endif
    3 N. d. Z% b1 ^; ^7 S3 T7 q+ T8 p! B' S
    // 片上 Flash 初始化
    5 t  w" `* r/ x) Y9 T#ifdef _FLASH
    $ |) p- r% @6 @* a+ }   InitFlash();
    6 K/ M- I/ y8 x0 z7 @% ^#endif$ X" A: \$ p" D5 {
    , N$ i/ \2 C0 u' o3 g
    图 29
    / _6 S% b  b5 ~9 N: [
    保存修改,点击"Rebuild Project"选项,重新编译工程。( S" K7 X5 h  l8 z

    . ~! D  t0 f1 E$ H3 {, M/ [! |; N
    图 30

    ; H1 x. [2 s' l" J3 L按照工程导入步骤,将生成的led_flash_cpu01.out和led_flash_cpu02.out文件,分别加载到CPU1和CPU2。9 o: W5 _) K# z! q8 x8 Z
    开发板断电,然后重新上电,就可以正常点亮,核心板上的LED流水灯。
    ; w( S: ?& ]3 ]( h' `3 J6.3烧写双核SYSBIOS程序到FLASH以SYSBIOS的LED工程为例。+ q7 y: e+ t% e3 V$ ]9 ]0 x- v! W
    将光盘资料的Tools目录下的"TMS320F2837xD_BIOS.cmd"文件,拷贝到对应的工程目录下。
    - T' r  O: D. d! I5 z2 Z
    # ]% ?( b/ r9 f5 _" u  |' v# {
    图 31
    4 ~* ?& Q: V/ X2 p, {- t3 _
    按照工程文件的导入步骤,将光盘资料中"Demo\DSP_F2837xD\SYSBIOS\Application"路径下的LED工程,导入到CCS的Project Explorer窗口,如图所示。3 R/ @+ W# U- F8 h; _; c7 o
    图 32
    打开sysbios_led的工程目录,右键点击"TMS320F2837xD.cmd",左键点击"Exclude from Build"选项。! ^& [/ A& i1 j  A
    图33
    双击工程目录下的app.cfg文件。5 |; @) @* w) X+ v) [- \! x
    图 34
    5 `5 ~) p: g! s3 V6 \/ m
    点击Boot选项。4 o& F1 \2 _  U, v. O; q4 x
    图 35

    , A4 C( s& q% Z) v5 c/ _5 N确认Boot配置,如图所示。! x4 \; q. \, m
    图 36
    8 I8 B3 Z* q- Q: X7 P$ f9 Q
    保存退出,右键工程,选择"Rebuild Project"选项,重新编译工程,如图所示。
    . \$ @& W) f/ f. {2 W" A/ T' |% I$ V" G! S" b% V, T9 _
    图 37
    按照工程导入步骤加载sysbios_led.out文件,然后点击程序运行按钮。
    : O8 k' U* u' s; _  y# a, }. }  J开发板断电重启,烧写到FLASH的流水灯程序,即可正常运行。0 f8 h8 A3 g/ W# `* ~" ~

    + [! g7 m% \4 \, y& A5 y
  • 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 21:31 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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