Re: coldfire uart question

Angelo Dureghello
2017-10-18T07:19:54Z

Hi Greg,

On 18/10/2017 09:12, Greg Ungerer wrote:
> 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.
>

many thanks for the hint, well for stmark2 board unfortunately/stupidly i
didn't wired them out from the BGA package. But good to know.

> Regards
> Greg
>

Regards,
Angelo
>
>