串口回显问题分析及解决
来源:互联网 发布:荧光手写软件下载 编辑:程序博客网 时间:2024/04/29 19:02
问题:
在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注意到红色的部分发现串口在某个地方被打开了,且肯定是在应用层被打开,并且在调用脚本fw.sh之前。
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
解决办法:
在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注意到红色的部分发现串口在某个地方被打开了,且肯定是在应用层被打开,并且在调用脚本fw.sh之前。
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
解决办法:
- 串口回显问题分析及解决
- 分析及解决SQLServer死锁问题 (SQL2005)
- 分析及解决SQLServer的死锁问题
- 分析及解决SQLServer死锁问题
- 中文乱码问题分析及解决
- 分析及解决SQLServer死锁问题
- AsyncTask超时问题分析及解决
- tomcat 宕机问题分析及解决
- Android程序OOM问题分析及解决
- 异步串口 I/O操作 中遇到的一个问题及解决
- Java 编程技术中汉字问题的分析及解决
- Java 编程技术中汉字问题的分析及解决
- Java 编程技术中汉字问题的分析及解决
- Java 编程技术中汉字问题的分析及解决
- Java 编程技术中汉字问题的分析及解决
- Java 编程技术中汉字问题的分析及解决
- Java 编程技术中汉字问题的分析及解决
- Java 编程技术中汉字问题的分析及解决
- [转]Comet:基于 HTTP 长连接的“服务器推”技术
- 数据库设计中的14个技巧
- 上班了
- PDF你会用吗
- xml web service 中的异步调用
- 串口回显问题分析及解决
- 对话AJAX框架双杰
- 如何组建理想SOA团队(转)
- 给孩子建个小账本---转载
- error C2065: 'CComVariant' : undeclared identifier
- 印刷服务交易网站靠什么吸引风投?
- ajax 与 servlet
- oracle分区表学习及应用
- 视频采集编程