串口为啥自动打印数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了串口为啥自动打印数据相关的知识,希望对你有一定的参考价值。
参考技术A 、去掉printk打印在linux内核中的/kernel目录下printk.c文件中有一个函数:
static void __call_console_drivers(unsigned long start, unsigned long end)
struct console *con;
for (con = console_drivers; con; con = 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),程序经常出现错误,这个还需要继续研究。
linux内核打印数据到串口控制台,printk数据不打印问题
linux内核打印数据到串口控制台问题
原文来源:http://i.cnblogs.com/EditPosts.aspx?opt=1
1、查看当前控制台的打印级别
cat /proc/sys/kernel/printk
4 4 1 7
其中第一个“4”表示内核打印函数printk的打印级别,只有级别比他高的信息才能在控制台上打印出来,既 0-3级别的信息
2、修改打印
echo "新的打印级别 4 1 7" >/proc/sys/kernel/printk
3、不够打印级别的信息会被写到日志中可通过dmesg 命令来查看
4、printk的打印级别
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
5、printk函数的使用
printk(打印级别"要打印的信息")这里需要注意打印级别和需要打印的数据中中间没有逗号
打印级别 既上面定义的几个宏
以上是关于串口为啥自动打印数据的主要内容,如果未能解决你的问题,请参考以下文章