2020年的12月初,我写了一篇《基于STM32构建EtherCAT主站(SOEM方案)1》博客,同时也上传了基于原子stm32f767开发板的源码(soem1.4.0版本,采用HAL库,控制伺服)。有兴趣的可以去我的博客目录找找。后续我会把整理好的源码上传到GitHub,如果发现了bug,或者我有讲错的地方,可以在评论区留言。欢迎指正。
之前打算把移植过程都写到博客上的,后来由于有其它事要忙,就没继续写了。期间也有一些网友私信我,为什么不把博客写完。
好吧,在2022年元旦前后,我将把后续的几篇移植博客写完。未来,如果有时间的话,我还会分享一些《igh+xenomai》demo(一些有意思的小项目)。
我的梦想是写一个EtherCAT五轴数控系统(实现基础功能即可,在zynq、imx6ull、stm32mp157中选用一款作为数控系统的芯片跑linux或者其它实时系统,基于QT开发上位机),研究EtherCAT主站只是朝梦想方向前进的一小步,希望能在30岁之前把系统干出来。
哈哈,言归正传,继续来讲soem。王惠娇同志的硕士论文《基于嵌入式平台的EtherCAT主站实现研究》,把soem移植讲的很清楚了,有兴趣的可以读一下。如果你有移植lwip的经验,那么移植soem还是挺容易的。我个人移植过soem1.3.1和soem1.4.0,这两个版本基本没啥变动,因此移植过程也是一样的。soem项目中主要包含osal、oshw、soem三个文件夹。soem库采用了分层设计的思想,把操作系统层和硬件层抽象了出来,因此移植过程才会比较简单,只需修改osal和oshw文件夹中的文件即可。