串口为什么自动打印数据

串口为什么自动打印数据,第1张

、去掉printk打印

在linux内核中的/kernel目录下printk.c文件轿顷中有一个函数:

static void __call_console_drivers(unsigned long start, unsigned long end)

{

struct console *con

for (con = console_driversconcon = con->next) {

if ((con->flags &CON_ENABLED) &&con->write)

con->write(con, &LOG_BUF(start), end - start)

}

}

去掉如下两行重新编译内核即可:

if ((con->flags &CON_ENABLED) &&con->write)

con->write(con, &LOG_BUF(start), end - start)

2、标闭胡陆准输出、标准错误输出重定向

int main() {

int pid = 0

// fork a worker process

if (pid = fork()) {

// wait for completion of the child process

int status

waitpid(pid, &status, 0)

}

else {

// open /dev/null

int fd_null = open("/dev/null",O_RDWR)

if(dup2(fd_null, 1) == -1)

return 1

if(dup2(fd_null, 2) == -1)

return 1

XX_run()

}

return 0

}

我将标准输出和错误输出重定向到/dev/null中

如果我没有将输出重定向,只是关闭输出,close(1) close(2),程序经常出做迹现错误,这个还需要继续研究。

虚拟机中串口连接可以采用两种方法。一种是指定虚拟机的串口连接到实际的COM上,例如开发机连接到COM1,目标机连接到COM2,然后把两个串口通过串口线相连接。另一闹慎种更为简便的方法是:在较高一些版本的VMware中都支持把串口映射到命名管道,把两个虚拟机的串口映射到同一个命名管道。例如,在两个虚拟机中都选定同一个命名管道\\.\pipe\com_1,指定target机的COM口为server端,并选择"Theotherendisavirtualmachine"属性;指定development机的COM口端为client端,同样指定COM口的"Theotherendisavirtualmachine"属性。对于IOmode属性,在target上选中"YieldCPUonpoll"复选择框,development机不选。串口是开发者经常要使用到的,我们有些时候需要使用windows开发,然而window装在了虚拟机中,我们怎么样肢型在虚拟机中使用串口呢?1、在virtualbox中选择启用串口,端口模式选择Hostdevice.由于现有两个系统但是只有一个物理串口,所以虚拟机要通过主机的串口文件间接获取数据,主机是linux,串口设备为/dev/ttyS02、端口/文件位置一栏填入:/dev/ttyS0,历弯猜启动虚拟机。3、如果无法启动虚拟机,很有可能是没有对ttyS0设备的读写权限,(可以ls-l/dev/ttyS0查看以下权限)于是我们要修改ttyS0的权限,在终端中输入:sudochmod777/dev/ttyS0这样就将ttyS0的所有权限都打开了。启动虚拟机,这时候就可以在虚拟机中(winXP)使用串口了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12260840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存