RT—thread 上的1588协议在stm32上实现代码及说明

为了方便看代码,可以参考官方的RT-thread代码,用比较工具进行比较。下载

RTT的版本:

commitd0d1861d816dea34451a8b4a35b25a639f4c9d78
Merge: e822f876085763
Author: prife
Date:   Sun May 19 08:48:18 2013 -0700
 
    Merge pull request #88 fromgrissiom/fix-sim-serial
 
    simulator: fix serial_write
 
commite822f87b1a62ac5f98eb0b5dd057fcd389802040
Merge: 2ef9d918b4aadb
Author: qiuyiuestc
Date:   Fri May 17 06:39:05 2013 -0700
 
    Merge pull request #90 fromheyuanjie87/ForPullRequest
 
    For pull request
 
commit2ef9d91913b3a544270933e22ff89ad54fd94b91
Merge: c5dd2fe3b91e81
Author: BernardXiong 
Date:   Fri May 17 06:15:15 2013 -0700
 
    Merge pull request #89 fromgrissiom/dfs-misc-fix


 

网络采用RMII,接口看代码,phy用的9161如果采用其他的phy,修改……忘了,参照官方RT-thread

目前只初始化网络、串口,去掉了LED,不涉及其他端口。

 

编译器采用IAR 6.5 ,如果版本较低,自行添加如下内容,如果用 keil 要自行添加ptp协议的代码,还有system.c

 

$PROJ_DIR$\Libraries\STM32F10x_StdPeriph_Driver\inc
$PROJ_DIR$\..\..\include
$PROJ_DIR$\.
$PROJ_DIR$\drivers
$PROJ_DIR$\applications
$PROJ_DIR$\..\..\components\init
$PROJ_DIR$\..\..\components\dfs\include
$PROJ_DIR$\..\..\components\dfs
$PROJ_DIR$\..\..\components\CMSIS\Include
$PROJ_DIR$\..\..\components\net\lwip\src\include
$PROJ_DIR$\..\..\components\net\lwip\src\include\ipv4
$PROJ_DIR$\..\..\components\drivers\include
$PROJ_DIR$\..\..\components\net\lwip\src\arch\include
$PROJ_DIR$\..\..\components\net\lwip\src
$PROJ_DIR$\..\..\libcpu\arm\common
$PROJ_DIR$\..\..\libcpu\arm\cortex-m3
$PROJ_DIR$\..\..\components\finsh
$PROJ_DIR$\..\..\components\net\lwip\src\include\netif
$PROJ_DIR$\..\..\components\net\lwip\apps
$PROJ_DIR$\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
$PROJ_DIR$\..\..\components\freemodbus\modbus\include
$PROJ_DIR$\..\..\components\freemodbus\modbus\port
$PROJ_DIR$\..\..\components\freemodbus\modbus\rtu
$PROJ_DIR$\..\..\components\freemodbus\modbus\tcp
$PROJ_DIR$\..\..\components\utilities\ptpd-2.0.0\src\dep
$PROJ_DIR$\..\..\components\utilities\ptpd-2.0.0\src

defined symbol 
USE_STDPERIPH_DRIVER
STM32F10X_CL
 
link config file 
$PROJ_DIR$\stm32_rom.icf


如果用 keil要自行添加ptp协议的代码,还有system.c

RT—thread 上的1588协议在stm32上实现代码及说明_第1张图片

 

 

当初出现过很奇异的问题,原因是字节不对齐,

#defineRT_ALIGN_SIZE        4

修改为4不知道为何源代码设为8。这地方一定要改,如果不改这里,其他地方的变量需要手工指定对齐。

 

目前代码不稳定,两个sync之间的时间戳之差时大时小,应该是恒定的。

st官方的例程是可行的。点击下载 可以把官方的例程当做masterRT-thread的当做slave,通过bmc算法自动变为masterslave,两个板子通过交换机连接,通信后可以成为master或者slave修改DEFAULT_PRIORITY1的值较小的在 bmc算法中优先级高,为master;大的优先级低,为slave;前提是两个板子的mac地址不要相同!

注意:

1. DEFAULT_CLOCK_CLASS的值应该为 248

2. DEFAULT_PRIORITY1 的值较小的为master



想到的只有这些,不明白的再问吧。

你可能感兴趣的:(学习)