这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 开贴记录我的TMS320VC5410开发板折腾进程

共11条 1/2 1 2 跳转至

开贴记录我的TMS320VC5410开发板折腾进程

高工
2012-09-04 19:18:23     打赏
折腾了好多天,终于下载了第一个程序到片子里。
虽然看不见有什么输出,但从仿真器的现象和CCS里边看得结果,程序确实是写进去了。



关键词: 开贴     记录     我的     TMS320VC5410     开发         

高工
2012-09-04 19:36:53     打赏
2楼
开发环境用的是CCS2.2
用3.3有问题。3.3默认的Gel文件有bug。这个bug让我折腾了好多天。

第一个BUG是这样的:
CCSSetup里边配置好MCU和仿真器之后,启动CCS。
会报出一个对话框,写着:
Error adding memory map range:End address is beyond target memory length
这是因为gel文件里边有一行这样的:
GEL_MapAdd(0x18000u,0,0x8000u,1,1);    /* SARAM2 */

将sram映射到0x18000u开始0x8000u结束的地址。
这个在启动是就会报错。
我还没用到外扩的SRAM,暂时不考虑这一行。就将他改成
GEL_MapAdd(0x8000u,0,0x8000u,1,1);    /* SARAM2 */

这样这个告警就没了
然后就是一个
Unable to determine default Pin/Port configuration!
这个据说是CCS系统的BUG。有人打电话问TI,说是兼容性问题这个可以不用考虑的

看着烦,就改回去CCS2.2了,这些问题都没有了。网上找了个小程序,能下载到板子上。

高工
2012-09-04 19:40:48     打赏
3楼
于是,我的开发环境出来了:
仿真器:XDS510
软件环境:CCS2.2
开发板:TM320VC5410A

高工
2012-09-04 20:28:01     打赏
4楼
敲出来第一个程序。弄了半天终于能运行了。
DSP程序有几个部分:
1、源文件,大家都知道的

2、中断向量表文件

3、cmd文件,管的是内存的分配。告诉CCS程序应该加载到什么地方去。

CMD文件编写一片陌生。这次用的是个现成的。

据群里边网友sprone介绍,有本书:手把手教你学F2812,可以参考

高工
2012-09-05 00:09:00     打赏
5楼
看看数据手册:TMS320C54x DSP Reference Set, Volume 1: CPU and Peripherals


完全不懂什么叫做按页分配内存,也许平时都用到了但没这么叫,也许是个新东西

高工
2012-09-05 19:55:55     打赏
6楼
继续今天的折腾,看spru173。
跟以前玩的几个东西都不一样,这个DSP得自己写代码让它启动。
以前的ARM7、CM3、51什么的基本都是可以不用管启动的。

高工
2012-09-10 23:35:45     打赏
7楼
一个没有CMD的工程,可以运行。据说CCS自己给添加了CMD,这种CMD效率比较低。

这种低效率的方法只有在添加了对rts.lib的引用之后才能用,程序入口在c_int00,之后跳转到main

高工
2012-09-11 12:23:01     打赏
8楼
还没搞明白flash映射的地址,程序全部下载到内存。reset之后,什么都没了
努力楼

高工
2012-09-12 23:23:41     打赏
9楼
第一个稍微有那么点样子的DSP程序,相当于一个Hello world:
一小段汇编:
    .title "ex.asm"
    .mmregs

STACK    .usect    "STACK",10H
        .bss    x,1
        .def    start
        .data
table:    .word    -7
        .text
start    STM    #0,SWWSR              //这里是程序入口,跟CMD文件对应
        STM    #STACK+10H,SP
        STM    #x,AR1

        MVPD    table,*AR1
        LD    *AR1,A
        BC    end,AGT
        ABS    A
        STL    A,@x
end:    B    end
        .end   
外加一段CMD进行内存分配:
Debug\ex.obj     //要进行连接的OBJ文件
-o    Debug\ex.out    //生成的目标文件
-m    Debug\ex.map   //map文件
-e    start                //程序入口

MEMORY
{
    PAGE 0:
        EPROM:org = 0E00H,len = 100H
    PAGE 1:
        SPRAM:org = 0060H,len = 20H
        DARAM:org = 0080H,len = 100H
}

SECTIONS
{
    .text    :>EPROM PAGE0
    .data    :>EPROM PAGE0
    .bss    :>SPRAM PAGE1
    STACK    :>DARAM PAGE1
}
程序实验了几个简单的指令,体验了CMD文件的写法。
几行汇编是抄的,伪指令还没搞明白。有待进一步理解

这段小程序在链接的时候还有三个Warning如下:
<Linking>
>> D:\dspPRJ\ex42\ex42.cmd, line 19: warning:
               multiple definitions of SECTION named 'PAGE0'
>> D:\dspPRJ\ex42\ex42.cmd, line 21: warning:
               multiple definitions of SECTION named 'PAGE1'
>> warning: entry point other than _c_int00 specified

第三个倒好理解,因为程序的入口点c_int00我没有定义。我定义了start作为程序的入口

前两个warning,说是SECTIONS段里边重复定义了PAGE0和PAGE1.我哪里重复定义了啊?

高工
2012-09-12 23:29:20     打赏
10楼
搞明白了:
SECTIONS
{
    .text    :>EPROM PAGE0
    .data    :>EPROM PAGE0
    .bss    :>SPRAM PAGE1
    STACK    :>DARAM PAGE1
}

改写成:

SECTIONS
{
    .text    :>EPROM PAGE 0
    .data    :>EPROM PAGE 0
    .bss    :>SPRAM PAGE 1
    STACK    :>DARAM PAGE 1
}

中间有个空格,疏忽啊。。。。。
下载,运行,没问题了。
至于那个c_int00警告暂时先不管了。

共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]