Re: coldfire uart question

Greg Ungerer
2017-10-18T07:12:59Z

Hi Angelo,

On 18/10/17 07:18, Angelo Dureghello wrote:
> On 16/10/2017 01:08, Finn Thain wrote:
>> On Sun, 15 Oct 2017, Angelo Dureghello wrote:
>>
>>> Hi all,
>>>
>>> i was trying a file transfer with xmodem-1k and uClinux "rx" on the
>>> mcf54415 stnmark2 board side.
>>>
>>> This using a recent mainline kernel:
>>> / # cat /proc/version
>>> uClinux version 4.14.0-rc4stmark2-001-00118-g811fdbb62a9d
>>> / #
>>>
>>> So, as per xmodem-1k, i send 3 bytes header, a 1024 bytes block, and 2
>>> bytes crc16. But "rx" timeouts waiting the block.
>>>
>>
>> What is the fastest baud rate that will work?
>>
>>> Adding some traces to "rx", it timeouts since some bytes (5 to 10)
>>> randomly positioned in the block are not received. Of course they have
>>> been sent (scope checked).
>>>
>>> The same 1024 bytes transfer in u-boot (y-modem) always succeed.
>>>
>>
>> Does u-boot need to do any retransmissions? (If it polls the UART, it
>> could probably avoid any fifo overflow.)
>>
>> You may also want to try lrzsz.
>>
>>> Since mcf54415 has a 4 slots RX fifo UART,
>>
>> Ouch. At 115200 baud, that FIFO overflows after about 347 microseconds. If
>> the kernel takes one interrupt per 4 bytes, you're looking at thousands of
>> interrupts per second. Add a little unexpected interrupt latency (say, 50
>> microseconds) and the next byte gets lost.
>>
>
> thanks for explaining this.
>
> Well, if i understand properly, this mcf54415 CPU has 2 interrupts flags
> that can be checked:
>
> RXRDY, for one or more character received (current mcf.c seems to use
> this flag) and
> FFULL, for all 4 fifo slots full.
>
> So we probably have even more interrupts per second right now.
>
> I am at 115200, will try to decrease, and also, will try zmodem in case.

Can you use hardware flow control (the "crtscts" stty setting)?
You will need to use a serial cable with RTS and CTS signals wired,
and also for the sending end to be set for it. The ColdFire UART
has hardware level support for automatically driving RTS/CTS when
FIFO is full.

Regards
Greg