linux嵌入式实验指导书吴.docx

上传人:b****5 文档编号:5796792 上传时间:2023-01-01 格式:DOCX 页数:39 大小:2.82MB
下载 相关 举报
linux嵌入式实验指导书吴.docx_第1页
第1页 / 共39页
linux嵌入式实验指导书吴.docx_第2页
第2页 / 共39页
linux嵌入式实验指导书吴.docx_第3页
第3页 / 共39页
linux嵌入式实验指导书吴.docx_第4页
第4页 / 共39页
linux嵌入式实验指导书吴.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

linux嵌入式实验指导书吴.docx

《linux嵌入式实验指导书吴.docx》由会员分享,可在线阅读,更多相关《linux嵌入式实验指导书吴.docx(39页珍藏版)》请在冰豆网上搜索。

linux嵌入式实验指导书吴.docx

linux嵌入式实验指导书吴

实验一、嵌入式Linux开发环境的建立

试验目的

1、掌握如何在WINDOWS下安装虚拟机,

2、如何安装LINXUX操作系统;

预备知识

绝大多数Linux软件开发都是以native方式进行的,即本机(HOST)开发、调试,本机运行的方式。

这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机(即板子上系统)运行开发工具和调试工具。

通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。

交叉编译调试环境建立在宿主机(即一台PC机)上,对应的开发板叫做目标板。

运行Linux的PC【宿主机】开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标机上运行。

调试时的方法很多,可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器提供的支持作出选择。

宿主机和目标板的处理器一般不相同,宿主机为Intel处理器,而目标板如UP-NetARM2410-S开发板为三星S3c2410.GNU编译器提供这样的功能,在编译器编译时可以选择开发所需的宿主机和目标

实验步骤:

一预备知识

Mware虚拟机安装Linux系统

VMware软件安装

使用VMware虚拟机可以在Windows系统下面再安装其他的操作系统,而不会对原有的操作系统造成任何影响。

本小节将讲述在WindowsXP上安装VMware虚拟软件。

安装好VMvare软件以后,可以使用VMware建立一个虚拟计算机。

在建立虚拟机时,需要注意虚拟硬件的设置。

下面的步骤可以建立一个虚拟机

新建了虚拟机以后,需要注意VMware使用方法。

本小节将介绍VMware中常用工具的使用方法。

常用工具提供了虚拟机的管理功能。

启动虚拟机系统以后,在虚拟机中的操作与本地计算机的操作是相似的。

在VMware安装Linux系统时,对硬盘的分区、格式化操作,都是在虚拟硬盘上进行的。

对硬盘上的数据没有任何影响。

在学习Linux安装时,可以使用VMware虚拟机进行练习。

本小节将在VMware虚拟机上安装RedHatLinux9.0系统。

完成光盘完整性检查以后,RedHatLinux9.0的图形安装界面如图

选择软件包组

完成安装

是RedHatLinux9.0的用户桌面

 

实验二、熟悉Linux交叉开发环境配置和使用

试验目的:

1linux网络配置

2linux串口配置

预备知识

对于嵌入式LINUX,宿主机上的操作系统一般要求为REDHATLINUX。

嵌入式开发通常要求宿主机配置有网络,支持NFS(为交叉开发时mount所用)。

然后要在宿主机上建立交叉编译调试的开发环境。

环境的建立需要许多的软件模块协同工作,这将是一个比较繁杂的工作,但现在已通过博创嵌入式教学套件中光盘的安装而自动完成了。

开发工具软件的安装与配置

实验步骤:

1.开发工具软件的安装

将博创兴业科技有限公司提供的附带开发工具光盘插入CDROM,然后执行以下命令:

mount/dev/cdrom/mnt

若系统不识别/dev/cdrom的话,可以用如下命令,假设CDROM为从盘,即为/dev/hdb,则:

mount–tiso9660/dev/hdb/mnt

安装脚本程序将自动建立/arm2410s目录,并将所有开发软件包安装到/arm2410s目录下,

同时自动配置编译环境,建立合适的符号连接。

注意:

安装完成后看一下主编译器

Armv4l-unknown-linux-gcc是否在

/opt/host/armv4l/bin/,如果不是这个路径,请使用

vi修改/root/.bash_profile文件中

PATH变量为

