Personal tools
You are here: Home Forums SH Family SH4 - Access Peripheral Register via Structure

SH4 - Access Peripheral Register via Structure

Up to SH Family

SH4 - Access Peripheral Register via Structure

Posted by joelw@indyelectronics.com at December 29. 2007

I'm using the following code built with Microsoft Platform builder 5.0 for SH4 and am not able to write to peripheral registers.  Similar code works on PMD registers (32 bit aligned).

I've tried packing struct and adding dummy variables with no luck.

Any ideas?

Thanks,

Joel

typedef struct VUINT16_T SCSMR; // Serial ModeVUINT8_T SCBRR; // Bit RateVUINT16_T SCSCR; // Serial ControlVUINT8_T SCFTDR; // Transmit FIFO DataVUINT16_T SCFSR; // Serial StatusVUINT8_T SCFRDR; // Receive FIFO DataVUINT16_T SCFCR; // FIFO ControlVUINT16_T SCFDR; // FIFO Tx/Rx data countVUINT16_T SCSPTR; // Serial Port registerVUINT16_T SCLSR; // Line StatusVUINT32_T RSVR1; VUINT32_T RSVR2; VUINT16_T BRGDL; // BRG Frequency DivisionVUINT16_T BRGCKS; // BRG Clock SelectVUINT32_T RSVR3;VUINT32_T RSVR4;VUINT16_T SCSMRIR; // IrDA serial modeSCIF2_REG_T, *PSCIF2_REG_T;

{

VUINT8_T SCBRR; // Bit Rate

VUINT16_T SCSCR; // Serial Control

VUINT8_T SCFTDR; // Transmit FIFO Data

VUINT16_T SCFSR; // Serial Status

VUINT8_T SCFRDR; // Receive FIFO Data

VUINT16_T SCFCR; // FIFO Control

VUINT16_T SCFDR; // FIFO Tx/Rx data count

VUINT16_T SCSPTR; // Serial Port register

VUINT16_T SCLSR; // Line Status

VUINT32_T RSVR1; VUINT32_T RSVR2; VUINT16_T BRGDL; // BRG Frequency Division

VUINT16_T BRGCKS; // BRG Clock Select

VUINT32_T RSVR3;VUINT32_T RSVR4;VUINT16_T SCSMRIR; // IrDA serial mode

}

SCIF2_REG_T, *PSCIF2_REG_T;

volatile

// this should affect hardware periheral and update in debug sesssion

// instead it writes to struct copy on heap

pSCIFRegs->SCFCR = ( SCIF_SCFCR_TFCL | SCIF_SCFCR_RFCL );

Base address pf SCIF2 is passed in as UARTPhysAddr.

Re: SH4 - Access Peripheral Register via Structure

Posted by joelw@indyelectronics.com at December 29. 2007

My code did not post correctly.  It's a memory alignment question related to MS compiler.

I posted on microsoft.public.windowsce.platbuilder.

Powered by Ploneboard