How to get IEEE 1588 PPS ouput using YOCTO on i.MX8M?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to get IEEE 1588 PPS ouput using YOCTO on i.MX8M?

2,273 Views
bharatkumarbach
Contributor III

I am working on iMX8M-EVK to generate IEEE 1588 PPS output. It seems like there are two IEEE 1588 event out signals and I needed to use ENET1_1588_EVENT1_OUT as it got routed  to one of the headers on the board. 

I need to make the changes recommended in  https://community.nxp.com/thread/428589

1. Configure IOMUX  for ENET1_1588_EVENT1_OUT

2. Configure IEEE 1588 module to generate ENET1_1588_EVENT1_OUT

I am new to Yocto project and would appreciate any help or guidance in setting up the configuration.

Also

I have included ptpd2 using IMAGE_append (<build_dir>/conf/local.conf file). 

when I run "ptpd2 -A -m -E -I eth0" I can see PTP messages coming out but "echo 1>/sys/class/ptp/ptp0/pps_enable" gives write error  "fec 30be0000.ethernet: no ptp stack is running"

Thanks,

Bharat

0 Kudos
3 Replies

1,870 Views
steven_zhang
Contributor V

i want to hnow which pin is the PPS pin on a imx8qxp processor? the ENET0_REFCLK_125M_25M ALT2? 

is the same way to config the 1PPS for both the imx8m and imx8qxp?

0 Kudos

1,870 Views
eric_m_will
Contributor I

Hi,

I am having a related problem. In our case, we want to use the eth0 1588 1PPS signal to precisely control the start time of an I/O event on the M4 processor (to an accuracy of within a few microseconds) . I am running ptp4l on the A53. Based on the ptp4l logs it is locking to the laptop I am using for a master clock. We enable the 1 PPS signal using:

echo 1 > /sys/class/ptp/ptp0/pps_enable

On the M4 side, I am running a program that enables and receives the 1 PPS signal as an IRQ(121). In the ISR, I read the ENET->ATVR register as well as the 32kHz RTC registers. Both sets of counters are indicating that the 1 PPS interrupt is occurring every 1.024 s, not every 1.000 s. Outside the ISR, I print the values to the debug terminal. I have plotted the time differences for the two counters using Matlab. See the figure below.

Any idea what's going on?

1pps.png

I have a scope I can use to look at the 1 PPS signal. I haven't tried that as I do not know that I can see the difference between 1.000 and 1.024 seconds between pulses, but I do have available to me high-precision GPS-disciplined 1 PPS I could compare to if someone can help me figure out how to direct the 1 PPS signal to a pin on J1003 of the EVK.

Thanks,

Eric

0 Kudos

1,870 Views
gusarambula
NXP TechSupport
NXP TechSupport

Hello Bharat,

My apologies. Are you still working on this? Some of the changes suggested need to be perform in the source code itself. My recommendation would be working on this outside of the Yocto environment and compiling directly with the toolchain (which you can extract from the Yocto BSP) as Yocto is not meant for development but rather for distribution, and it won’t track changes in the source code.

There are a couple of document that tackle the matter of making your customized BSP like for example:

https://community.nxp.com/docs/DOC-100203

You may also find the Yocto Project BSP Developer’s Guide useful as well, for when you want to commit the changes for your application:

https://www.yoctoproject.org/docs/current/bsp-guide/bsp-guide.html

I hope this helps!

Regards,

0 Kudos