Posted on 2014-08-16 13:23
CrHackOS 阅读(21115)
评论(1) 编辑 收藏 引用 所属分类:
技术随笔
最近在玩新唐的 N32926。这颗芯片最大的优势就是把 DDR 内存和 ARM9 的芯片做在一起了,提供非 BGA 的芯片封装(QFP128)。比起三星之类的硬件可以简单不少,性价比也不错。缺点就是,可能是封装管脚太少的缘故,很多功能都是复用的,导致管脚资源紧张。例如,以太网接口和8位以上的 LCD 屏接口是冲突的。以太网切换到第二端口上又和一个串口冲突。本来芯片上就只有两个串口。这就造成,所有的串口设备必须要挂在同一个串口上,用一个模拟开关芯片去切换。可恶的是,Linux 内核和控制台也会时不时的输出东西。但是又不想彻底关掉它们,到时候还能看看调试信息。所以就去找了一下如何临时关闭控制台输出的方法。
临时关闭控制台输出(打开控制台输出即是把 tty0 重新设置为默认终端输出):
1 int fd;
2
3 fd = open("/dev/tty1", O_RDONLY);
4 if (fd >= 0) {
5 ioctl(fd, TIOCCONS);
6 close(fd);
7 }
临时关闭内核信息输出:echo 0 > /proc/sys/kernel/printk;重新打开内核信息输出:echo 7 > /proc/sys/kernel/printk。
这样,要用串口设备的时候,就先临时关闭,然后开关切换,搞完之后再切回来,最后打开输出。好在使用的串口设备都是被动的,可以临时用一下的,不用一直挂在上面,不然就麻烦了。