您尚未登录。

楼主 #1 2018-06-26 19:28:14

tom
会员
注册时间: 2018-03-14
已发帖子: 128
积分: 127.5

arm linux的串行终端重映射

我的系统有两个串口,
系统启动时用串口1作为控制台终端,串口0作为和其它系统通信使用。 

如何在系统启动后,通过app修改,使串口0作为控制终端?

tty = open("/dev/ttyO0", O_RDONLY | O_WRONLY);
ioctl(tty, TIOCCONS);
close(tty);

我通过ioctl操作后,串口0能输出app的打印信息,但是没有命令提示符。串口0不能完成系统的控制。

离线

#2 2018-06-26 19:55:27

basicdev
会员
注册时间: 2017-10-02
已发帖子: 159
积分: 159

Re: arm linux的串行终端重映射

没想到还可以这么玩

离线

楼主 #3 2018-06-27 11:00:08

tom
会员
注册时间: 2018-03-14
已发帖子: 128
积分: 127.5

Re: arm linux的串行终端重映射

网上搜索了一圈,没有找到想要的答案。

既然串口0能打印app的输出,证明标准输入输出已经切换过来了,估计只要自己在这个基础上实现一个简单的shell就行了。
实在找不到别的办法,也只能尝试这个方法了。不知道谁有好的思路?

离线

#4 2018-06-27 11:05:41

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: arm linux的串行终端重映射

为什么不一开始就用串口0作为linux终端呢?





离线

#5 2018-06-27 11:08:12

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: arm linux的串行终端重映射

http://www.emtronix.com/article/article2013546.html

重定向控制台终端console至tty1:

        int fd;
        printf('Close cnsole\n');
        fd = open('/dev/tty1',O_RDONLY); // 改变console
        ioctl( fd, TIOCCONS );
        close( fd );

        恢复控制台终端console至缺省设置:

        fd = open('/dev/tty0',O_RDONLY); // 恢复console
        ioctl( fd,TIOCCONS );
        close( fd );
        printf('change console back: ttyS0\n');

貌似和你的差别不大。





离线

#6 2018-06-27 11:10:05

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: arm linux的串行终端重映射

这里居然有一个定向到 telnet 终端的

https://blog.csdn.net/jasonzeng/article/details/62042117





离线

#7 2018-06-27 11:11:42

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,348
积分: 9202

Re: arm linux的串行终端重映射

有没有可能你的 /dev/ttyO0 名字错了,
用下面的代码查一下

/* 获取当前tty名称 */
    tty_name = ttyname(STDOUT_FILENO);
    printf("tty_name: %s\n", tty_name);





离线

楼主 #8 2018-06-27 12:28:56

tom
会员
注册时间: 2018-03-14
已发帖子: 128
积分: 127.5

Re: arm linux的串行终端重映射

我已经初步解决了这个问题,没有找到更简单的思路,还是采用上面提到的,自己实现一个简易的shell。

简易的shell,可以参考csdn的这篇帖子。
https://blog.csdn.net/qq_37964547/article/details/79703953

不过,要做到真正实用,要考虑很多方面的问题,比如 字符删除、 快捷键、自动补全、历史命令、甚至环境变量等问题,
如果这样,那就超出本帖要讨论的范畴了。

最近编辑记录 tom (2018-06-27 12:31:31)

离线

#9 2018-06-27 12:45:40

sindy
会员
注册时间: 2017-09-09
已发帖子: 146
积分: 146

Re: arm linux的串行终端重映射

还有这种操作,真是活到老学到老!

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn