问题:
在uClinux底下使用串口来做DTU,在DTU进程没有起来之前串口有回显
分析:
1.查驱动发现串口的硬件自动回显在初始化的时候并没有被打开
2.每次DTU程序在关闭了之后串口还是有自动回显,且在DTU程序中并没有将串口的参数设置为自动回显的功能
3.将串口的内核打印级别设为7同时将串口的调试信息打开,发现如下日志:
注意到红色的部分发现串口在某个地方被打开了,且肯定是在应用层被打开,并且在调用脚本fw.sh之前。
4.查看rc脚本发现,在调用fw.sh之前调用的程序主要有
解决办法:
在uClinux底下使用串口来做DTU,在DTU进程没有起来之前串口有回显
分析:
1.查驱动发现串口的硬件自动回显在初始化的时候并没有被打开
2.每次DTU程序在关闭了之后串口还是有自动回显,且在DTU程序中并没有将串口的参数设置为自动回显的功能
3.将串口的内核打印级别设为7同时将串口的调试信息打开,发现如下日志:
....... Freeing unused kernel memory: 28k freed (0x1f6000 - 0x1fc000) mcfrs_open ttyS0, count = 0 starting up ttyS0 (irq 73)... mcfrs_open ttyS0 successful... BINFMT_FLAT: Loading file: /etc/config/fw.sh mcfrs_open ttyS0, count = 1 mcfrs_open ttyS0 successful... mcfrs_close ttyS0, count = 2 mcfrs_open ttyS0, count = 1 mcfrs_open ttyS0 successful... mcfrs_close ttyS0, count = 2 mcfrs_open ttyS0, count = 1 mcfrs_open ttyS0 successful... mcfrs_close ttyS0, count = 2 mcfrs_open ttyS0, count = 1 mcfrs_open ttyS0 successful... mcfrs_close ttyS0, count = 2 mcfrs_open ttyS0, count = 1 mcfrs_open ttyS0 successful... mcfrs_close ttyS0, count = 2 mcfrs_open ttyS0, count = 1 mcfrs_open ttyS0 successful... mcfrs_close ttyS0, count = 2 mcfrs_open ttyS0, count = 1 mcfrs_open ttyS0 successful... mcfrs_close ttyS0, count = 2 mcfrs_open ttyS0, count = 1 mcfrs_open ttyS0 successful... mcfrs_close ttyS0, count = 2 |
4.查看rc脚本发现,在调用fw.sh之前调用的程序主要有
klogd syslogd initsy # ps PID TTY Uid Size State Command 1 adm 0 S init 2 adm 0 S [keventd] 3 adm 0 R [ksoftirqd_CPU0] 4 adm 0 R [kswapd] 5 adm 0 S [bdflush] 6 adm 0 S [kupdated] 17 adm 0 S klogd 37 adm 0 S syslogd 70 adm 0 S /bin/syslogd -n 71 adm 0 S /bin/inetd 72 adm 0 S /bin/boa -c /etc/httpd 73 adm 0 S /bin/telnetd 74 ttyp0 adm 0 S console 192.168.2.73 84 ttyp0 adm 0 S sh -c sh 85 ttyp0 adm 0 S sh 88 ttyp0 adm 0 R ps |
解决办法: