用于soc平台上进行gptp对时的pps秒脉冲信号输出方法及系统技术方案

技术编号:26226259 阅读:31 留言:0更新日期:2020-11-04 11:04
一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法,包括:一、获取当前时间的纳秒值;二、调用基于ptp时钟的睡眠函数进行睡眠,睡眠结束后,执行步骤三;三、获取当前时间的纳秒值;四、若所述期望纳秒值‑所述纳秒值=电平建立时间±x,则向soc芯片的GPIO端口输出电平,返回步骤一,当所述期望纳秒值为500000000ns时,电平为低电平,当所述期望纳秒值为1000000000ns时,电平为高电平,所述电平建立时间为所述soc芯片的出厂标定参数,否则,返回步骤三。本发明专利技术提供了一种以软件程序的方式实现且精度能到达要求的pps秒脉冲信号的输出方法,使信号的输出不依赖于硬件,适用面广。

【技术实现步骤摘要】
用于soc平台上进行gptp对时的pps秒脉冲信号输出方法及系统
本专利技术涉及gptp
,尤其涉及一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法及系统。
技术介绍
随着avb协议栈在汽车里的大量使用,gptp协议(基于以太网的时间同步协议)也越来越重要。gptp协议是一个很重要的基础协议,它为在车载网络里的所有ECU(电子控制单元)使用统一的时间基准提供了可能和保障。在车载网络里一般会有一个ECU作为时钟的master,其余的ECU作为slave与master同步。由于slave的同步精度决定了avb的媒体同步质量,如何测量slave的同步精度和抖动就显得很重要。业内通用的作法是在master和slave侧各自输出基于gptp协议的秒脉冲信号,也称为PPS信号,这个pps信号的上升沿对应了ptp时间的整秒时刻,将两个pps信号在示波器上同时观察就能测量出对时的精度和抖动的范围。目前,在soc平台上ptp时钟的秒脉冲信号输出通常由soc芯片内部的逻辑电路来实现的,依赖相关的硬件实现,优点就是pps信号的精度高,缺点是经常在客户的硬件平台上不支持pps信号的输出(有的soc芯片内部没有对应的pps信号输出电路)。故需要找到一种用软件程序实现且精度能到达要求的pps信号的输出方法。
技术实现思路
基于此,针对上述技术问题,提供一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法及系统。为解决上述技术问题,本专利技术采用如下技术方案:>一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法,包括:一、获取当前ptp时间的纳秒值;二、调用基于ptp时钟的睡眠函数进行睡眠,睡眠结束后,执行步骤三,所述睡眠函数的睡眠时间通过如下步骤确定:计算时间差值:时间差值=期望纳秒值-当前ptp时间的纳秒值,当0≦当前ptp时间的纳秒值<500000000ns或者当前ptp时间的纳秒值=1000000000ns时,所述期望纳秒值为500000000ns,当500000000ns≦当前ptp时间的纳秒值<1000000000ns时,所述期望纳秒值为1000000000ns;若所述时间差值大于睡眠函数的最大延时,则设置所述睡眠函数的睡眠时间为所述时间差值-所述最大延时-建立电平时间,否则,设置所述睡眠函数的睡眠时间为0;三、获取当前ptp时间的纳秒值;四、若所述期望纳秒值-当前ptp时间的纳秒值=电平建立时间±20ns,则向soc芯片的GPIO端口输出电平,返回步骤一,当所述期望纳秒值为500000000ns时,电平为低电平,当所述期望纳秒值为1000000000ns时,电平为高电平,所述电平建立时间为所述soc芯片的出厂标定参数,否则,返回步骤三。所述睡眠函数的最大延时通过以下步骤预先计算得到:设置睡眠时间,调用所述睡眠函数进行多次睡眠;计算每次睡眠实际时间与设置的睡眠时间的差值,取最大的差值作为最大延时。通过ptp时钟驱动程序获取当前ptp时间的纳秒值。在步骤一之前还包括设置GPIO端口为输出以及其初始电平。所述睡眠函数为clock_nanosleep函数。本方案还涉及一种用于soc平台上进行gptp对时的pps秒脉冲信号输出系统,包括存储模块,所述存储模块包括由处理器加载并执行的多条指令:一、获取当前ptp时间的纳秒值;二、调用基于ptp时钟的睡眠函数进行睡眠,睡眠结束后,执行步骤三,所述睡眠函数的睡眠时间通过如下步骤确定:计算时间差值:时间差值=期望纳秒值-当前ptp时间的纳秒值,当0≦当前ptp时间的纳秒值<500000000ns或者当前ptp时间的纳秒值=1000000000ns时,所述期望纳秒值为500000000ns,当500000000ns≦当前ptp时间的纳秒值<1000000000ns时,所述期望纳秒值为1000000000ns;若所述时间差值大于睡眠函数的最大延时,则设置所述睡眠函数的睡眠时间为所述时间差值-所述最大延时-建立电平时间,否则,设置所述睡眠函数的睡眠时间为0;三、获取当前ptp时间的纳秒值;四、若所述期望纳秒值-当前ptp时间的纳秒值=电平建立时间±20ns,则向soc芯片的GPIO端口输出电平,返回步骤一,当所述期望纳秒值为500000000ns时,电平为低电平,当所述期望纳秒值为1000000000ns时,电平为高电平,所述电平建立时间为所述soc芯片的出厂标定参数,否则,返回步骤三。所述睡眠函数的最大延时通过以下步骤预先计算得到:设置睡眠时间,调用所述睡眠函数进行多次睡眠;计算每次睡眠实际时间与设置的睡眠时间的差值,取最大的差值作为最大延时。通过ptp时钟驱动程序获取当前ptp时间的纳秒值。在步骤一之前还包括设置GPIO端口为输出以及其初始电平。所述睡眠函数为clock_nanosleep函数。本专利技术提供了一种以软件程序的方式实现且精度能到达要求的pps秒脉冲信号的输出方法,使信号的输出不依赖于硬件,适用面广,便于测试gptp对时的精度和抖动。附图说明下面结合附图和具体实施方式对本专利技术进行详细说明:图1为本专利技术的流程图。具体实施方式如图1所示,一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法,包括:S101、获取当前ptp时间的纳秒值cur_ns。S102、调用基于ptp时钟的睡眠函数进行睡眠,睡眠结束后,执行步骤S103。其中,ptp时钟是硬件实现的,它是对时后的时间,以(秒,纳秒)的形式来表示。由于pps秒脉冲信号的上升沿对应了ptp时钟的整秒时刻,下降沿对应了ptp时钟的整半秒时刻,故为了通过本专利技术软件程序输出pps秒脉冲信号,需要在整秒时刻给soc芯片的GPIO端口高电平,在整半秒时刻给soc芯片的GPIO端口低电平。当当前时间还未到达整秒时刻或者整半秒时刻时,需要调用睡眠函数先对上述软件程序进行睡眠,避免占用CPU资源,并且由于睡眠函数的执行会存在延时(执行时,操作系统调度和处理都需要消耗时间),即实际睡眠时间会略大于设置的睡眠时间,故睡眠时间的设置还需要考虑到延时问题。具体过程如下:1、计算时间差值time_interval:time_interval=期望纳秒值ts_ns_next-纳秒值cur_ns,当0≦cur_ns<500000000ns或者cur_ns=1000000000ns时,ts_ns_next为500000000ns,当500000000ns≦cur_ns<1000000000ns时,ts_ns_next为1000000000ns。0<cur_ns<500000000ns代表当前时间位于前半秒,需要等到下一个整半秒时刻给GPIO端口低电平,而cur本文档来自技高网...

