Processor does not boot in Big Endian

Hi, today I've experienced some isues with my RSPI + DMA since I have to write data to the RSPI data register in WORDS/DWORDS. I've found another thread over here offering the solution ; http://renesasrulz.com/renesas_forum_home/rx/f/rx---forum/5191/rspi-using-dmac

So, now I try to change my processor to big endian - without any luck. Changed the endian mode in my processor settings, and when checking out my MOT file, it really shows me the 32 bits register @ 0xFFFFFF80 has a value of 0xFFFFFFF8, telling me the 3 endian bits have been cleared for big endian. First think I do when hitting the reset button on the processor is toggling some LEDs on:

void PowerON_Reset_PC(void)
{
    /* Stack pointers are setup prior to calling this function - see comments above */   
   
    /* Initialize the MCU processor word */
    set_intb((void *)__sectop("C$VECT"));
 
    /* Initialize FPSW for floating-point operations */
#define FPU_ROUND 0x00000000  /* Let FPSW RMbits=00 (round to nearest) */
#define FPU_DENOM 0x00000100  /* Let FPSW DNbit=1 (denormal as zero) */
 
    set_fpsw(FPSW_init | FPU_ROUND | FPU_DENOM);
    PORTB.PODR.BYTE ^= 0x3F;
    PORTB.PDR.BYTE ^= 0x3F;
    for(;;);
}
 
when having the processor in Little Endian mode, this seems to work. Big endian? No leds that go on.
 
Does anyone know If I'm forgetting something?
 
I Know from the RX62N processor I had to switch the endian in hardware, here it's configured in ROM but I just can't find out why my code does not start, I hope it's something stupid I'm forgetting...
 
Regards and thanks in advance!
  • Did you change the endian mode in the project properties. This instructs the compiler how to map the iodefines for big/little endian
  • In reply to Paul Brown:

    Hi Paul. Thanks for helping me out here. What I've done is (e2studio): Project Properties, Build->Settings->CPU->endian BIG.
    What I also did after posting this thread, was setting up a blank project in big endian mode. Also in this project, I only toggled the LEDS on. ( PORTB.PODR.BYTE |= 0x3F;
    PORTB.PDR.BYTE |= 0x3F;)
    This didnt work as well. However, when changing the CPU endian to Little, it did work.

    The processor I am using is a RX63N BDDFP version, 100 pins, I am uploading the output file using Flash Development Toolkit, no debugger is available. Next monday I will try running it on the YRDKRX63N Development Kit, which has exactly the same processor.

    In the meanwhile, if any more information is available from forum users, youre welcome ;)
  • In reply to Paul Brown:

    Doesn't seem to work on the yrdkrx63n either. I compile a program with both little and big endian, I can clearly see by checking the mot file that the format of my data has changed to the desired endian, I can see the 32bits register at address 0xFFFFFF80 telling me which mode is used, but the processor doesn't boot. the program I made toggles the led (PORTD.PODR.BYTE ^= 0xFF), but the toggle only occurs in the little endian compiled binary.

    as asked before, is there any hardware setting necessary?
  • In reply to daan schilder:

    Check the MDE(endian select) bit settings. Should be a section for the "Endian Select Register" in the hardware manual.

    I think the endianness of the RX62N is controlled by the MDE pin settings. RX63N is controlled by the MDE SFR located in ROM.
  • In reply to daan schilder:

    Can you reset the processor on the debugger does it jump to your PowerON_Reset_PC() function. I was just wondering if the reset vector address is set up correctly for big endian.
  • This thread will be archived due to inactivity

    Mike Clements
    RenesasRulz Moderator