20145219《信息安全系统设计基础》实验二 固件开发

20145219《信息安全系统设计基础》实验二 固件开发

实验报告封面

  • 小组成员:201452114张宁、20145219宋歌

实验内容与步骤

1、配置开发环境(同实验一)

  • 连接arm开发板
  • 建立超级终端
  • 启动实验平台(redhat虚拟机)
  • 配置同网段IP
  • 安装arm编译器(bc共享文件夹)
  • 配置环境变量(redhat虚拟机中)

2、导入实验代码

  • 将实验所需代码拷贝到bc共享文件夹中

    实验代码在老师提供的02_pthread03_tty文件夹中

3、在虚拟机中编译代码

  • 对于多线程相关的代码,编译时需要加-lpthread 的库。
    • 编译pthread.c

    • 编译term.c

4、下载调试

  • 在超级终端中运行可执行文件pthread

  • 在超级终端中运行可执行文件term

实验过程中遇到的问题及解决过程

  • 问题1:在虚拟机中使用armv4l-unknown-linux-gcc pthread.c -o pthread -lpthread命令编译pthread.c文件时出错,提示bash:armv4l-unknown-linux-gcc:command not found

  • 解决方法:经过理解错误提示,发现是环境变量没有配置成功,进入/root/.bash_profile重新配置后即可编译成功(先开始hello.c也没编译通过,我们一时没有想到解决方法就继续向后做了,后来改正这个错误后都编译成功了)

  • 问题2:在超级终端运行可执行文件term时出错,提示/dev/ttyS0: No such file or directory

  • 解决方法:老师给的实验指导书中说:这个问题是因为在 Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 在我们的开发板中串口设备位于/dev/tts/下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接。解决方法就是按照实验指导书说的在超级终端中进入/dev文件夹中,输入命令ln –sf /dev/tts/0 ttyS0(注意空格与字母l、数字0。)

实验过程的理解

  • pthread.c分析

    先设置一个整数的圆形缓冲区,并初始化缓冲区(初始化缓存指针信息(信号量)),再向缓冲区中写入一个整数,接着从缓冲区中读出一个整数(此步骤与写入类似),然后实现一个生产者程序:生产者线程不断顺序地将0到1000的数字写入共享的循环缓冲区,当生产-1时,程序终止;或者消费掉缓存中生产出来的数据:消费者线程不断地从共享的循环缓冲区读取数据,当消费-1时,程序终止。最后,等待生产者、消费者进程结束。

    这个代码是生产者-消费者问题模型的实现。

  • term.c分析

    先通过标准的文件打开函数打开串口,接着设置串口,包括:波特率设置、效验位和停止位设置(串口的设置主要是设置struct termios结构体的各成员值),然后把串口当作文件读写,最后关闭串口。

实验体会

本次实验是《实验二:固件开发》,从实验的操作流程上看,这次实验与实验一的步骤基本相同,唯一的不同就是编译.c文件时的命令加了参数-lpthread,这是因为本次实验的两个代码是与多线程相关的代码,编译时需要加-lpthread 的库。我觉得这次实验的重点应该是在实验一的基础上熟练掌握开发流程,并读懂实验示例代码。这两个代码明显比我们第一次实验的hello.c复杂了n倍,其中所包含的知识点也有很多,需要花时间去理解和体会。实验课堂上可能缺乏充足的时间和安静的环境让我们理解代码,因此,我们要利用课下的时间把这方面完成。

原文地址:https://www.cnblogs.com/20145219songge/p/6057021.html