This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
HAL register write problem
- To: <ecos-discuss at sourceware dot cygnus dot com>
- Subject: [ECOS] HAL register write problem
- From: "jeremy" <chienyul at home dot com>
- Date: Thu, 18 Jan 2001 11:17:55 -0800
My platform is Samsung KS32C50100, which operates in big-endian mode.
I got some problem with writing to register using HAL_WRITE function.
For example, in plf_stub.c where I put the UART initialization function
in,
Here I write some initialize value to UART control registers,
HAL_WRITE_UINT8 (CYG_DEVICE_SERIAL_RS232_UART_UTXBUF, 0x0);
HAL_WRITE_UINT8 (CYG_DEVICE_SERIAL_RS232_UART_URXBUF, 0x0);
HAL_WRITE_UINT16(CYG_DEVICE_SERIAL_RS232_UART_UBRDIV, 0x280);
The first two lines for writing 8-bits registers works fine. But the
last line doesn't write
anything into the 16-bits register. I defined that 16-bits register
like this in the first part
of the program:
#define CYG_DEVICE_SERIAL_RS232_UART_UBRDIV \
((volatile cyg_uint16 *) CYG_DEVICE_SERIAL_RS232_UART_BASE + 0x14)
I tried to write it as a word register by HAL_WRITE_UINT32, doesn't work
either,
Only works when I use HAL_WRITE_UINT8, but this way only writes in 0x80
instead
of 0x280. So the only way I can write it is to use arm ldr instruction
in vectors.S, which
is not good because I'll have more 16&32 bits registers to write.
Can anyone help me with this?
Thanks a lot!
Chien-Yu