前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Component之SIO

Component之SIO

作者头像
Taishan3721
发布2019-07-10 15:29:06
6100
发布2019-07-10 15:29:06
举报
文章被收录于专栏:这里只有VxWorks

组件INCLUDE_SIO,Serial IO,串口IO

包含了它之后,VxWorks就会调用usrSerial.c的usrSerialInit()来加载串口设备

通常BSP里都会把N_UART_CHANNELS定义为2,所以VxWorks启动后,就可以看到两个串口了

如果没有包含组件INCLUDE_PC_CONSOLE,VxWorks还会把第CONSOLE_TTY(0)个串口当作系统的标准IO设备,默认波特率是CONSOLE_BAUD_RATE(9600)。这样的话,printf()的结果就会从串口0输出。不过在X86的设备里,通常还是用pcConsole来做系统的标准IO,printf()的结果也就是从显卡输出了

如果Target没有网卡或者没有网卡驱动,在开发过程中,可以通过串口连接WDB,也就是用串口来进行调试。默认用的是WDB_TTY_CHANNEL(1),因此Target最好至少有两个串口。不过串口的传输速率比网卡慢很多,调试起来是很吃力的

我当前的Target是X86的CPU,VxWorks镜像包含了PC console组件,并使用END连接WDB,因此两个串口都是空闲的。

串口是以字节为单位来传输数据的,接下来看看应用层怎么操作它吧。

用串口线把VxWorks的串口0与Host的串口连接起来,Host端打开一个串口工具,例如我Windows端用的PuTTY,串口的配置一般就是用默认值:波特率9600,数据位8,停止位1,奇偶校验无,流控无

因为VxWorks在初始化串口时,一般用的初值也是这样的

直接在Shell里试试吧

Host的串口工具里就可以收到字符串hello了

还是写段代码吧: 这段代码打开串口,读取串口的默认配置,然后发送一段字符

执行结果为

再跑一个接收的例子

从Host端的串口工具里输入一些字符,以'q'结束

这个例子很简单,只是把接收到的信息,用printf()打印出来。在具体项目里就要用更复杂的操作来代替printf()了

最后看看串口的ioctl()都支持那些操作,例如可以用SIO_BAUD_SET或FIOBAUDRATE来设置波特率

如果想要自己扩展串口的功能,可以在驱动文件的ioctl函数添加分支,编号至少从0x100a开始

这正是:

VX默认俩串口(/tyCo/x),可做系统I与O(no PC Console)。

默认配置最常用(CS8),更多功能见Control(ioctl)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档