实验内容

实验两人一组,最多三人一组
可以使用自己的笔记本,也可以使用实验室台式机
使用实验箱作为超级终端。

实验中学到的知识点

  • 交叉编译

  • 宿主机与目标机

  • NFS

  • 超级终端

  • file命令

实验步骤

实验一-1-交叉编译环境-(使用自己笔记本电脑)

  1. 实验两人一组,最多三人一组
  2. 可以使用自己的笔记本,也可以使用实验室台式机,使用实验室机器的不用做本题
  3. 安装老师提供的software目录中的“VMware-workstation-full-10.0.1-1379776.exe”
  4. 解压老师提供的software目录中的“Ubuntu1204.rar”
  5. 用VMWare打开Ubuntu,用户名:linux,口令:1
  6. 建立实验目录"mkdir linux_组员1学号_组员2学号"
  7. 在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名
  8. 参考bocsd目录中的脚本armc.sh, 分别用gcc和交叉编译器arm-none-linux-gnuenbi-gcc编译hello.c,用gcc编译的可执行文件命名linuxhello:gcc hello.c -o linuxhello; 用arm-none-linux-gnuenbi-gcc编译的命名为armhello: /usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuenbi-gcc hello.c -o armhello
  9. 分别运行linuxhello,armhello,有什么结果?提交截图并用file命令分析原因。
  • 注意的点:

用arm指令编译这里生成的armhello文件并不能像gcc编译出来的文件那样直接使用“./armhello”命令来进行执行, 因为它是一个二进制文件,只能将它下载到开发板上并进行执行。

如下图所示:

实验一 开发化境的熟悉-2-目标机宿主机联通

  1. 使用实验室机器不用安装软件,桌面上有相应图标
  2. 使用自己笔记本电脑的,解压超级终端软件“windows7st(Windows).rar”,并在桌面上建立快捷方式(这个不用在实验室做)
  3. 使用自己笔记本电脑的,到实验室把“USB转串口线”的USB口插入自己的电脑,把串口连到实验箱的COM0
  4. 参考视频配置超级终端,用超级终端作为实验箱的显示终端
  5. 用ifconfig在超级终端中查看实验箱IP(目标机),在Ubuntu中(宿主机)中用ifconfig在命令行查看IP
  6. 用网线连接实验室台式机(或自己笔记本电脑)和ARM实验箱的网口NET1(最大屏旁边的)
  7. 用ping命令保证目标机和宿主机能互相ping通,提交ping通的截图

1.连接arm开发板

取试验箱之后,首先打开实验箱检查 电源线、网线、并口线、插口线 无缺失;然后卸除主机后的保护板,使得主机背后的插口方便与试验箱连接;
确保试验箱的开关处于off档位。将实验箱的网线、并口线分别与主机上的对应位置连接好(将主机上之前的网线拔出)。将电源线插在插线板上。将插口线一端插在arm板的端口0处,另一端插在主机对应位置。
2.建立超级终端

新建一个通信终端,取名为arm。在属性对话框中,将波特率设为115200,数据位设为 8,无奇偶校验,停止位为 1,无数据流控制。


之后在超级终端按照老师给的视频进行应有的配置之后并进行一系列操作之后ping成功了,如下图:

实验一 开发化境的熟悉-3-目标机运行程序

  1. 学习资源中第五周的“ARM实验箱实验指导书”的第二章,理解tftp和nfs的作用
  2. 在超级终端中用“mkdir /arm_组员1学号_组员2学号” 建立实验箱中程序运行目录“arm_组员1学号_组员2学号”
  3. 在超级终端中运行“mount -t nfs -o nolock 宿主机IP:/home/linux/linux_组员1学号_组员2学号 /arm_组员1学号_组员2学号”通过NFS把宿主机中的“linux_组员1学号_组员2学号” 映射到目标机中的“/arm_组员1学号_组员2学号”
  4. 超级终端中运行"cd /arm_组员1学号_组员2学号"
  5. 超级终端中运行"./armhello", 提交运行截图,并深入理解交叉编译

按照老师给的步骤一开始遇到了如下错误如图:

之后换了一台电脑,得到正确的结果如下图:

实验一 开发化境的熟悉-4-目标机模块分解

  1. 在目标机上重现上周“系统调用版的myod”
  2. 以静态库或共享库的方式在目标机上重现上周“系统调用版的myod”
  3. 提交超级终端中的运行截图

因为时间原因,这项还没完成,上周myod版本调用的代码链接在此

实验过程的一些思考

  • 什么是交叉编译?为什么要使用交叉编译?

交叉编译 一般指的是 编译非本地机器上运行的代码。
通俗点讲就是 编译其它机器上运行的代码,那些机器的cpu 指令集与编译机器不同,所以编译出来的代码不能直接在编译机上运行。
编译机器上一般需要借助虚拟机才能运行编译后的代码;

