• 信息安全系统设计基础实验二


    北京电子科技学院(BESTI)

                 

                 课程:信息安全系统设计基础                  班级: 1352班             

                 姓名:(按贡献大小排名)银雪纯、益西拉姆、马悦

                 学号:(按贡献大小排名)20125221、20135239、20135235

                 成绩:            指导教师:娄嘉鹏            实验日期:2015.11.17

                 实验密级:        预习程度:        实验时间:15:30—18:00

                 仪器组次:        必修/选修:必修            实验序号:二

                 实验名称:   固件设计——串行端口程序设计                                                         

                     实验目的与要求:

                 1、了解在 linux 环境下串行程序设计的基本方法。

                 2、掌握终端的主要属性及设置方法,熟悉终端I /O 函数的使用。

                 3、学习使用多线程来完成串口的收发处理。                                                         

                 实验仪器:

    名称

    型号

    数量

    计算机

     

    1

    嵌入式开发平台

    UP-NETARM2410-CL

    1

    一、实验内容

           读懂程序源代码, 学习终端I/O 函数的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。

    二、实验原理

           异步串行 I /O 方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。

                              图 2.3.1 串行通信字符格式

           图 2.3.1 给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5 位、6 位、7 位或8 位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600 等。

           接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:

      1、奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。

      2、帧格式错:一个字符从起始位到停止位的总位数不对。

      3、溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。

      每一种错误都会给出相应的出错信息,提示用户处理。一般串口调试都使用空的MODEM 连接电缆,其连接方式如图2.3.2 所示。   

              图 2.3.2 实用RS-232C 通讯连线

    三、实验步骤

    1、阅读理解源码

      进入 expasic3_tty 目录,使用vi 编辑器或其他编辑器阅读理解源代码。

    2、编译应用程序

    运行 make 产生term 可执行文件

    [root@zxt root]# cd /arm2410cl/exp/basic/03_tty/

    [root@zxt 03_tty]# make

    armv4l-unknown-linux-gcc -c -o term.o term.c

    armv4l-unknown-linux-gcc -o ../bin/term term.o -lpthread

    armv4l-unknown-linux-gcc -o term term.o -lpthread

    [root@zxt 03_tty]# ls

    Makefile Makefile.bak term term.c term.o tty.c

     

    3、下载调试

      到超级终端窗口,使用 NFS mount 开发主机的/arm2410cl 到/host 目录。进入

    expasic3_tty 目录,运行term,观察运行结果的正确性。

    [/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56:/arm2410cl /host

    [/mnt/yaffs]cd /host/exp/basic/03_tty/

    [/host/exp/basic/03_tty]./term

    read modem

    send data

    123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX

     

      注意:如果在执行./term 时出现下面的错误,可以通过我们前文提到的方法建立一个连接来解决。/dev/ttyS0: No such file or directory

    解决方法:

    [/mnt/yaffs] cd /dev

    [/dev] ln –sf /dev/tts/0 ttyS0 (注意首字母是l, 不是数字1)

    由于内核已经将串口 1 作为终端控制台,所以可以看到term 发出的数据,却无法看到开发主机发来的数据,可以使用另外一台主机连接串口2 进行收发测试;这时要修改一下执行命令,在term 后要加任意参数(下面以 ./term www 为例)Ctrl+c 或者ESC 可使程序强行退出。

    注意:如果我们需要使用串口1 通讯,比如做Zigbee 或微型打印机实验时,需要加载串口1 的驱动,这个在光盘里做了补充,请到实验补充里面找一下驱动程序s3c2410-tty.o。insmod s3c2410-tty.o 就可以了。如果在执行./term www 时出现下面的错误,可以通过我们前文提到的方法建立两个连接来解决;/dev/ttyS0: No such file or directory

    解决方法:

    [/mnt/yaffs] cd /dev

    [/dev] ln –sf /dev/tts/0 ttyS0 (注意首字母是l, 不是数字1)

    [/dev] ln –sf /dev/tts/1 ttyS1 (注意首字母(红色的)是l, 不是数字1;而后面的两个蓝色的都是1,2,3 的1)

    四、实验体会

           在上次实验的基础之上,这次实验我们做了串行端口程序的设计。本次实验有了上次实验的基础顺利了不少,对实验平台的启动、开发工具的安装和开发环境的配置已经比较熟悉。实验源代码是用的老师写好的,我们只是对代码做了编译下载执行的工作,对源代码的理解也不是特别深刻,在实验后,我会继续学习理论知识,争取对本次实验有更加深入的理解和掌握。

           在本次试验程序运行中,我们还遇到了一些问题,比如串行端口程序下载后无法正常运行,按照指导书输入“ln –sf  /dev/tts/0 ttyS0”命令建立连接后,程序可正常运行。

          上星期的实验一我以为是一个小组写一份实验报告,所以没有写,老师通知完后我补上了实验报告,希望老师原谅!

  • 相关阅读:
    BZOJ-3495 前缀优化建图2-SAT
    洛谷P3979 遥远的国度 树链剖分+分类讨论
    hdu
    hdu
    poj
    poj-1330(暴力写的lca)
    树链剖分
    Dijkstra
    Floyed
    最短路径
  • 原文地址:https://www.cnblogs.com/20135235my/p/4984738.html
Copyright © 2020-2023  润新知