您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> TI专栏 >> TI C2000 >> 28x Delfino浮点系列 >> 正文
  将程序代码烧到F28335的片上FLASH的调试记录           ★★★ 【字体:
将程序代码烧到F28335的片上FLASH的调试记录
作者:wangkeye…    文章来源:wangkeyen    点击数:    更新时间:2013-3-26    
实现将程序代码烧到F2812的片上FLASH中,然后复位后程序从FLASH中的代码执行(运行当中不将FLASH中的代码或部分代码载入到RAM区内),要做这么几个工作:
        修改CMD文件
 
       添加指令跳转代码
 
       烧写FLASH
 
 
 
(一)修改CMD文件
 
       相对于调试时的SRAM.CMD文件来说,要修改这么几部分:
 
1、  将程序部分(PAGE0)对应到FLASH空间;
 
2、  分别在SECTINS和MEMORY中添加起始段(用户自定义的codestart)和相应的存储空间名(设定为BEGIN),实现的代码如下:
 
BEGIN     : origin = 0x3F7FF6, length = 0x000002
 
codestart        : > BEGIN,      PAGE = 0
 
(二)添加指令跳转代码
 
       直接使用开发包中的源码DSP281x_CodeStartBranch.asm文件,代码如下:
 
 
 
***********************************************************************
 
WD_DISABLE   .set    1       ;set to 1 to disable WD, else set to 0
 
    .ref _c_int00
 
***********************************************************************
 
* Function: codestart section
 
*
 
* Description: Branch to code starting point
 
***********************************************************************
 
    .sect "codestart"
 
code_start:
 
    .if WD_DISABLE == 1
 
        LB wd_disable       ;Branch to watchdog disable code
 
    .else
 
        LB _c_int00         ;Branch to start of boot.asm in RTS library
 
    .endif
 
;end codestart section
 
***********************************************************************
 
* Function: wd_disable
 
*
 
* Description: Disables the watchdog timer
 
***********************************************************************
 
    .if WD_DISABLE == 1
 
    .text
 
wd_disable:
 
    SETC OBJMODE        ;Set OBJMODE for 28x object code
 
    EALLOW              ;Enable EALLOW protected register access
 
    MOVZ DP, #7029h>>6  ;Set data page for WDCR register
 
    MOV @7029h, #0068h  ;Set WDDIS bit in WDCR to disable WD
 
    EDIS                ;Disable EALLOW protected register access
 
    LB _c_int00         ;Branch to start of boot.asm in RTS library
 
    .endif
 
;end wd_disable
 
.end
 
; end of file CodeStartBranch.asm
 
 
 
(三)烧写FLASH
 
       烧写FLASH有两种方式:用代码操作,用CCS插件(这只是我了解的,可能有更多的方法)。对于第一种方法可以看看这上面的文章,(http://article.ednchina.com/CPUDSP/20090110090607.htm
 
我觉得写得很好,下面我主要记录下我用CCS插件来烧的过程:
 
       首先,给安装CCS烧写插件,这个网上很多,可以很容易找到,不过网上有些人说安装的插件版本要和芯片的一样,也就是要用最新的版本,我下了两个版本,用的却是相对老的版本,结果当然也烧写进去了。
 
       在以上工作都做好后,就可以点击烧写菜单选项了,如果此时弹出的菜单大部分是灰色的话,很有可能是你的GEL文件不大对,当然也有可能是DSP被锁了。我也与到这样的情况,查看我的GEL文件,发现F2812_Memory_Map()中的Program和Data memory maps模块中有部分代码被注释了,然后去掉注释就OK了。
 
       在点击excute前要设置PLLCR和烧写配置,在插件安装的路径中有两个文件,开始时我也不知选哪个,挨个试,后来发现FlashAPIInterface2812V2_10.out能用。在做完这些后就可以excute了,这中间可能会出现两个问题(总能遇到各种怪问题的我也只有出现两个,相信幸运的你肯定好运),一是提示Code Composer could not locate: boot28.inc;我选了“是”,用工程目录lib下的rts2800.lib满足它,它竟然没报错,真怪!然后就erase/program/verify succeed。在最后它又弹出一个提示:“
 
Warning: This program contains initialized RAM data.
 
It may run successfully under Code Composer Studio
 
but not as a standalone system because of this. If
 
your Flash program requires initialized data in RAM,
 
you will need to write Flash code to initialize RAM memory.”
 
我没管它(不是我不管,是我看不懂它是什么意思),后来也没发现有什么不对的,也有可能我还没调到那步吧,希望你也不会调到那步。
 
       最后,重新上电就OK了。当然,就是程序烧到FLASH中,还是可以在CCS里进行单步调试的。
 
后来发现出现这个警告的原因是在初始化的时候用到了一些需要在RAM里面运行的函数,比如DSP28x_usDelay()函数。
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    把DSP TMS320F28XXX的程序段…
    F28335的ADC采集电压不对(采…
    F28335如何烧写代码到flash中…
    F28335有三种32位的I/O口
    当碰到仿真器连接不上C2000芯…
    关于F28335串口烧写
    F28335 Ecap使用总结
    对F28335的位域和寄存器结构…
    对F28335的位域和寄存器结构…
    F28335 ePWM模块使用总结
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61 湘ICP备13001086号-2