继续前面的<将Ethercat主站IGH移植到Linux应用层>,将IGH主站移植到vxworks
平台说明:
测试电脑 cpu i3-2100, 4g ddr3, 128G固态硬盘
vxworks6.9.0(来源你懂的,不建议升级)
从站xm4800官方开发板,程序是FreeECAT-master
执行命令是igh_main
系统启动操作:
固态硬盘划分2g空间,格式是fat32
用Win32DiskImager.exe写win98j.IMG到 一个启动U盘
U盘启动,按照网上文章格式化2g空间
将bootrom.sys, vxload.com, vxsys.com放入2g空间
按照网上文章将bootrom写入固态硬盘,
需要的一些文件如下
https://download.csdn.net/download/huoxian00/12540112
网上文章
https://wenku.baidu.com/view/fdf08ba402d276a200292eed.html
注意我的bootrom是FTP启动, 建议FTP服务器用Serv-U,网卡支持intel82573
修改说明:
1.vxworks采用C98的gcc标准,所以不能采用//注释方式,必须是/**/的方式
2.include目录下的头文件需要放到WindRiver\vxworks-6.9\target\h
3.要在Kernel Configuration支持pthread库
4.以太网帧的发送要用mux层
5.定时器并不准确,要用tick来统计时间,x86平台可以手动将tick设置成1000,1ms一个tick。
6.高精度的实时线程必须用辅助时钟中断触发
unsigned int auxClkTestCnt=0;
void timerTestIsr(void)
{
auxClkTestCnt++;
}
auxClkTestCnt=0;
vxbAuxClkConnect(timerTestIsr,0);
vxbAuxClkDisable();
vxbAuxClkRateSet(1000);
vxbAuxClkEnable();
taskDelay(sysClkRateGet());
vxbAuxClkDisable();
printf("Tick count is 1000,auxClkTestCnt=%d\n",auxClkTestCnt);
结论:
未完待续,实时线程的抖动有些大,还需要进行优化,但是ethercat功能已经可以正常运行了