【技术保护点】
1.一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法,其特征在于,包括:/n一、获取当前ptp时间的纳秒值;/n二、调用基于ptp时钟的睡眠函数进行睡眠,睡眠结束后,执行步骤三,所述睡眠函数的睡眠时间通过如下步骤确定:/n计算时间差值:时间差值=期望纳秒值-当前ptp时间的纳秒值,当0≦当前ptp时间的纳秒值<500000000ns或者当前ptp时间的纳秒值=1000000000ns时,所述期望纳秒值为500000000ns,当500000000ns≦当前ptp时间的纳秒值<1000000000ns时,所述期望纳秒值为1000000000ns;/n若所述时间差值大于睡眠函数的最大延时,则设置所述睡眠函数的睡眠时间为所述时间差值-所述最大延时-建立电平时间,否则,设置所述睡眠函数的睡眠时间为0;/n三、获取当前ptp时间的纳秒值;/n四、若所述期望纳秒值-当前ptp时间的纳秒值=电平建立时间±20ns,则向soc芯片的GPIO端口输出电平,返回步骤一,当所述期望纳秒值为500000000ns时,电平为低电平,当所述期望纳秒值为1000000000ns时,电平为高电平,所述电平建立时间为所述soc芯片的出厂标定参数,否则,返回步骤三。/n...

【技术特征摘要】
1.一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法,其特征在于,包括:
一、获取当前ptp时间的纳秒值;
二、调用基于ptp时钟的睡眠函数进行睡眠,睡眠结束后,执行步骤三,所述睡眠函数的睡眠时间通过如下步骤确定:
计算时间差值:时间差值=期望纳秒值-当前ptp时间的纳秒值,当0≦当前ptp时间的纳秒值<500000000ns或者当前ptp时间的纳秒值=1000000000ns时,所述期望纳秒值为500000000ns,当500000000ns≦当前ptp时间的纳秒值<1000000000ns时,所述期望纳秒值为1000000000ns;
若所述时间差值大于睡眠函数的最大延时,则设置所述睡眠函数的睡眠时间为所述时间差值-所述最大延时-建立电平时间,否则,设置所述睡眠函数的睡眠时间为0;
三、获取当前ptp时间的纳秒值;
四、若所述期望纳秒值-当前ptp时间的纳秒值=电平建立时间±20ns,则向soc芯片的GPIO端口输出电平,返回步骤一,当所述期望纳秒值为500000000ns时,电平为低电平,当所述期望纳秒值为1000000000ns时,电平为高电平,所述电平建立时间为所述soc芯片的出厂标定参数,否则,返回步骤三。


2.根据权利要求1所述的一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法,其特征在于,所述睡眠函数的最大延时通过以下步骤预先计算得到:
设置睡眠时间,调用所述睡眠函数进行多次睡眠;
计算每次睡眠实际时间与设置的睡眠时间的差值,取最大的差值作为最大延时。


3.根据权利要求1或2所述的一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法,其特征在于,通过ptp时钟驱动程序获取当前ptp时间的纳秒值。


4.根据权利要求3所述的一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法,其特征在于,在步骤一之前还包括设置GPIO端口为输出以及其初始电平。


5.根据权利要求4所述的一种用于soc平台上进行gptp对时的pps秒脉冲信号输出方法,其特征在于,所述睡眠函数为clock_nanosleep函数。


6.一种用于so...

【专利技术属性】
技术研发人员:文小军穆国强
申请(专利权)人:爱瑟福信息科技上海有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1