关于CORTEX-M4bootload的问题。

你好!

我现在在做CORTEX-M4的BOOTLOAD,参考的是TI的例程(StellarisWare\boot_loader),有以下几点疑问:

1.  在链接文件中:

    GROUP
    {
        .bss
        .stack
    } run = SRAM, RUN_START(bss_run), RUN_END(bss_end), SIZE(bss_size), RUN_END(__STACK_TOP)

  上面的指示中,bbs_end和__STACK_TOP指示的地址是不是一样的?(如果一样的话,为什么汇编中还要加入如下语句:

    .ref    __STACK_TOP
    bss_end     .word __STACK_TOP

2.   在把flash里面的数据搬移到ram的时候,ram的开始地址是如何确定的?为什么总是从SRAM (RWX)的origin指示的地址开始的?难道不会从bss_ end后面开始吗?  (也就是先搬完flash的数据,在分配.bss和.stack,这是编译器自己默认的吗?)

  • 先回答你第二个问题

    把FLASH的boot搬到RAM中运行时,是搬运到RAM的起始地址即0X20000000,也就是RAM的前NK被分配来做BOOT的映射,当然,你想分配到任意地址都是可以的,前提是你定义的地址不要和堆栈冲突就行了。

  • 如果我想把flash搬到其他地址,那应该如何做?对于堆栈,连接文件里不是设定为放在.bss后面了吗,为什么会出现冲突?

       GROUP

       {

           .bss

           .stack

       } run = SRAM, RUN_START(bss_run),

  • 如果我想把flash搬到其他地址,那应该如何做?例如我想把flash的数据搬移到STACK后面。