Richard H.,
Would you be able to provide details about this external circuit?

Thank you,
Irene.

-----Original Message-----
From: Richard Hill [mailto:plo...@gmx.de] 
Sent: Wednesday, August 19, 2020 8:57 AM
To: Irene Kravets <ire...@sapling-inc.com>; linuxptp-users@lists.sourceforge.net
Subject: RE: [Linuxptp-users] Can ptp4l be used without phc2sys?

I had an iMX6 board running steady at <50ns using an external circuit to adjust 
the 125MHz system clock, from which the AVTP counter is incremented.

It can be done


Richard H


-----Original Message-----
From: Irene Kravets [mailto:ire...@sapling-inc.com]
Sent: Mittwoch, 19. August 2020 13:49
To: linuxptp-users@lists.sourceforge.net
Subject: Re: [Linuxptp-users] Can ptp4l be used without phc2sys?

So, it sounds to me like fec_ptp and therefore i.MX6 might not be the best 
hardware to use for precise PTP implementation (20-30 nsec PPS sync).  Can I 
please get some recommendations for a reference board I can purchase that would 
run linuxptp and produce desired results?  It should have 2 Ethernet ports 
(with at least one of them supporting HW PTP), I2C, SPI, SD card and USB.  I 
don't need WiFi.  I would really appreciate any recommendations.

Thank you,
Irene.

----------------------------------------------------------------------

Date: Wed, 19 Aug 2020 10:41:36 +0200
From: Hannes Mayr <hannes.m...@microgate.it>
To: linuxptp-users@lists.sourceforge.net
Subject: Re: [Linuxptp-users] Can ptp4l be used without phc2sys?
Message-ID: <55baa75d-980e-5082-0ed2-6ec594d78...@microgate.it>
Content-Type: text/plain; charset=utf-8; format=flowed


On 18/08/2020 23:47, Jacob Keller wrote:
>
> On 8/18/2020 12:40 PM, Irene Kravets wrote:
>> I am using vendor kernel and a vendor-specific PTP driver
(drivers/net/Ethernet/freescale/fec_ptp.c).  I see this driver in the mainline 
kernel as well.  What enables PPS output signal is the PTP_ENABLE_PPS ioctl 
sent from linuxptp stack (in phc2sys.c).
> It's possible the driver assumes "PTP_ENABLE_PPS" is for enabling the 
> PPS output signal. I know I've had plenty of discussion with 
> colleagues trying to explain the difference between PTP_ENABLE_PPS and 
> PTP_PEROUT_REQUEST... So I would imagine other vendors might also get 
> this wrong sometimes.
>
> Enabling the input and output pins should be done through the 
> PTP_PEROUT_REQUEST and PTP_PIN_SETFUNC ioctls.

That's not true for the fec_ptp driver. Looking to the driver code when the 
PTP_ENABLE_PPS ioctl is called the call stack is as follows:

ptp_chardev.c:ptp_ioctl() -> issues a PTP_CLK_REQ_PPS request to the underlying 
PTP driver (fec_ptp in this case)
fec_ptp.c:fec_ptp_enable() -> Checks for PTP_CLK_REQ_PPS
fec_ptp.c:fec_ptp_enable_pps() -> Sets up the output compare

PTP_PEROUT_REQUEST is not supported by the fec driver.

The IMX6 provides 4 output channels for IEEE1588 on different pads
(ENET_1588_EVENTx_OUT) which can be used to output the PPS. But it looks like 
the fec driver is only using channel 0 hard-coded as output.
The timer register is double-buffered, while the timer is running the next 
compare value can be written and it needs to the updated constantly before 
overflowing. What seems odd to me is that the driver is reading back the PTP 
timer to calculate the first compare match value. If the driver code gets 
interrupted by interrupt or other kernel threads in that instant the compare 
match (and so the PPS) will have a constant offset. Additionally, as Richard 
already pointed out, if there is applied a frequency adjustment on the PTP 
timer at the same time this doesn't look to work well. IMHO to implement the 
PPS setup correctly the timer would have to be stopped first.

Regards,
Hannes





_______________________________________________
Linuxptp-users mailing list
Linuxptp-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-users



_______________________________________________
Linuxptp-users mailing list
Linuxptp-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-users

Reply via email to