2018-2019-1 20165229 20165306 实验一 开发环境的熟悉
实验内容
1.交叉环境编译
- 可以使用自己的笔记本,也可以使用实验室台式机,使用实验室机器的不用做本题
- 安装老师提供的software目录中的“VMware-workstation-full-10.0.1-1379776.exe”
- 解压老师提供的software目录中的“Ubuntu1204.rar”
- 用VMWare打开Ubuntu,用户名:linux,口令:1
- 建立实验目录"mkdir linux_组员1学号_组员2学号"
- 在实验目录中编写“hello word”程序,另外补充几行打印所有组员的学号姓名
- 参考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
- 实验截图:
2.目标机宿主机联通
- 使用自己笔记本电脑的,解压超级终端软件“windows7st(Windows).rar”,并在桌面上建立快捷方式(这个不用在实验室做)
- 使用自己笔记本电脑的,到实验室把“USB转串口线”的USB口插入自己的电脑,把串口连到实验箱的COM0
- 参考视频配置超级终端,用超级终端作为实验箱的显示终端
- 用ifconfig在超级终端中查看实验箱IP(目标机),在Ubuntu中(宿主机)中用ifconfig在命令行查看IP
- 用网线连接实验室台式机(或自己笔记本电脑)和ARM实验箱的网口NET1(最大屏旁边的)
- 用ping命令保证目标机和宿主机能互相ping通,提交ping通的截图
实验步骤
- 用ifconfig 查看ip:192.168.0.230,注意网线一定接入实验箱net1,串口线接入COM0
- 用ifconfig 查看实验箱IP:192.168.0.232
- 实验箱(超级终端)(192.168.0.232),ubuntu(192.168.0.230),win7(192.168.0.231)要互相能ping通
3.目标机运行程序
- 学习资源中第五周的“ARM实验箱实验指导书”的第二章,理解tftp和nfs的作用
- 在超级终端中用“mkdir /arm_组员1学号_组员2学号” 建立实验箱中程序运行目录“arm_组员1学号_组员2学号”
- 在超级终端中运行“mount -t nfs -o nolock 宿主机IP:/home/linux/linux_组员1学号_组员2学号 /arm_组员1学号_组员2学号”通过NFS把宿主机中的“linux_组员1学号_组员2学号” 映射到目标机中的“/arm_组员1学号_组员2学号”
- 超级终端中运行"cd /arm_组员1学号_组员2学号"
- 超级终端中运行"./armhello", 提交运行截图,并深入理解交叉编译
实验步骤
- TFTP协议是简单文件传输协议,基于UDP协议,没有文件管理、用户控制功能。TFTP分为服务器端程序和客户端程序,在主机上通常配置有TFTP服务端和客户端。
注:$cd ~
波浪线代表用户的home目录,俗称主目录或家目录。
- NFS方式是开发板通过NFS挂载放在主机(PC)上的根文件系统,对于系统的调试非常方便。
- 重启服务:
-
在超级终端中用
mkdir /arm_20165229_20165306
建立实验箱中程序运行目录 -
在超级终端中运行
mount -t nfs -o nolock 192.168.0.230:/home/linux/linux_20165229_20165306/arm_20165229_20165306
通过NFS把宿主机中的linux_20165229_20165306
映射到目标机中的/arm_20165229_20165306
-
在超级终端中运行
cd /arm_20165229_20165306
,然后在超级终端中运行./armhello
5.实验结束后,把实验室原来的网线插回,否则以后做实验的同学无法开机,提交插好网线的照片。
- 未使用实验室机器,实验箱和工具袋已归还。
实验中的问题及解决过程
- 问题:交叉环境编译用
/usr/local/toolchain/toolchain4.3.2/bin/arm-none-linux-gnuenbi-gcc hello.c -o armhello
编译时总显示“没有那个文件或目录”
- 解决过程:
发现是toolchain-4.3.1/bin/arm-none-linux-gnueabi-gcc
新学到的知识点
-
交叉编译:搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。
-
宿主机与目标机:宿主机是执行编译、链接嵌入式软件的计算机;目标机是运行嵌入式软件的硬件平台。通常我们用的PC机就是宿主机,而我们用的开发板则是目标机。
-
NFS:NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
-
超级终端:超级终端的原理是将用户输入随时发向串口(采用TCP协议时是发往网口,这里只说串口的情况),但并不显示输入。它显示的是从串口接收到的字符。所以,嵌入式系统的相应程序应该完成的任务便是:将自己的启动信息、过程信息主动发到运行有超级终端的主机;将接收到的字符返回到主机,同时发送需要显示的字符(如命令的响应等)到主机;在单片机开发时使用。
-
file命令:file命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。
-
b 列出文件辨识结果时,不显示文件名称。
-
c 详细显示指令执行过程,便于排错或分析程序执行的情形
-
f 列出文件中文件名的文件类型
-
F 使用指定分隔符号替换输出文件名后的默认的":"分隔符。
-
i 输出mime类型的字符串
-
L 查看对应软链接对应文件的文件类型
-
z 尝试去解读压缩文件的内容
-
help 显示命令在线帮助
-
version 显示命令版本信息
-