北京电子科技学院(BESTI)

              

课程: 密码系统设计基础                                                                                 班级: 1353班

姓名:刘世鹏、郝  爽                                                                                    学号:201304、20135335

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

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

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

实验名称:  实验一  熟悉Linux开发环境

实验目的与要求:熟悉linux开发环境,学会基于S3C2410的linux开发环境的配置和使用。

使用linux的armv41-unknown-linux-gcc编译,使用基于NFS方式的下载调试了解嵌入式

开发的基本过程。

一、实验内容:

本次实验使用Redhat Linux 9.0操作系统环境,安装ARM-Linux的开发库及编译器,创建一个新目录,并在其中编写hello.c和Makefile文件,学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置,下载已经编译好的文件到目标开发板上运行。

二、实验设备及工具(包括软件调试工具)

  • 硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。
  • 软件:PC 机操作系统 REDHAT LINUX 9.0+超级终端(或 X-shell)+ARM-LINUX 开发 环境。

三、实验步骤:

1.连接 arm 开发板

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

2.建立超级终端

运行 windows XP 系统下“开始”、“所有程序”、“附件”、“通讯”、 “超级终端”。新建一个通信终端,取名为 arm。在属性对话框中,将波特率设为 115200,数据位设为 8,无奇偶校验,停止位为 1,无数据流控制。另存为在桌面。

3.启动实验平台

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

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

使得它们均与 arm 机的 ip 在同一网段。本次实验中将 pc 机的 ip 设为 192.168.0.55,redhat 虚拟机 ip 为 192.168.0.234。 pc机ip在网络连接→本地连接→属性→Internet协议(TCP/IP)中修改。

重启后确认:打开命令行,输入ifconfig确认虚拟机ip是否修改成功

5.安装 arm 编译器。

在 pc 机中“开始”、“运行”,输入虚拟机的 ip。\192.168.0.234,输入用户名 bc,密码 123456 然后确定,就可以访问虚拟机的文件了。然后把所需文件解压缩拷贝到共享文件夹 bc 中。进入虚拟机,在命令行中输入./install.sh,安装脚本程序将会自动建立目录,配置编译环境。

6.配置环境变量

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

7.建立 hello.c 文件并编译

在虚拟机中进入文件夹/root/bc,在此目录下编写 hello.c 文件。利用命令armv4l-unknown-linux-gcc 对 hello.c 进行编译,生成可执行文件.

8.下载调试

在超级终端中将共享文件夹挂载好,建立开发板与虚拟机之间的通讯。输入命令“mount -t nfs -o nolock 192.168.0.234:/root/bc /host”(注意空格!) 在超级终端中运行编译通过的 hello 可执行文件。

四、遇到的问题与解决方法

1.问题一:完成hello.c创建后输入 armv4l-unknown-linux-gcc hello.c –o hello显示can not found 编译器。

分析问题:环境变量配置出现错误,可能是中途退出虚拟机后更改了之前的环境变量配置。

解决问题:一、指定gcc编译器的路径对hello.c文件进行编译,如上图。

     二、重新配置环境变量之后可以正常使用

2.问题二:在超级终端中将共享文件夹挂载好后,建立开发板与虚拟机之间的通讯时,输入了“mount -t nfs -o nolock 192.168.0.234:/root/bc /host”命令发现在超级终端中运行 hello 可执行文件失败,显示not found。 解决方法:执行命令在非所在目录之下,通过命令cd /host后进入host目录下,输入 ./hello 运行可执行文件

五、思考题

1.为什么需要交叉编译?如何安装交叉编译环境?

在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。

有时是因为目的平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目的平台上的资源贫乏,无法运行我们所 需要编译器;有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。

  • 如何安装交叉编译环境:

    • 1、在Windows PC上,利用ARM 开发环境编译出针对ARM CPU的可执行代码。

    • 2、在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码。

    • 3、在Windows PC上,利用cygwin环境,运行arm-elf-gcc编译器,可编译出针对ARM CPU的可执行代码。

2.实验箱虚拟机Redhat、WinXP之间的IP需要满足什么关系?如何配置?为什么?

答:实验中虚拟机、WinXP、实验箱的IP需要在同一网段内。

WinXp通过->网络->本地连接->右键属性->tcp/ip设置 设置当前IP

虚拟机通过->系统设置->网络->编辑 设置当前IP

只有在同网段才能和目的平台建立起连接

3.实验中mount命令中每个选项什么意思?

答:文件系统挂载命令,其参数选项

  • -a 依照/etc/fsatb的内容装载所有相关的硬盘

  • -l 列出当前已挂载的文件系统名称、设备和挂载点

  • -t 将后面的设备以指定的格式装载到挂载点上

  • -f 用于排查错误 实际是挂载工程的模拟

六、实验体会