其实在一个平台架构上,编译另一个平台架构的可执行代码,就是交叉编译。
例如在x86架构的PC上编译arm嵌入式设备的可执行程序。
交叉编译是不得不用,
首先在目标设备的系统还没引导起来的时候,编译目标平台的引导程序,显然只能交叉编译。

  • 超级终端是什么

是计算机显示终端,是计算机系统的输入、输出设备。

实验体会

本次实验的实验内容不太难,但是我们不太熟悉搭建实验环境的过程,故在其中遇到了一些难题,但最终在老师和同学的帮助下得到了解决。以后实验前一定会认真预习,相信在以后的几次实验我能做的更加熟练。

20155219&20155224 《信息安全系统设计基础》实验一 开发环境的熟悉的更多相关文章

  1. 20145218&20145240 《信息安全系统设计基础》实验一 开发环境的熟悉

    20145218&20145240 <信息安全系统设计基础>实验一 开发环境的熟悉 课程:信息安全系统设计基础 班级:1452 姓名:(按贡献大小排名)刘士嘉 张晓涵 学号:(按贡 ...

  2. 20145215&20145307信息安全系统设计基础实验报告

    20145215&20145307信息安全系统设计基础实验报告 PART1 一.实验原理 交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码.同一个体系结构可以运行不同的操作系统 ...

  3. 20145220&20145209&20145309信息安全系统设计基础实验报告(5)

    20145220&20145209&20145309信息安全系统设计基础实验报告(5) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132249 ...

  4. 20145220&20145209&20145309信息安全系统设计基础实验报告(3)

    20145220&20145209&20145309信息安全系统设计基础实验报告(3) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132243 ...

  5. 20145220&20145209&20145309信息安全系统设计基础实验报告(4)

    20145220&20145209&20145309信息安全系统设计基础实验报告(4) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132246 ...

  6. 20145220&20145209&20145309信息安全系统设计基础实验报告(2)

    20145220&20145209&20145309信息安全系统设计基础实验报告(2) 实验报告链接: http://www.cnblogs.com/zym0728/p/6083664 ...

  7. 20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA)

    20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序 ...

  8. 20145224&20145238《信息安全系统设计基础》实验一 开发环境的熟悉

    20145224陈颢文20145238荆玉茗 <信息安全系统设计基础>第一次实验报告 课程:信息安全系统设计基础 班级: 1452 姓名:荆玉茗 陈颢文 学号:20145238 20145 ...

  9. 20145227&20145201 《信息安全系统设计基础》实验一 开发环境的熟悉

    北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1452 姓名:李子璇 鄢曼君 学号:20145201 20145227 成绩: 指导教师:娄嘉鹏 实验日期:2016 ...

随机推荐

  1. Tomcat指定JDK路径(Linux+Windows)

    当系统有多套JDK,不方便在系统配统一的JAVA_HOME时,我们可能想给tomcat指定JDK路径. 1.Linux下Tomcat指定JDK路径 找到$CATALINE_HOME/bin/catal ...

  2. CentOS下安装MYSQL8.X并设置忽略大小写

    安装 在官网上下载:mysql80-community-release-el7-2.noarch.rpm.安装方式与5.7基本相同.详细安装过程见:CentOS下安装mysql5.7和mysql8.x ...

  3. corePoolSize和maxPoolSize的区别

    受限于硬件.内存和性能,我们不可能无限制的创建任意数量的线程,每一台机器允许的最大线程是一个有界值.因此ThreadPoolExecutor管理的线程数量是有界的.线程池就是用这些有限个数的线程,去执 ...

  4. zabbix3.4.7实现企业微信告警,亲测可用!

    Zabbix 新版微信告警 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信 ...

  5. error TS2304: Cannot find name 'Promise' && TS2307: Cannot find module '**'

    error TS2304: Cannot find name 'Promise' 解决方法:在编译选项中加入"target":"es6" { "ver ...

  6. 003-RHEL7-Linux系统维护管理命令使用

    系统维护管理命令: date  查看日期,设置日期 只有超级用户才能用date命令设置时间 date  --help  显示时间的帮助命令 date{选项} 显示时间格式(以+开头,后面接时间格式) ...

  7. laravel的validation 中文 文件

    使用方法: 直接替换resources/lang/en/validation.php中的内容 <?php return [ 'unique' => ':attribute 已存在', 'a ...

  8. Python3 线程/进程池 concurrent.futures

    python3之concurrent.futures一个多线程多进程的直接对接模块,python3.2有线程池了 Python标准库为我们提供了threading和multiprocessing模块编 ...

  9. react全家桶-服务端与客户端配置

    全家桶内装有: react - github react-router - github redux - github react-redux - github react-router-redux ...

  10. 前端之Bootstrap框架

    一.Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包. 它支持响应式布局, ...