Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Re: [lpc2000] accessing SPI registers

2005-05-26 by Bob Paddock

I am new to the ARM, but I know from my extensive AVR experience that removing 
the "volatile" directive can lead to bad code.  Is this a problem with what 
you are proposing for the ARM?

Without the volatile direction GCC may optimize access to the hardware 
registers more times, or less times that you expect.  You can end up clearing 
bits unintentionally this way.  For example a status register read may clear 
bits.

On Wednesday 25 May 2005 11:57 am, Robert Adsett wrote:
> At 11:37 AM 5/25/05 -0400, Brett Delmage wrote:

> >#define REG(addr) (*(volatile unsigned long *)(addr))
> >#define REG8(addr) (*(volatile char *)(addr))
...
> I haven't done a comparison of code generation but I use ld in combination
> with gcc for this.
...
> PROVIDE( MAMCR = 0xE01FC000);
> PROVIDE( MAMTIM = 0xE01FC004);
...
>   MAMCR = (unsigned char)ctrl;           /*lint !e930 cast from enum     */
>   MAMTIM = (unsigned char)cycle_time;

-- 
                          http://www.softwaresafety.net/
 http://www.unusualresearch.com/ http://www.bpaddock.com/

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.