zoukankan      html  css  js  c++  java
  • 北京电子科技学院(BESTI)实验报告2

    北京电子科技学院(BESTI)实验报告2

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

    班级:1452、1453

    姓名:(按贡献大小排名)郑凯杰 、周恩德

    学号:(按贡献大小排名)20145314 、20145217

    指导教师:娄嘉鹏

    实验日期:2016.11.10

    实验时间:10:00—12:00

    仪器组次:

    必修/选修:必修

    实验序号:2

    实验名称:固件设计

    一、实验目的与要求:

    1. 了解多线程程序设计的基本原理,学习 pthread 库函数的使用。
    2. 了解在 linux 环境下串行程序设计的基本方法。
    3. 掌握终端的主要属性及设置方法,熟悉终端I /O 函数的使用。学习使用多线程来完成串口的收发处理。
    4. 熟悉linux开发环境,学会基于S3C2410的linux开发环境的配置和使用。使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程

    实验仪器:

    • arm UP-TECH
    • PC机 XP系统

    线程创建函数:

    int pthread_create (pthread_t * thread_id, __const pthread_attr_t * __attr,void *(*__start_routine) (void *),void *__restrict __arg)
    

    获得父进程 ID:

    pthread_t pthread_self (void)
    

    测试两个线程号是否相同:

    int pthread_equal (pthread_t __thread1, pthread_t __thread2)
    

    线程退出:

    void pthread_exit (void *__retval)
    

    等待指定的线程结束:

    int pthread_join (pthread_t __th, void **__thread_return)
    

    互斥量初始化:

    pthread_mutex_init (pthread_mutex_t *,__const pthread_mutexattr_t *)
    

    销毁互斥量:

    int pthread_mutex_destroy (pthread_mutex_t *__mutex)
    

    再试一次获得对互斥量的锁定(非阻塞) :

    int pthread_mutex_trylock (pthread_mutex_t *__mutex)
    

    锁定互斥量(阻塞) :

    int pthread_mutex_lock (pthread_mutex_t *__mutex)
    

    解锁互斥量:

    int pthread_mutex_unlock (pthread_mutex_t *__mutex)
    

    条件变量初始化:

    int pthread_cond_init (pthread_cond_t *__restrict __cond,__const pthread_condattr_t *__restrict __cond_attr)
    

    销毁条件变量 COND:

    int pthread_cond_destroy (pthread_cond_t *__cond)
    

    唤醒线程等待条件变量:

     pthread_cond_signal (pthread_cond_t *__cond)
    

    等待条件变量(阻塞) :

    int pthread_cond_wait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex)
    

    在指定的时间到达前等待条件变量:

    int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,pthread_mutex_t *__restrict __mutex, __const struct timespec *__restrict __abstime)
    

    二、实验内容步骤:

    1、连接 arm 开发板

    • 将 arm 开发板电源线接好,保持开发板开关处于闭合状态。
    • 再分别将串口线,并口线和网线与 pc 机连接好。

    2、建立超级终端

    运行 windows XP 系统下“开始”、“所有程序”、“附件”、“通讯”、“超级终端”。新建一个通信终端,取名为 arm。
    图1:

    在属性对话框中,将波特率设为 115200,数据位设为 8,无奇偶校验,停止位为 1,无数据流控制,另存为在桌面。

    图2:

    3、启动实验平台

    打开超级终端,打开 arm 机电源开关。等待一分钟, arm 机的信息会显示在超级终端的窗口中。输入 ifconfig 命令,记录下 arm 机的 ip为: 192.168.0.121。

    图3:

    4、修改xp系统与redhat虚拟机的ip

    在 pc机中的 xp系统中,本次实验中将 pc机的 ip设为 192.168.0.55,

    图4:

    redhat虚拟机 ip为 192.168.0.234。

    图5:

    修改完 IP, 重启一下虚拟机, IP 才能启作用。 重启后在命令行中使用 ifconfig 确认修改正确。

    5、安装 arm 编译器。

    在 pc 机中“开始”、“运行”,输入虚拟机的 ip。 192.168.0.234,输入用户名 bc,密码 123456 。

    然后确定就可以访问虚拟机的文件了。然后把所需文件解压缩拷贝到共享文件夹 bc 中。

    6、配置环境变量

    在虚拟机中使用vi修改/root/.bash_profile文件中的PATH变量为PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/ (因为该文件为隐藏系统文件,所以使用ls命令不可见),存盘后执行:source/root/.bash_profile,则以后armv4l-unknown-linux-gcc 会自动搜索到,可以在终端上输入。

    7、验证实验代码

    1.将实验代码拷贝到共享文件夹中。

    2、在虚拟机中编译代码。对于多线程相关的代码,编译时需要加-lpthread的库

    下载调试在超级终端中运行可执行文件pthread!

    运行可执行文件term。

    tu2:

    三、实验过程中遇到的问题以及解决方案。

    (1)03_tty代码使用编译工具armv4l编译时无法通过

    解决:代码存储路径如若包含了中文就无法通过编译,我们只需要把该文件夹放在bc下目录下,就可以完成编译了。

    (2)输入命令出现错误

    解决:Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二为 /dev/ttyS1, 在我们的开发板中串口设备位于/dev/tts/下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接,输入ln –sf /dev/tts/0 /dev/ttyS0命令即可

    四、心得体会:

    实验二与实验一要采用同样的配置环境,因此我们直接往下做,从上面的第5步开始。整个过程我还没有特别的问题,只是一些编译问题。解决方案如上。

    参考资料

  • 相关阅读:
    vsftpd 配置:chroot_local_user与chroot_list_enable详解
    rsync同步目录
    apache
    centos 7 服务管理
    PowerPoint’s Menu is Too Big
    测试网页返回值
    作为人的展现方式
    Java 日期与时间
    Java 随机数
    Character 类
  • 原文地址:https://www.cnblogs.com/5314zkj/p/6105780.html
Copyright © 2011-2022 走看看