三、串行端口程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、串行端口程序设计
1、实验目的
了解在Linux 环境下串行程序设计的基本方法;掌握终端的主要属性及设置方法;熟悉终端IO 函数的使用;完成串口的收发处理。
2、实验内容
读懂程序源代码,学习终端IO 函数tcgetattr(), tcsetattr(),tcflush()的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。
3、预备知识
有 C 语言基础;掌握 Makefile 的编写和使用;掌握 Linux 下的程序编译与交叉编译过程
4、实验设备及工具
硬件:UP-TECHPXA270-S 嵌入式开发板、PC 机Pentumn500 以上, 硬盘10G 以上。
软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM + ARM-LINUX 开发环境
5、实验步骤
(1)、将E盘下的03_tty复制到D:\PXA270\Share下;将虚拟机的共享打开;
(2)、主机A的虚拟机添加串口,主机A的COM1与实验箱ttyS1相连,实验箱ttyS0与另一台PC机B相连;
(3)、将每台虚拟机linux的/up-techpxa270/exp/basic/03_tty删除,将两台主机的D:\PXA270\Share\03_tty复制到虚拟机linux下的/up-techpxa270/exp/basic下;(4)、进入/up-techpxa270/exp/basic/03_tty 目录,使用vi 编辑器或其他编辑器阅读理解serial_rcv和serial_send的源代码。
(5)、分别编译serial_rcv和serial_send下的源文件生成可执行文件。
(6)、自主选择作为发送端或接收端,并修改相应的代码。
(7)、挂载PC机B的/up-techpxa270/exp到开发板的/mnt/nfs。
(8)、在开发板和PC机Alinux下运行可执行程序,一个发送数据,一个接收数据。
(9)、修改程序,使发送端发送一个特定字符给接收端,且发送端回显一个字符或一句话。
6、实验报告要求
(1)、写清每步实验步骤的具体操作内容。
答:①打开E盘找到03_tty文件复制到D:\PXA270\Share后解压到当前目录,打开虚拟机的文件共享功能,把共享目录设为D:\PXA270\Share(两台计算机进行都要进行以上设置)。
②主机A的虚拟机添加串口,A的com1与试验箱的ttys1相连,实验箱ttyS0与另一
台PC机B相连。
③将每台虚拟机linux的/up-techpxa270/exp/basic/03_tty删除,将两台主机的
D:\PXA270\Share\03_tty复制到虚拟机linux下的/up-techpxa270/exp/basic下。
④进入/up-techpxa270/exp/basic/03_tty 目录,使用vi 编辑器或其他编辑器阅读理
解serial_rcv和serial_send的源代码。
⑤分别编译serial_rcv和serial_send下的源文件生成可执行文件。
⑥选择B作为发送方,A作为接收方。
⑦挂载PC的/up-techpxa270/exp到开发板的/mnt/nfs。
⑧在开发板和PC机上运行编译的程序,一个发送,一个接收。
(2)、232 串行通讯的数据格式是什么?
答:232串行通讯的数据格式主要包含起始位、数据位、奇偶位、和停止位,如下图
图1 串行通讯数据格式
(3)、串行通讯最少需要几根线,分别如何连接?
答:串行通讯至少需要2根线,即TxD和RxD(但最好还需要地线GND);连接方式如下图:
图2 串行通讯基本连接图(地线可以不要)
(4)、分析Makefile文件。
答:serial_rcv和serial_send中都有对应程序的Makefile文件,他集成了Linux 编译等的相关命令集,只要通过make命令就可以自动进行编译成期望的程序。
由于Makefile文件在前面的实验有过分析,并且里面条目较多,这里不做详细分析赘述。
(5)、简述调试情况。
答:两台计算机通过编译后,发送方运行serial_rcv中的程序,接收方运行serial_send中编译好的程序;通过调试,发送方发送数据,接收方可以正常接收数据,表示串行通讯成功。