打印

DSP应用程序通过二次bootloader拷贝到固定的SARAM后代码就飞了

[复制链接]
1551|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenq590|  楼主 | 2012-11-2 14:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DSP5509A 我用HPI模式进行boot,需要二次boot,但是在通过二次bootloader程序把应用程序的bin文件拷贝到cmd要求存放代码的位置后(拷贝的数据正确我通过JTAG看了),通过汇编CALL命令启动应用代码(CALL  0x10000),但是运行一小部分代码后就飞了(我通过IO口观察),而且配置的寄存器与我写的数据不符(倍频16倍结果始终不变),求大侠出个主意啊。

相关帖子

沙发
adams.gh| | 2012-11-4 07:36 | 只看该作者
编译bin文件时,需要按照最终实际存放的位置修改链接脚本

使用特权

评论回复
板凳
chenq590|  楼主 | 2012-11-5 10:08 | 只看该作者
谢谢啊 呵呵 第一次做这个,不是很懂,假如我存放在RAM的0x10000位置应该怎么修改连接脚本啊?

使用特权

评论回复
地板
adams.gh| | 2012-11-5 12:21 | 只看该作者
把你的连接脚本粘上来

使用特权

评论回复
5
chenq590|  楼主 | 2012-11-5 14:38 | 只看该作者
MEMORY
{
        PAGE 0:

        MMR     : origin = 0000000h, length = 00000c0h
        SPRAM   : origin = 00000c0h, length = 0000040h
        VECS    : origin = 0000100h, length = 0000100h
        DARAM0  : origin = 0000200h, length = 0000778h
        DARAM   : origin = 0000978h, length = 000F688h
        SARAM   : origin = 0010000h, length = 0030000h

         /*        SARAM0  : origin = 0010000h, length = 0008000h
        SARAM1  : origin = 0018000h, length = 0010000h
                  SARAM2  : origin = 0030000h, length = 0008000h
        SARAM3  : origin = 0038000h, length = 0008000h
        */      

        CE0     : origin = 0050000h, length = 03b0000h
        CE1     : origin = 0400000h, length = 0400000h
        CE2     : origin = 0800000h, length = 0400000h
        CE3     : origin = 0c00000h, length = 03f8000h

        /*PDROM   : origin = 0ff8000h, length = 07f00h*/
           /* VECS    : origin = 0ffff00h, length = 00100h   reset vector */

}       


SECTIONS
{
        .vectors  : {} > VECS   PAGE 0         /* interrupt vector table */
        .cinit   : {} > SARAM        PAGE 0                  /*已初始化的全局与静态变量的 C 初始化记录--低 64K 数据*/
        .text    : {} > SARAM        PAGE 0                  /*程序段,该段通常包含可执行代码即程序和常量--程序*/
        isrs     : {} > DARAM        PAGE 0

        .stack   : {} > DARAM        PAGE 0                    /*堆栈空间*/
        .sysstack: {} > DARAM        PAGE 0
        .sysmem  : {} > DARAM        PAGE 0                  /*malloc 函数存储区*/
        .data    : {} > DARAM        PAGE 0                  /*数据段,该段通常包含已初始化的数据*/
        .bss     : {} > DARAM        PAGE 0                  /*保留数据空间段,该段通常为未初始化的数据保留空间--全局与静态变量*/
        .const   : {} > DARAM        PAGE 0                  /*已初始化的全局与静态 const 修饰变量,串常量*/


        .coeffs  : {} > DARAM        PAGE 0
        .dbuffer : {} > DARAM        PAGE 0
        files    : {} > DARAM         PAGE 0        /* User-defined sections */
        statvar  : {} > DARAM        PAGE 0
        statarry : {} > DARAM        PAGE 0
        tempvar  : {} > DARAM        PAGE 0
        .cio         : {} > DARAM        PAGE 0
                .csldata : {} > DARAM        PAGE 0
                dmaMem         : {} > DARAM        PAGE 0
                cslmem         : {} > DARAM        PAGE 0
                .switch         : {} > DARAM        PAGE 0
                vectors  : {} > DARAM   PAGE 0
}

我把代码烧写到SARAM的0x10000位置的

使用特权

评论回复
6
chenq590|  楼主 | 2012-11-6 10:46 | 只看该作者
好像是初始化的全局变量在程序运行的时候调用不了,有什么办法解决吗?高手们啊!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

14

帖子

0

粉丝