2

我正在尝试通过串行引导将RAM.bin映像加载到 MPC5604E 控制器的SRAM上(对 LINFLEX0 使用自动波特率模式)。我正在使用示例 LED 切换程序生成 RAM.bin映像文件并尝试通过串行启动加载,它已成功加载并且 LED 切换工作正常(启用看门狗时),但如果我们禁用看门狗然后加载并执行它,LED 切换不工作。因此,我假设在通过代码战士生成RAM.bin文件以进行串行引导之前,可能存在与.lcf(链接器文件)和其他一些文件中的初始化相关的问题。

任何人都可以帮助我进行这些初始化,因为我不知道该怎么做?这样我的RAM.bin镜像文件就可以成功执行了。

MPC5604E.lcf :::

       /* lcf file for MPC5604E processors                                         */
       /*                                                                          */
       /*              512KB Flash, 96KB SRAM                                      */




      MEMORY
      {
            resetvector:           org = 0x00000000,   len = 0x00000008
            init:                  org = 0x00000020,   len = 0x00000FE0 
            exception_handlers:    org = 0x00001000,   len = 0x00001000
            internal_flash:        org = 0x00002000,   len = 0x000FE000

            internal_ram:          org = 0x40000000,   len = 0x00016000
            heap  :                org = 0x40016000,   len = 0x00001000
            stack :                org = 0x40017000,   len = 0x00001000

         }

         /* This will ensure the rchw and reset vector are not stripped by the linker*/
         FORCEACTIVE { "bam_rchw" "bam_resetvector" }

        SECTIONS
        {
          .__bam_bootarea LOAD (0x00000000): {} > resetvector

       GROUP : {
        .init LOAD (0x00000020) : {}
       .init_vle (VLECODE) LOAD (_e_init) : {
       *(.init)
       *(.init_vle)
       }
     } > init

     GROUP : {
     .ivor_branch_table (VLECODE) LOAD (0x00001000) : {}
      .__exception_handlers  (VLECODE) LOAD (_e_ivor_branch_table) : {} 
      } > exception_handlers

     GROUP  : {
     .text : {} 
     .text_vle (VLECODE) ALIGN(0x08): {
        *(.text)
      *(.text_vle)
     }
      .rodata (CONST) : {
       *(.rdata)
       *(.rodata)
      }
      .ctors : {}
      .dtors : {}
      extab : {}
      extabindex : {}
      } > internal_flash

      GROUP : {
       .__uninitialized_intc_handlertable ALIGN(2048) : {}
       .data   : {}
       .sdata  : {}
       .sbss   : {}
       .sdata2 : {}
       .sbss2  : {}
       .bss    : {}
       } > internal_ram
      }

      /* Freescale CodeWarrior compiler address designations */

     _stack_addr = ADDR(stack)+SIZEOF(stack);
     _stack_end  = ADDR(stack);
     _heap_addr  = ADDR(heap);
     _heap_end   = ADDR(heap)+SIZEOF(heap);


    /* Exceptions Handlers Location (used in Exceptions.c IVPR initialization)*/

    EXCEPTION_HANDLERS    = ADDR(exception_handlers);

   /* L2 SRAM Location (used for L2 SRAM initialization) */

   L2SRAM_LOCATION = 0x40000000;
4

0 回答 0