通过本次实验我们小组对Linux开发环境有了一定的了解,学会了基于S3C2410的linux开发环境的配置和使用。初步了解了交叉编译的过程,对交叉编译的具体信息通过 [交叉编译][http://pan.baidu.com/s/1nt4pP9n]文件有更深入的了解,也初步接触了linux下环境变量的配置,armv41-unknown-linux-gcc对文件进行编译,了解了嵌入式开发的基本过程。通过这次实验我们组对所学的只是有了实践性的深入理解,也希望以后能够在实践中获得更多的收获 其次,实验中遇到一些问题,让我们意识到做实验不只是通过实验步骤一步一步照做之后得出一个结果,这样做出来的实验是毫无意义的,只有在过程中加入自己的思考,不理解的地方通过查询,反复验证,才能正在理解一个系统的运作。

建议:希望能有一个更加自主做实验的尽力,原理步骤可通过更多渠道获得,在掌握原理后方能轻松实验

20135335郝爽 & 20135304刘世鹏 实验一的更多相关文章

  1. Linux内核分析第五周 扒开系统调用的三层皮(下) (20135304 刘世鹏)

    作者:刘世鹏20135304  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuOS增加t ...

  2. 构建一个简单的Linux系统 MenuOs —— start_kernel到init进程(20135304刘世鹏)

    构建一个简单的Linux系统 MenuOs —— start_kernel到init进程 作者:刘世鹏20135304 <Linux内核分析>MOOC课程http://mooc.study ...

  3. 实验3 --俄罗斯方块 with 20135335郝爽

    一.   实验内容 (一)敏捷开发与XP 内容:1.敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 2.极限编程(eXtreme Programming,X ...

  4. 201871030134-余宝鹏 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程(Pair programming) 2.掌握GitHub协作开发程 ...

  5. 201871030134-余宝鹏 实验二 个人项目一 《D{0-1}KP》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 1.掌握软件项目个人开发流程2.掌握Github发布软件项目的操作方法 这个作业帮助我在哪些方面实现学习目标 1. ...

  6. 20145215刘俊谦实验五 Java网络编程及安全

    实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验步骤 本次实验由两人组队完成,20145321曾子誉是我本次实验的搭档,链接为:http://www.cnblog ...

  7. 读刘未鹏老大《你应当怎样学习C++(以及编程)》

    标签(空格分隔): 三省吾身 原文地址:你应当怎样学习C++(以及编程) 本人反思自己这些年在学校学得稀里糊涂半灌水. 看到这篇文章,感觉收获不少.仿佛有指明自己道路的感觉,当然真正困难的还是坚持学习 ...

  8. LINUX第五次实验报告

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础                     班级: 201353 姓名:刘世鹏 郝爽 学号:2013530 ...

  9. 2014-2015-2 《Java程序设计》课程学生博客列表

    20135101 曹钰晶 20135103 王海宁 20135104 刘 帅 20135105 王雪铖 20135109 高艺桐 20135111 李光豫 20135114 王朝宪 20135116 ...

随机推荐

  1. linux+jre+apache+mysql+tomcat调优

    一.不再为Apache进程淤积.耗尽内存而困扰 0. /etc/my.cnf,在mysqld那一段加上如下一行: log-slow-queries=queries-slow.log 重启MySQL 酌 ...

  2. java网络---再论URL & URI

    关于URL 和URI的关系,在本系列的第二篇:java网络---基本web概念 中已经简述了. 这里重复一点,就是URI包含URL,或者说URI是父类,URL就是子类的概念. 本篇再来详述这2个概念. ...

  3. MSLocalDB

    今天用MSLocalDB做测试,发现保存的中文都变成了??,基本可以确定是排序规则的问题,LocalDB建库默认使用Latin规则,需要改为Chinese_PRC_CI_AS,为了修改规则,需要先修改 ...

  4. gerrit添加新用户

    默认gerrit的web服务端口为8080,通过apache的反向代理就可以使用标准的80(HTTP)来访问gerrit的web界面,在apache的配置文件httpd.conf添加如下反向代理和HT ...

  5. iptables & selinux

    iptables -F getenforce setenforce 0 可以临时关闭,但重启之后还是会变成原来的状态. vi /etc/sysconfig/selinux 把里边的一行改为 SELIN ...

  6. MySql查询语句中解决“该列没有包含在聚合函数或者groupby子句中”的相关问题方法

    首先引入语句来源,表结构和数据如下: 需求是:查出员工(personname)在不同店铺(store)的总薪酬(salary),相同店铺输出store,不同店铺输出multi_store. 正确查询语 ...

  7. cd dirname $0

    这个命令的功能是返回脚本正在执行的目录. 可以根据这个目录来定位运行的程序的相对位置. 这样,对shell脚本里面的相对目录的路径代码就比较安全了.在任何一台服务器上面都可以安全执行.

  8. HashMap与TreeMap的区别

    首先描述下什么是Map. 在数组中我们是通过数组的下标来对其内容进行索引的,而在Map中我们是通过对象对对象进行索引的,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平常说的键值对. ...

  9. oracle向in语句传入参数查不出数据

    在oracle字符串中使用了in,但是查不出数据 string getModel = "select * from TB_YBSH where ID in :ids"; Oracl ...

  10. 烂泥:【解决】word复制windows live writer没有图片

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在使用windows live writer发表博客,博客先是在是word2013中进行编辑,编辑完毕后我会复制到windows live writer ...