vxworks网卡加载时间缩短

时间:2023-01-20 08:55:14
 

做vxWorks的兄弟们大多有这样的经历:网卡加载对系统启动速度有很大的影响,而且插不插网线往往启动时间的差别很大。下面给出缩短网卡加载时间的几种工程化方法,供大家参考,并希望有更好方法的大虾们提供更多的方法。

其一:禁止物理接口的自动协商,强制PHY参数。因为网卡加载中有很大一部分时间是用于PHY连接的速度、半/全双工探测的。插网线和不插网线的时间差,可以大约认为就是这一部分,耗时最长。
优点:效果明显;WRS支持网站上提供了这种方法。
缺点:必须针对每一个网卡的驱动来进行不同的修改。必须明确清楚与本网卡连接的设备的速率。
以82559(fei557)为例,强制100M,全双工可以在sysFei82557End.c里面修改:
pBoard->phySpeed = PHY_100MBS;
pBoard->phyDpx   = PHY_FULL_DPX;


其二:延迟加载。把必要加载的网卡先加载,把不必要一上电就使用的网卡滞后加载,在configNet.h的End table中,除去不必要的网卡接口,在应用程序启动之后,再按照网卡组件的加载规则通过程序加载。具体可以参考工程生成的prjConfig.c和comps里面的有关end加载的文件。
缺点:需要修改组件配置的源文件(comps里面)。
优点:对单网卡在系统中不做调试以外的使用,或不是要求一启动就连接成功的系统,或者是多网卡系统,可以加快启动整体速度。

其三:分线程加载,因为网卡加载的过程本来是在root任务里面进行的,加载网卡的时候,多任务环境已经建立,可以把网卡加载的函数endLoad,start等创建一个任务单独运行。这样并不影响socket等函数的调用。
缺点:需要自己创建组件,系统启动之初网卡不可用。
优点:不用改厂商原来的文件(comps目录下的),特别对于vxWorks6很适用。

以上三种方法,各有利弊,都没有考虑从根本上解决网卡加载时间,只是从改善实际使用体验的角度去考虑问题。各位如果有更好的方法,希望共享啊