使用背景
在前段时间我购买了一台工控机做软路由,J4125处理器,当时也是为了尝鲜,买了4口I225的2.5G网卡的版本。也正是这个2.5G网卡折腾的够呛。
安装VMware esxi
首先很多系统没有2.5G网卡驱动,包括ESXI需要自己封装驱动才可以安装,驱动下载地址:Community Networking Driver for ESXi,封装驱动的帖子很多这里不赘述了。
也有作者发布整合好的驱动镜像,可以到该作者的网站看一下,更新挺快的https://sysin.org/blog/vmware/
停电后不能启动!
在esxi上装好Openwrt,用起来一切正常。直到有一次家里停了电,esxi没有启动起来,接上显示器提示No compatible network adapter found登录查看网卡确实找不到任何网卡
问题所在
后来经过了不断的重启发现,长按电源键强行关机,再手动机就能识别网卡。
这个工控机是有硬件的上电自启,上电强行自启,在卖家那找了资料,可以改变跳线的位置关闭上电自启
经过测试 关闭硬件的上电自启,接上电源等3-5秒再按电源键开机基本都能识别到驱动,个人分析是网卡上电还没启动完成 就开启系统造成无法识别,不知该算主板的锅还是2.5G的锅。
后来测试在bios上电自启,和在启动界面等一段时间都不能识别网卡,上电后等几秒手动按才行。
最终方案
作为软路由塞在弱电箱,掉电还得手动开启不太现实。找了stc一个单片机,用开发小助手生成了2个延时函数,因为usb是上电后就有电压输出,所以接到usb的正负极给单片机供电,上电10秒后拉低P3^0引脚电平,实现开机效果
单片机的程序写的很随意需要的可以拿去用
#include <stc15.h>
#include <intrins.h>
//时钟频率6M
sbit pwrsw=P3^0;
void delay10s(void) //误差 0us
{
unsigned char a,b,c;
for(c=165;c>0;c--)
for(b=100;b>0;b--)
for(a=150;a>0;a--);
_nop_(); //if Keil,require use intrins.h
_nop_(); //if Keil,require use intrins.h
}
void delay1s(void) //误差 0us
{
unsigned char a,b,c;
for(c=23;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
}
void main()
{
pwrsw=1;
delay10s();
pwrsw=0;
delay1s();
pwrsw=1;
while(1)
{
pwrsw=1;
}
}
版权声明:本文为wo325866145原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。