Subject:
|
Re: LNP collision detection Bug found and fixed
|
Newsgroups:
|
lugnet.robotics.rcx.legos
|
Date:
|
Fri, 10 Dec 1999 04:46:02 GMT
|
Viewed:
|
1132 times
|
| |
| |
Hi Ben, you wrote:
>
> define TX_COLL (-1)
>
> would fix it.
it is already defined this way...
indeed it looks like egcs for h8300 treats char as unsigned by default.
look at the following test proggy...
char ch;
void showbug(void)
{
if (ch < 1) ch=-2;
}
... and the disassembled code
> make bug.o CFLAGS=-g /opt/legos/crossgcc/bin/h8300-hitachi-hms-gcc -g -c bug.c -o bug.o
> h8300-hitachi-hms-objdump --disassemble-all -m h8300 bug.o
bug.o: file format coff-h8300
Disassembly of section .text:
00000000 <_showbug>:
0: 6d f6 6d f6 mov.w r6,@-e7
2: 0d 76 0d 76 mov.w r7,r6
4: 6a 0a 00 00 6a 0a 00 00 mov.b @0x0:16,r2l
8: 0c aa 0c aa mov.b r2l,r2l
a: 46 00 46 00 bne .0 (c)
^^^^^^^^^^^^^
c: fa fe fa fe mov.b #0xfe,r2l
e: 6a 8a 00 00 6a 8a 00 00 mov.b r2l,@0x0:16
00000012 <.L1>:
12: 6d 76 6d 76 mov.w @r7+,r6
14: 54 70 54 70 rts
Disassembly of section .data:
the bne instruction will not catch negative values.
if you declare ch as signed char, however, a bgt intruction is
generated, what is fine -- and works in legOS, as i verified.
the volatile declaration seems to be essential. tx_state is read several
times in function lnp_logical_write, and in most cases will change it´s
value inbetween.
>
> The 8 character queue will be the FIFO in the SIO - you can disable it
> on Linux, I believe.
well, i hope there is an ioctl, i´ll check this. Many thanks for your
tips,
cheers, Martin
|
|
Message is in Reply To:
3 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|