I've been developing code just fine running in SRAM with the current head.  I 
just tried to run out of flash.  My software put the program in flash just 
fine, but it doesn't run, it winds up in the BAM code trying to boot off the 
serial port / CAN.

The difference between SRAM and FLASH is only the setup of the MMU, and it's 
the same code in both cases. For SRAM flash is moved from 0 up to 21400000 and 
4MB of SRAM down from 21400000 to 0.  The MMU is setup in the debugger and at 
startup the MMU setup is skipped if a flag in low memory is clear.  That's the 
only difference in the behavior (see below), and I've never noted any 
differences before.

I verified that I have the same MMU setup except for the address translation in 
both situations.  It was different, someone changed the setup to only set the 
supervisor mappings and not map certain sections executable but that didn't 
matter, I've duplicated those settings and it works the same way.

Before I go too far can anyone (Sebastian) think of changes in any other places 
that might affect this?

static BSP_START_TEXT_SECTION void mpc55xx_start_mmu(void)
{
  #ifdef MPC55XX_BOOTFLAGS
    /* If the low bit of bootflag 0 is clear don't change the MMU.  */
    bool do_mmu_config = (mpc55xx_bootflag_0 [0] & 1) != 0;
  #else
    bool do_mmu_config = true;
  #endif

  if (do_mmu_config) {
    mpc55xx_start_mmu_apply_config(
      &mpc55xx_start_config_mmu [0],
      mpc55xx_start_config_mmu_count [0]
    );
  }
}


Peter
-----------------
Peter Dufault
HD Associates, Inc.      Software and System Engineering

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to