public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* Re: [ECOS] HAL register write problem
@ 2001-01-23 16:16 jeremy
  2001-01-24  7:18 ` Grant Edwards
  0 siblings, 1 reply; 8+ messages in thread
From: jeremy @ 2001-01-23 16:16 UTC (permalink / raw)
  To: ecos-discuss

I got it done! All registers should cast like this:
        ((volatile cyg_uint8 *) (XXX + 0xXX))
        ((volatile cyg_uint8 *) (XXX + 0xXX))
        ((volatile cyg_uint8 *) (XXX + 0xXX))
        ((volatile cyg_uint16 *) (XXX + 0xXX))

I only parenthesized the 16 bit register, and that was the problem.
In original pid codes, all registers are 8-bits, so it ok if all defined
this way:
((volatile cyg_uint8 *) XXX + 0xXX)
...
Is it because of the alignment?

Anyway, I should have tried this earlier :-)
Thanks to all helped me!!

jeremy



jeremy wrote:
>
> 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)

>>At a guess, you were probably intending to write

>#define CYG_DEVICE_SERIAL_RS232_UART_UBRDIV \
    ((volatile cyg_uint16 *) (CYG_DEVICE_SERIAL_RS232_UART_BASE + 0x14))

>>because adding 0x14 to something cast to a pointer to a 16-bit type
will
>>increment it by 2*0x14=0x28 bytes.

>>Jifl
--
>>Red Hat, Rustat House, Clifton Road, Cambridge, UK. Tel: +44 (1223)
271062
>>Un cheval, pas du glue. Pas du cheval, beaucoup du glue. || Opinions



^ permalink raw reply	[flat|nested] 8+ messages in thread
* [ECOS] HAL register write problem
@ 2001-01-18 14:07 jeremy
  2001-01-18 15:11 ` Gary Thomas
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: jeremy @ 2001-01-18 14:07 UTC (permalink / raw)
  To: ecos-discuss

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2001-01-24  7:18 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-01-23 16:16 [ECOS] HAL register write problem jeremy
2001-01-24  7:18 ` Grant Edwards
  -- strict thread matches above, loose matches on Subject: below --
2001-01-18 14:07 jeremy
2001-01-18 15:11 ` Gary Thomas
2001-01-18 19:04 ` Jonathan Larmour
2001-01-19  8:33 ` Grant Edwards
2001-01-19 19:37   ` jeremy
2001-01-22  0:40     ` Jesper Skov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).