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

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

高工
2012-09-12 23:23:41     打赏
12楼
第一个稍微有那么点样子的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     打赏
13楼
搞明白了:
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警告暂时先不管了。

高工
2012-09-13 22:47:54     打赏
14楼
一段循环程序结构的代码:
求a[i]*x[i](i=1,2,3,4)中的最大值,程序是照着问老王要的那个书敲进来的
添加了几句注释:

    .title "ex43.asm"
    .mmregs
STACK    .usect    "STACK",10H    ;引号中的STACK是段名,对应CMD文件中的一个段
        .bss a,4                ;定义一个数组
        .bss x,4                ;第二个数组
        .def start                ;定义一个可被别的模块找到的符号,作为程序入口
        .data                    ;开始放入数据
table    .word    1,2,9,4    ;数据修改了一下,主要看能不能跳转
        .word    5,6,9,8
        .text                    ;数据定义完毕,开始程序代码
start:    STM    #0,SWWSR
        STM #STACK+10H,SP        ;堆栈指针
        STM #a,AR1
        RPT #7                    ;重复7次?放入4个word类型数据?
        MVPD table,*AR1+
        STM    #a,AR1
        STM    #x,AR2
        STM #2,AR3
        LD    *AR1+,T
        MPY    *AR2+,A
loop1:    LD    *AR1+,T           ;这里做循环玩
        MPY    *AR2+,B
        MAX    A
        BANZ    loop1,*AR3-
end:    B    end
    .end                      ;程序结束

CMD文件:
Debug\ex43.obj
-o Debug\ex43.out
-m Debug\ex43.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 PAGE 0
    .data    :>EPROM PAGE 0
    .bss    :>SPRAM PAGE 1
    STACK    :>DARAM PAGE 1
}

工程代码如下,CCS3.3打开
ex43.rar

再次感谢老王的书。。。。。。。。。。。

共14条 2/2 1 2 跳转至

回复

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