[#4103] ircp failed on BF548-ezkit with default irda rate

Document created by Aaronwu Employee on Aug 29, 2013
Version 1Show Document
  • View in full screen mode

[#4103] ircp failed on BF548-ezkit with default irda rate

Submitted By: Vivi Li

Open Date

2008-05-15 00:08:44     Close Date

2009-03-03 03:48:20

Priority:

Medium     Assignee:

Graf Yang

Status:

Closed     Fixed In Release:

N/A

Found In Release:

2008R1.5-RC3     Release:

Category:

N/A     Board:

EZKIT Lite

Processor:

BF548     Silicon Revision:

Is this bug repeatable?:

Yes     Resolution:

Postponed

Uboot version or rev.:

    Toolchain version or rev.:

08r1-rc8

App binary format:

N/A     

Summary: ircp failed on BF548-ezkit with default irda rate

Details:

 

ircp failed on BF548-ezkit with default rate(>57600).

 

Bellow test is based on two BF548-ezkit with irda device. The same problem also exists when communicating with irda device in Windows.

--

root:/> modprobe bfin_sir

root:/> irattach irda0 -s &

316

root:/> cat /proc/net/irda/discovery

IrLMP: Discovery log:

 

nickname: blackfin, hint: 0x0400, saddr: 0xd3162e3d, daddr: 0xf06829bc

 

 

root:/> irdaping 0xf06829bc

IrDA ping (0xf06829bc on irda0): 32 bytes

32 bytes from 0xf06829bc: irda_seq=1 time=116.00 ms.

32 bytes from 0xf06829bc: irda_seq=2 time=116.00 ms.

32 bytes from 0xf06829bc: irda_seq=4 time=108.00 ms.

32 bytes from 0xf06829bc: irda_seq=5 time=120.00 ms.

32 bytes from 0xf06829bc: irda_seq=7 time=116.00 ms.

32 bytes from 0xf06829bc: irda_seq=8 time=112.00 ms.

32 bytes from 0xf06829bc: irda_seq=10 time=108.00 ms.

32 bytes from 0xf06829bc: irda_seq=11 time=116.00 ms.

 

12 packets received by filter

root:/>

root:/>

root:/> ircp /etc/host.conf

IrLAP, no activity on link!

Connecting...failed

root:/> IrLAP, no activity on link!

--

 

It can work with max rate 57600.

Bellow is the log:

--

root:/> modprobe bfin_sir max_rate=57600

root:/> irattach irda0 -s &

282

root:/> cat /proc/net/irda/discovery

IrLMP: Discovery log:

 

nickname: blackfin, hint: 0x0400, saddr: 0x49609a7b, daddr: 0x82e61eb7

 

 

root:/> irdaping 0x49609a7b

IrDA ping (0x49609a7b on irda0): 32 bytes

32 bytes from 0x49609a7b: irda_seq=0 time=116.00 ms.

32 bytes from 0x49609a7b: irda_seq=2 time=112.00 ms.

32 bytes from 0x49609a7b: irda_seq=3 time=120.00 ms.

32 bytes from 0x49609a7b: irda_seq=5 time=112.00 ms.

32 bytes from 0x49609a7b: irda_seq=6 time=120.00 ms.

32 bytes from 0x49609a7b: irda_seq=8 time=108.00 ms.

 

9 packets received by filter

root:/>

root:/> ircp /etc/host.conf

Connecting...done

Sending /etc/host.conf...done

Disconnecting...done

root:/> IrLAP, no activity on link!

--

 

Follow-ups

 

--- Graf Yang                                                2008-08-05 00:04:34

This issue existed when execute ircp between BF537 and BF548.

 

I found, the reason is BF548 can't receive charactors in 115200 speed, when

we are transfer files use irda daughter card.

 

I have tested direct connecting the two uarts use crossed wires,

both the BF537, BF548 can rx/tx under 115200 speed.

The best divisor for BF548 may be 72, and 71 also work, for 131MHz sclk.

 

When use irda daughter card, in oscillograph,

the tx side pulse width is 1.62us, while the rx side width is 2.6us.

This cause the BF548 irda logic always can't distinguish the starting bits,

See below, BF537 send 0x55 to BF548, LSB first,

 

TX __|~|_________|~|_________|~|_________|~|_________|~|____...

      s     1     0      1    0     1     0     1     0

 

RX ~~~|__|~~~~~~~~|__|~~~~~~~~|__|~~~~~~~~|__|~~~~~~~~|__|~~...

       s    x      0     1     0     1     0     1     0

 

The BF548 may take it as 0x54.

(Because of the irda daughter card layout, we need to set RPOLC bit

in GCTL besides the IREN bit, so TX is upward pulse, RX is downward pulse.)

 

While the BF537 can receive any thing correctly.

 

According to the BF548 HRM 12-16, I think 2.6us width can fit the standard.

So I think BF548 irda function have bugs,

maybe in the logic dealing with the start bit.

 

--- Michael Hennerich                                        2008-08-06 03:55:17

Graf,

 

did you try to equalize SCLK on both boards BF537 and BF548? And then using the

same divisor?

 

-Michael

 

--- Sonic Zhang                                              2009-03-02 05:38:46

Graf, please input the bug id which this bug is duplicated with. Then, close

this bug.

 

--- Graf Yang                                                2009-03-02 06:15:48

It's a HW issue.

Michael has reported it to "Kusstatscher, Benno"

<Benno.Kusstatscher@exchange.analog.com>.

 

I can't remember which bug it is duplicated with. So I set it to postponed.

 

--- Michael Hennerich                                        2009-03-02 09:24:53

This issue is tracked in the Silicon Anomaly List for BF54x.

 

05000447 - UART IrDA Receiver Fails on Extended Bit Pulses:

 

Make sure we add this to our anomaly.h file.

In the irda driver check for ANOMALY_05000447 and return if present.

 

Then close this bug.

 

-Michael

 

--- Graf Yang                                                2009-03-03 03:48:20

I have add this anomaly into bfin_sir driver. Close it.

 

 

 

    Files

    Changes

    Commits

    Dependencies

    Duplicates

    Associations

    Tags

 

File Name     File Type     File Size     Posted By

No Files Were Found

Attachments

    Outcomes