PATH=$PATH:

$HOME/bin:

/opt/host/armv4l/bin/,存盘后执行:

source/root/.bash_profile,则以后

armv4l-unknown-linux-gcc会自动搜索到,可以在终端上输入

armv,然后按tab键,会自动显示armv4l-unknown-linux-

2.开发环境配置

配置网络,包括配置IP地址、NFS服务、防火墙。

网络配置主要是要安装好以太网卡,对于一般常见的RTL8139网卡,REDHAT9.0可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。

然后配置宿主机IP为192.168.0.121。

如果是在有多台计算机使用的局域网环境使用此开发设备,IP地址可以根据具体情况设置。

如图1.4.1所示:

图1.4.1网络配置

双击设备eth0的蓝色区域,进入以太网设置界面,如图1.4.2,1.4.3所示:

图1.4.2以太网常规设置界面

图1.4.3以太网路由设置界面

对于REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP访问它全部拒绝,这样其它网络设备根本无法访问它,即无法用NFSmount它,许多网络功能都将无法使用。

因此网络安装完毕后,应立即关闭防火墙。

操作如下:

点击红帽子开始菜单,选择安全级别设置,选中无防火墙。

如图1.4.4所示:

图1.4.4安全级别设置

在系统设置菜单中选择服务器设置菜单,再选中服务菜单,将iptables服务的勾去掉,并确保nfs选项选中。

配置NFS:

点击主菜单运行系统设置->服务器设置->NFS服务器(英文为:

SETUP->SYSTEM

SERVICE->NFS),点击增加出现如下在界面,在目录(Drictory):

中填入需要共享的路径,在主机(Hosts):

中填入允许进行连接的主机IP地址。

并选择允许客户对共享目录的操作为只读(Read-only)或读写(Read/write)。

如图1.4.5所示:

图1.4.5NFS基本设置

图1.4.6是对客户端存取服务器的一些其他设置,一般不需要设置,取默认值。

图1.4.6NFS用户访问设置

当将远程根用户当作本地根用户时,对于操作比较方便,但是安全性较差。

最后退出时则完成NFS配置。

配置好后,界面应显示如图1.4.7所示:

图1.4.7远程根用户当作本地根用户

图1.4.8配置好的NFS

我们也可以手工编写/etc/exports文件,其格式如下:

共享目录可以连接的主机(读写权限,其他参数)

例如:

表示将本机的/arm2410s目录共享给ip地址为192.168.0.1-192.168.0.254的所有计算

机,可以读取和写入。

配置完成后,可用如下办法简单测试一下NFS是否配置好了:

在宿主机上自己mount自己,看是否成功就可以判断NFS是否配好了。

例如在宿主机/目录下执行:

其中192.168.0.10应为主机的IP地址。

然后到/mnt/目录下看是否可以列出/arm2410s目录下的所有文件和目录,可以则说明

mount成功,NFS配置成功。

3.配置MINICOM:

1.在linux操作系统Xwindow界面下建立终端(在桌面上点击右键——>新建终端),在终端的命令行提示符后输入minicom,回车,你就会看到minicom的启动画面(见图1.4.9)

若没有启动Xwindow则在命令行提示符后直接输入minicom即可。

图1.4.9minicom启动画面

2.minicom启动后,先按Ctrl+A键,再按Z键(注意不是连续按,Ctrl+A松开后才按Z),

进入主配置界面(见图1.4.10)。

图1.4.10主配置界面

按“O”进入配置界面,如图1.4.11配置界面

图1.4.11配置界面

按上下键选择Serialportsetup,进入端口设置界面,这里有几个重要选项改为如下值(见

图1.4.12):

