KEIL下 LM3S9B92 将程序搬到SDRAM中运行 有人玩过没

2019-03-24 16:34发布

有没有人试过,我现在.SCT中修改链接地址

LR_IROM 0x60000000 0x00030000
{
    ;
    ; Specify the Execution Address of the code and the size.
    ;
    ER_IROM 0x60000000 0x00030000
    {
        *.o (RESET, +First)
        * (InRoot$$Sections, +RO)
    }

    ;
    ; Specify the Execution Address of the data area.
    ;
    RW_IRAM 0x20000000 0x00018000
    {
        ;
        ; Uncomment the following line in order to use IntRegister().
        ;
        ;* (vtable, +First)
        * (+RW, +ZI)
    }
}
先将这个bin存在了SD卡中 然后由另外一个程序Load到了SDRAM里面 0x60000000是SDRAM基地址
然后从那个程序跳过来 我是使用LDR PC,=0x60000004 进行跳转的
跳到0x60000004后 执行该条指令 程序竟然跑 0x1E100去了 有时是其他地址
0x60000004处反汇编为 

0x60000004 011D      LSLS     r5,r3,#4 ; 
跳过来之前R5 R3 存有其他的值 导致程序乱跑
可能跟编译选项有关 暂时还不知道该咋改
我想在SDRAM中运行 中断向量表可能应该放置到SRAM中了 否则中断就会受影响这个倒可以容后考虑
目前在SDRAM中程序无法正确执行则是最大的问题 
看来在SDRAM中直接执行是没戏了 我写了段汇编 开头都是NOP 连执行NOP指令都直接飞掉
我想可能通常的CPU都是把SDRAM中的内容Load到Cache中来运行的吧 直接运行是不行了 郁闷死了~~
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
fengzhang2002
2019-03-24 19:34
< 没玩过,学习一下思路

一周热门 更多>

相关问题

    相关文章