VxWorks在运行时更改控制台端口

时间:2018-07-10 16:02:14

标签: vxworks rtos

在运行VxWorks 7的iMX6上,是否有任何方法可以更改其控制台端口?我知道如何通过内核配置更改它,但这是一个编译时间设置。我可以在运行时更改它吗?

1 个答案:

答案 0 :(得分:1)

ioLib documentation说明了如何在运行时分别使用ioGlobalStdSet()ioTaskStdSet()在全局或每个任务的基础上重定向stdio文件描述符。您可以分别设置stdin,stout和stderr,因此您需要设置所有三个来重定向 all 控制台I / O。

例如:

#include <ioLib.h>

int redirectStdio( const char* devname )
{
    int new_io_fd = open( devname, O_RDWR, 0 ) ;

    if( new_io_fd >= 0 )
    {
        ioGlobalStdSet( STD_IN, new_io_fd ) ;
        ioGlobalStdSet( STD_OUT, new_io_fd ) ;
        ioGlobalStdSet( STD_ERR, new_io_fd ) ;
    }
    return new_io_fd ;
}

那么您可能会有:

if( redirectStdio( "/tyCo/2" ) < 0 )
{
    printf( "Redirect failed - still here!\n" ) ;
}
else
{
    printf( "stdio now directs here\n" ) ;
}

还有ioGlobalStdGet()ioTaskStdGet()函数,因此可以保留原始设置并在必要时进行恢复。例如