(在Changewhichsetting后按哪个字母就进入哪项的配置,如按A进行端口号配置。

A————SerialDevice:

/dev/ttyS0(端口号使用串口1)

E————BPS/par/bits:

/1152008N1(波特率)

F,E硬件流,软件流都改为NO,若要使用PC机的串口2来接板子的串口1做监

控,改为:

/dev/ttyS1即可。

3.选好后按ESC键退出到图1.4.11所示画面,选择Savesetupasdf1保存退出,以后只要

启动minicom就是该配置,无需再做改动。

4.配置完成后,用串口线连接好pc机和2410-S,启动2410-S,即可在minicom上看到启

动信息,并可以执行操作控制。

图1.4.12端口设置界面

Linux开发软件的安装目录结构

表格1.4.1均以/arm2410s目录为起点:

编译器安装路径说明如表1.4.2所示:

上述诸多程序的源代码都在光盘中提供.

在安装完成LINUX后,就是对LINUX的网络环境的配置,最主要是配置NFS服务器。

 

实验三、LinuxC程序设计

实验目的

1、Vi编辑器的使用

2、gcc编译器的使用,编译LinuxC程序

一,使用Vi编辑器完成以下4个文件的内容输入:

hello.h

starfun.h

hello.c

star.c

Starfun.h文件内容如下:

/*****starfun.h*****/

#ifndefSTARFUN_H

#defineSTARFUN_H

#defineNUM4

#defineNUMBER3

intstar1(){

inti,j,k;

for(k=1;k<=NUM;++k){

for(i=1;i<=(NUM-k);++i)

printf("");

for(j=1;j<=(2*k-1);++j)

printf("*");

printf("\n");

}

return0;

}

intstar2(){

inti,j,k;

for(k=NUMBER;k>=0;--k){

for(i=1;i<=(NUMBER-k+1);++i)

printf("");

for(j=1;j<=(2*k-1);++j)

printf("*");

printf("\n");

}

return0;

}

#endif

hello.h文件内容如下:

/*hello.h*/

#ifndefHELLO_H

#defineHELLO_H

voidhello(){

star1();

printf("hello,myfriends\n");

}

#endif

hello.c文件内容如下:

voidshowhello(){

hello();

}

star.c文件内容如下:

#include"starfun.h"

#include"hello.h"

#include

intmain(){

star1();

star2();

showhello();

return0;

}

Vi编辑器的使用,可以参考PPT和Vi.doc文档,在使用Vi编辑器的过程中,注意使用Vi的单行和多行复制命令,练习字符串查找替换命令,删除一个字符,删除光标后整个内容命令,删除一行命令,恢复删除,保存和退出命令等命令,并尝试使用其他命令。

掌握

#ifndefSTARFUN_H

#defineSTARFUN_H

的宏定义用法

二.使用gcc编译器,编译程序

第一种方法:

分步进行

1.由star.cstarfun.h文件生成star.o目标文件

gcc-cstar.c-ostar.o

2.由hello.chello.hstarfun.h生成hello.o目标文件

gcc-chello.c-ohello.o

3.由hello.ostar.o生成应用程序myprog

gccstar.ohello.o-omyprog

[root@localhost01_hello]#./myprog

*

***

*****

*******

*****

***

*

*

***

*****

*******

hello,myfriends

第二种方法:

一条命令完成以上操作

gccstar.chello.c-omyprog

结合本次课的PPT关于gcc部分,体会gcc编译器编译的过程,并在实验报告中描述

在以上编译中尝试

[root@localhost01_hello]#gccstar.chello.c-omyprog

[root@localhost01_hello]#gcc-wstar.chello.c-omyprog

[root@localhost01_hello]#gcc-Wallstar.chello.c-omyprog

Infileincludedfromstar.c:

1:

starfun.h:

Infunction`star1':

starfun.h:

13:

warning:

implicitdeclarationoffunction`printf'

star.c:

Infunction`main':

star.c:

8:

warning:

implicitdeclarationoffunction`showhello'

hello.c:

Infunction`showhello':

hello.c:

4:

warning:

implicitdeclarationoffunction`hello'

体会-Wll-w选项的作用

查阅当前的gcc版本命令

[root@localhost01_hello]#gcc-v

Readingspecsfrom/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specs

Configuredwith:

../configure--prefix=/usr--mandir=/usr/share/man--infodir=/usr/share/info--enable-shared--enable-threads=posix--disable-checking--with-system-zlib--enable-__cxa_atexit--host=i386-redhat-linux

Threadmodel:

posix

gccversion3.2.220030222(RedHatLinux3.2.2-5)

三.使用动态库

(1)[root@localhost01_hello]#gcc-c-fpichello.c

[root@localhost01_hello]#ls

amakehello.chello.hhello.omakefile_01makefile_02makefile_03Makefile_rulestar.cstarfun.h

(2)[root@localhost01_hello]#gcc-shared-s-olibhello.sohello.o

[root@localhost01_hello]#ls

amakehello.chello.hhello.olibhello.somakefile_01makefile_02makefile_03Makefile_rulestar.cstarfun.h

注意libhello.so库文件的命名格式,

(1)

(2)也可以用下边命令替代

gcc-fpic-shared-shello.c-olibhello.so

[root@localhost01_hello]#cplibhello.so/usr/lib

注意/usr/lib为用户库自动搜索路径

[root@localhost01_hello]#gcc-lhellostar.c-omystar

[root@localhost01_hello]#lddmystar

libhello.so=>/usr/lib/libhello.so(0x4002d000)

libc.so.6=>/lib/tls/libc.so.6(0x42000000)

/lib/ld-linux.so.2=>/lib/ld-linux.so.2(0x40000000)

[root@localhost01_hello]#./mystar

*

***

*****

*******

*****

***

*

*

***

*****

*******

hello,myfriends

[root@localhost01_hello]#

四,使用静态库

[root@localhost01_hello]#rm*.o

rm:

是否删除一般文件‘hello.o’?

y

[root@localhost01_hello]#rmmystar

rm:

是否删除一般文件‘mystar’?

y

[root@localhost01_hello]#

[root@localhost01_hello]#rmlibhello.*

[root@localhost01_hello]#gcc-chello.c-ohello.o

[root@localhost01_hello]#ar-rclibhello.ahello.o

[root@localhost01_hello]#gccstar.clibhello.a-omystar

[root@localhost01_hello]#./mystar

*

***

*****

*******

*****

***

*

*

***

*****

*******

hello,myfriends

五.调试器的使用

1.gdb

进入02_gdb目录

执行

[root@localhost02_gdb]#gcc-geg1.c-oeg1

[root@localhost02_gdb]#gdbeg1

GNUgdbRedHatLinux(5.3post-0.20021129.18rh)

Copyright2003FreeSoftwareFoundation,Inc.

GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouare

welcometochangeitand/ordistributecopiesofitundercertainconditions.

Type"showcopying"toseetheconditions.

ThereisabsolutelynowarrantyforGDB.Type"showwarranty"fordetails.

ThisGDBwasconfiguredas"i386-redhat-linux-gnu"...

(gdb)run

Startingprogram:

/home/qianzg/ARM2410DEMO/02_gdb/eg1

ProgramreceivedsignalSIGFPE,Arithmeticexception.

0x0804833finwib(no1=8,no2=8)ateg1.c:

6

6result=no1/diff;

参考“使用GDB调试Linux软件.htm”使用gdb

实验四Makefile文件的编写

实验目的

1、正确理解Makefile文件

2、学会使用Vi编写Makefile文件

实验内容1.使用Makefile之一

理论部分请参阅PPT和“熟悉Linux开发环境.doc”编写Makefile文件

由该Makefile文件编译第一节中的hello.hstarfun.hhello.cstar.c四个文件

2.使用automake

[root@localhosthello]#vihello.c

[root@localhosthello]#ls

hello.c

[root@localhosthello]#autoscan

[root@localhosthello]#ls

autoscan.logconfigure.scanhello.c

[root@localhosthello]#viconfigure.scan

[root@localhosthello]#ls

autoscan.logconfigure.scanhello.c

[root@localhosthello]#mvconfigure.scanconfigure.in

[root@localhosthello]#ls

autoscan.logconfigure.inhello.c

[root@localhosthello]#viconfigure.in

[root@localhosthello]#aclocal

[root@localhosthello]#ls

aclocal.m4autoscan.logconfigure.inhello.c

[root@localhosthello]#autoconf

[root@localhosthello]#ls

aclocal.m4autom4te.cacheautoscan.logconfigureconfigure.inhello.c

[root@localhosthello]#viMakefile.am

[root@localhosthello]#ls

aclocal.m4autom4te.cacheautoscan.logconfigureconfigure.inhello.cMakefile.am

[root@localhosthello]#automake--add-missing

configure.in:

installing`./install-sh'

configure.in:

installing`./mkinstalldirs'

configure.in:

installing`./missing'

Makefile.am:

installing`./depcomp'

[root@localhosthello]#ls

aclocal.m4auto

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1