uClinux console设置

来源:互联网 发布:java数组泛型转换 编辑:程序博客网 时间:2024/05/14 04:54

         最近有个项目使用nuc745和maxq1050两个cpu,1050未留出串口,而是通过745的串口转发实现程序的download。上位机软件通过746的串口0,下载1050的app程序,而串口0又默认作为console。所以系统启动后/dev/ttyS0将不能作为console,解决办法考虑为关闭console或者改串口2作为console。

        首先想到的是改bootloader,但没想到uClinux bootloader没有像u-boot一样有个cmdline参数传递给kernel指定console,这个参数可以在u-boot启动后随意设置改变。只好从bootloader的代码下手,bootloader是使用ads1.2编译,折腾好久才编译好了,想通过串口更新boot-loader也遇到了不能解决的问题。没办法进行下去了。

        只好上百度 谷歌 ,发现其实cmdline可以在kernel中设置。


         如何将console口由/dev/ttyS0改为/dev/null
   
  缺省状态下,uClinux是以串口1即/dev/ttyS0为console口的,这样用户就无法再使用串口1用于串口通信。这里介绍一个方法,使用户可以象使用串口2一样使用串口1,原理是将uClinux的缺省console由串口1即/dev/ttyS0改为/dev/null,具体做法如下:
修改文件/homeu/Clinux-coldfire/linux/arch/m68knommu/kernel/setup.c,将如下这句
char console_default[] = "CONSOLE=/dev/ttyS0";
改为
char console_default[] = "CONSOLE=/dev/null";
再重新编译内核即可。


我没有在我的代码中发现console_default这个变量,但是有

       #ifndef CONFIG_CMDLINE
       #define CONFIG_CMDLINE "root=/dev/rom0 rw " //mcli
       #endif

       于是我尝试改为

        #ifndef CONFIG_CMDLINE
       #define CONFIG_CMDLINE "root=/dev/rom0 rw console=/dev/null" //mcli
       #endif

      实验证明可以关闭调试信息输出

原创粉丝点击