嵌入式系统原理与应用.docx

上传人:b****1 文档编号:2649431 上传时间:2023-05-04 格式:DOCX 页数:40 大小:1.82MB
下载 相关 举报
嵌入式系统原理与应用.docx_第1页
第1页 / 共40页
嵌入式系统原理与应用.docx_第2页
第2页 / 共40页
嵌入式系统原理与应用.docx_第3页
第3页 / 共40页
嵌入式系统原理与应用.docx_第4页
第4页 / 共40页
嵌入式系统原理与应用.docx_第5页
第5页 / 共40页
嵌入式系统原理与应用.docx_第6页
第6页 / 共40页
嵌入式系统原理与应用.docx_第7页
第7页 / 共40页
嵌入式系统原理与应用.docx_第8页
第8页 / 共40页
嵌入式系统原理与应用.docx_第9页
第9页 / 共40页
嵌入式系统原理与应用.docx_第10页
第10页 / 共40页
嵌入式系统原理与应用.docx_第11页
第11页 / 共40页
嵌入式系统原理与应用.docx_第12页
第12页 / 共40页
嵌入式系统原理与应用.docx_第13页
第13页 / 共40页
嵌入式系统原理与应用.docx_第14页
第14页 / 共40页
嵌入式系统原理与应用.docx_第15页
第15页 / 共40页
嵌入式系统原理与应用.docx_第16页
第16页 / 共40页
嵌入式系统原理与应用.docx_第17页
第17页 / 共40页
嵌入式系统原理与应用.docx_第18页
第18页 / 共40页
嵌入式系统原理与应用.docx_第19页
第19页 / 共40页
嵌入式系统原理与应用.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

嵌入式系统原理与应用.docx

《嵌入式系统原理与应用.docx》由会员分享,可在线阅读,更多相关《嵌入式系统原理与应用.docx(40页珍藏版)》请在冰点文库上搜索。

嵌入式系统原理与应用.docx

嵌入式系统原理与应用

 

嵌入式系统原理与应用

实验报告

 

班级:

学号:

姓名:

 

实验一Linuxshell基本命令的使用

一、实验目的和要求

a)掌握用户系统常用命令。

b)掌握文件目录常用命令。

c)掌握压缩打包常用命令。

d)掌握网络相关命令。

二、实验内容和原理

a)登录系统,查看系统相关信息;

b)查询和更新系统用户数据;

c)创建文件目录和文件,并实现文件操作;

d)打包并解压文件

e)查询系统网络状态,并设置和更新

三、实验环境

a)硬件:

PC机

b)软件:

LINUX操作系统、虚拟机

四、算法描述及实验步骤

a)启动系统,打开终端;

b)查看系统信息,并将以下查看内容重定向添加到文件systemInfo.txt,最后清屏:

1、查看系统当前所有进程;

2、查看当前系统信息

3、查看硬盘分区情况

4、查看/etc/fstab文件

5、查看系统当前的网络地址

c)系统用户数据:

1、切换到root状态

2、创建用户(姓名拼间首字母加学号后两位,如张飞ZF01),密码是123456

3、进入新用户,并查看默认所在主目录及所有登录系统的用户

d)文件操作:

1、在当前用户的主目录下,创建文件夹Labl

2、进入Lab1文件夹,新建文件welcome.txt,写入“HelloZhangFei!

”保存退出

3、将b步骤生成的文件SystemInfo.txt,移动到Lab1文件夹,并设置文件权限为:

文件所有者可读写,其它为只读;并查看文件列表,权限是否设置

4、返回到当前用户的主目录

5、将Lab1文件夹打包生成tar.gz文件,并删除原文件夹

五、实验报告要求:

按实验步骤执行,在纸质实验报告上详细描述执行流程(使用命令及操作流程),并在电子版的实验报告上要求另加适当截图描述;

a)启动系统,打开终端;或使用putty连接系统(如果未安装ssh,可以使用sudoapt-getinstallssh):

运行Applications→Terminal

图1.1启动终端

b)查看系统信息,并将以下查看内容重定向添加到文件systemInfo.txt,最后清屏:

1、查看系统当前所有进程:

运行Terminal→ps→ps>>SystermInfo.txt

图1.2查看系统当前所有进程

2、查看当前系统信息:

运行Terminal→uname-a→uname–a>>SystermInfo.txt

图1.3查看当前系统信息

3、查看硬盘分区情况:

运行Terminal→fdisk

图1.4查看硬盘分区情况

4、查看/etc/fstab文件:

运行Terminal→cat/etc/fstab→cat/etc/fstab>>SystermInfo.txt

图1.5查看/etc/fstab文件

5、查看系统当前的网络地址:

运行Terminal→ifconfig→ifconfig>>SystermInfo.txt→clear

图1.6查看系统当前网络地址

c)系统用户数据:

1、切换到root状态:

运行Terminal→su-root→输入密码登录

图1.7切换到root状态

2、创建用户(姓名拼间首字母加学号后两位,如张飞ZF01),密码是123456:

运行Terminal→useradd–mdhy27→passwddhy27→输入并确定密码

图1.8创建用户

3、进入新用户,并查看默认所在主目录及所有登录系统的用户:

运行Terminal→su–dhy27→ls→who

图1.9进入新用户

d)文件操作:

1、在当前用户的主目录下,创建文件夹Labl:

运行Terminal→mkdirLabl

图1.10创建文件Labl

2、进入Lab1文件夹,新建文件welcome.txt,写入“HelloZhangFei!

”保存退出:

运行Terminal→viwelcome.txt

图1.11进入Labl文件

在vi模式下创建文件

图1.12在vi模式在创建文件

3、将b步骤生成的文件SystemInfo.txt,移动到Lab1文件夹,并设置文件权限为:

文件所有者可读写,其它为只读;并查看文件列表,权限是否设置:

运行Terminal→mv/home/dhy/SystermInfo.txt/home/dhy27/Labl

图1.13移动文件

运行Terminal→chmod644/home/dhy27/Labl/SystermInfo.txt→ls–l/home/dhy27/Labl

图1.14更改权限

4、返回到当前用户的主目录:

运行Terminal→sudhy27→pwd→cd→pwd

图1.15返回主目录

5、将Lab1文件夹打包生成tar.gz文件,并删除原文件夹:

运行Terminal→tar–cvftar.gz/home/dhy27/Labl→ls→rm–rLabl

图1.16打包文件

实验二GCC及GDB的使用

一、实验目的和要求

1.掌握VI编译环境。

2.掌握GCC编译命令。

3.掌握多个文件共同编译方法。

4.掌握GDB调试命令。

二、实验内容和原理

1.在VI编辑器里编写简单的“hello,world,Iam13050141XXXXX”,利用GCC编译为可执行文件,执行,观察运行结果。

2.在VI编辑器里编写多个文件(至少两个,其中一个为主程序,一个为需要调用的子程序),为其书写头文件,共同编译为可执行文件,执行,观察运行结果。

学习书写MAKEFILE文件,编译,执行,观察结果。

3.编写循环结构的程序,利用GCC编译(加参数-g)为可执行文件,利用GDB调试,学习GDB调试命令。

三.实验环境

1.硬件:

PC机

2.软件:

LINUX操作系统、虚拟机

四.实验步骤

  1.用vi编辑器新建hello.c文件,并用gcc编译器编译,执行,显示结果

图2.1执行hello

  2.makefile文件的编写,多文件编译执行

1)主程序部分

图2.2主程序

1)子程序部分

图2.3子程序

2)头文件部分

图2.4头文件

3)makefile的程序

图2.5Makefile的程序

    5)查看makefile的内容

图2.6查看makefile的内容

6)主程序,子程序的编译执行输出结果

图2.7执行结果

3.gdb的调试

 1)用vi编辑器新建tst.c文件

图2.8tst源程序

   2)使用gdbtst命令启动gdb调试

图2.9启动gdb调试

   3)使用gdbl命令列出源代码

图2.10使用gdbl命令列出源代码

   4)使用break16命令设置断点位置在16行;使用breakfunc,设置断点,在func函数入口处;使用infobreak查看断点信息;使用r命令,运行程序;使用n命令,单条语句执行;

图2.11使用断点

   5)使用c命令继续运行程序,使用pi命令打印变量i的值,print命令简写

图2.12使用继续指令

   6)使用bt命令查看函数堆栈

图2.13查看函数堆栈

   7)使用finish命令退出函数,使用q退出gdb调试。

图2.14使用finish命令退出函数

实验三交叉编译环境配置

一、实验目的和要求

熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。

使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。

二、实验内容

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

f)安装交叉编译器

g)配置超级终端,下载文件到目标机上。

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

硬件:

UP-TECHS2410/P270DVP嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。

软件:

REDHATLINUX9.0+超级终端+ARM-LINUX开发环境

四、实验步骤

1、虚拟机设置为桥接模式。

图3.1虚拟机设置为桥接模式

2、配置IP地址,设置为192.168.0.121

图3.2IP设置

图3.3配制以太网

3、关闭防火墙

操作如下:

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

图3.4关闭防火墙

4、打开桌面超级终端,配置COM1,115200波特率,8N1,实验箱插上电源线,网线与主机相连,串口线与主机串口1相连,开机,看bootloader程序VIVI是否自动加载,回车后进入命令提示符。

5、宿主机和目标机互相PING,看是否PING通

宿主机Ping192.168.0.121

超级终端Ping192.168.0.123

图3.5ping检验是否联通

6、安装NFS服务器,点击主菜单运行系统设置->添加/删除应用程序->服务器->服务器配置工具->system-config-nfs,system-config-samba,安装

图3.6安装NFS服务器

7、安装交叉编译器

利用U盘将提供的文件夹拷入系统中,虚拟机->可移动设备中将你的U盘连接上

建议的代码

fdisk-l(看SDB1出现没有)

mkdir/mnt/usb

mount-tvfat/dev/sdb1/mnt/usb-codepage=936,iocharset=cp936

cd/mnt/usb

./install.sh

运行完后卸载U盘

umount/dev/sdb1

图3.7安装交叉编译器

8、在超级终端下挂载文件夹

mount-tnfs-onolock192.168.0.103:

/liqing/host

实验四熟悉Linux开发环境

一、实验目的

熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。

使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。

二、实验内容

本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。

创建一个新目录,并在其中编写hello.c和Makefile文件。

学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。

下载已经编译好的文件到目标开发板上运行。

三、预备知识

C语言的基础知识、程序调试的基础知识和方法,Linux的基本操作。

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

硬件:

UP-CUPS2410经典平台、PC机Pentium500以上,硬盘10G以上。

软件:

PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境

五、实验步骤

1、建立工作目录

4.1建立工作目录

2、编写程序源代码

我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:

图4.2编辑代码

按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc键进入命令状态,再用命令“:

wq”保存并退出。

这样我们便在当前目录下建立了一个名为hello.c的文件。

3、编写Makefile

要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。

使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译,当然我们本次实验只有一个文件,它还不能体现出使用Makefile的优越性,但当工程比较大文件比较多时,不使用Makefile几乎是不可能的。

下面我们介绍本次实验用到的Makefile文件。

CC=armv4l-unknown-linux-gcc

EXEC=hello

OBJS=hello.oCFLAGS+=–g

LDFLAGS+=–static

all:

$(EXEC)

$(EXEC):

$(OBJS)

$(CC)$(LDFLAGS)-o$@$(OBJS)

clean:

-rm-f$(EXEC)*.elf*.gdb*.o

下面我们来简单介绍这个Makefile文件的几个主要部分:

eCC指明编译器

eEXEC表示编译后生成的执行文件名称

eOBJS目标文件表eCFLAGS编译参数eLDFLAGS连接数eall:

编译主入口

eclean:

清除编译结果

与上面编写hello.c的过程类似,用vi来创建一个Makefile文件并将代码录入其中

4、编译应用程序

在上面的步骤完成后,我们就可以在hello目录下运行“make”来编译我们的程序了。

如果进行了修改,重新编译则运行:

图4.3编译应用程序

5、下载调试

在宿主PC计算机上启动NFS服务,并设置好共享的目录,具体配置请参照前面第一章第四节中关于嵌入式Linux环境开发环境的建立。

在建立好NFS共享目录以后,我们就可以进入超级终端中建立开发板与宿主PC机之间的通讯了。

再进入/mnt目录运行刚刚编译好的hello程序,查看运行结果。

图4.4运行结果

 

实验五串行端口程序设计

一、实验目的

了解在linux环境下串行程序设计的基本方法。

掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。

学习使用多线程来完成串口的收发处理。

二、实验内容

学习终端I/O函数的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。

发送自己的学号给串口。

三、预备知识

有C语言基础。

掌握在Linux下常用编辑器的使用。

掌握Makefile的编写和使用。

掌握Linux下的程序编译与交叉编译过程

四、实验设备及工具

硬件:

UP-CUPS2410经典平台、PC机Pentium500以上,硬盘10G以上。

软件:

PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境

五、程序分析

本实验的程序流程图如下:

图5.1实验流程图

本实验的代码如下:

#include

#include

#include

#include

#include

#include

#defineBAUDRATEB115200

#defineCOM1"/dev/ttyS0"

#defineCOM2"/dev/ttyS1"

#defineENDMINITERM27

#defineFALSE0

#defineTRUE1

volatileintSTOP=FALSE;volatileintfd;

voidchild_handler(ints)

{

printf("stop!

!

!

\n");STOP=TRUE;

}

void*receive(void*data)

{

intc;

printf("readmodem\n");while(STOP==FALSE)

{

read(fd,&c,1);/*comport*/write(1,&c,1);/*stdout*/

}

printf("exitfromreadingmodem\n");returnNULL;

}

intmain(intargc,char**argv)

{

structtermiosoldtio,newtio,oldstdtio,newstdtio;structsigactionsa;

intok;

pthread_tth_a,th_b,th_c;void*retval;

if(argc>1)

fd=open(COM2,O_RDWR);else

fd=open(COM1,O_RDWR);//|O_NOCTTY|O_NONBLOCK);

if(fd<0){

error(COM1);exit(-1);

}

tcgetattr(0,&oldstdtio);

tcgetattr(fd,&oldtio);

tcgetattr(fd,&newstdtio);

newtio.c_cflag=BAUDRATE|CRTSCTS|CS8|CLOCAL|CREAD;

newtio.c_iflag=IGNPAR;

newtio.c_oflag=0;

newtio.c_lflag=0;

newtio.c_cc[VMIN]=1;

newtio.c_cc[VTIME]=0;

tcflush(fd,TCIFLUSH);

tcsetattr(fd,TCSANOW,&newtio);

sa.sa_handler=child_handler;

sa.sa_flags=0;

sigaction(SIGCHLD,&sa,NULL);

pthread_create(&th_a,NULL,keyboard,0);

pthread_create(&th_b,NULL,receive,0);

pthread_create(&th_c,NULL,send,0);

pthread_join(th_a,&retval);

pthread_join(th_b,&retval);

pthread_join(th_c,&retval);

tcsetattr(fd,TCSANOW,&oldtio);

tcsetattr(0,TCSANOW,&oldstdtio);

close(fd);

exit(0);

}

六、实验步骤

1、打开串口

在Linux下串口文件位于/dev下,一般在老版本的内核中串口一为/dev/ttyS0,串口二为/dev/ttyS1,在我们的开发板中串口设备位于/dev/tts/下,因为开发板中没有ttyS0这个设备,所以我们要建立一个连接,方法如下:

[/mnt/yaffs]cd/dev

[/dev]ln–sf/dev/tts/0ttyS0

2、编写代码(如上)

3、编译连接

图5.3编译链接

4、下载调试

[/mnt/yaffs]mount-tnfs-onolock192.168.0.103/arm2410cl/host

[/mnt/yaffs]cd/host/exp/basic/03_tty/

[/host/exp/basic/03_tty]./term

七、实验结果

图5.4实验结果

 

实验六A/D接口实验

一、实验目的

了解在linux环境下对S3C2410芯片的8通道10位A/D的操作与控制。

二、实验内容

学习A/D接口原理,了解实现A/D系统对于系统的软件和硬件要求。

阅读ARM芯片文档,掌握ARM的A/D相关寄存器的功能,熟悉ARM系统硬件的A/D相关接口。

利用外部模拟信号编程实现ARM循环采集全部前4路通道,并且在超级终端上显示。

三、预备知识

有C语言基础。

掌握在Linux下常用编辑器的使用。

掌握Makefile的编写和使用。

掌握Linux下的程序编译与交叉编译过程。

四、实验设备及工具

硬件:

UP-CUPS2410经典平台、PC机Pentium500以上,硬盘10G以上。

软件:

PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境

五、程序代码

ad驱动对用户来说只是下面的一个文件结构。

在用户程序里只需要用到open、read、write、release等内核函数即可。

本实验采用的是模块方式加载,可以在实验箱的/mnt/yaffs/ad/中找到AD的驱动程序。

main.c的代码如下:

#include

#include

#include

#include

#include

#include

#include

#include"s3c2410-adc.h"

#defineADC_DEV"/dev/adc/0raw"staticintadc_fd=-1;

staticintinit_ADdevice(void)

{

if((adc_fd=open(ADC_DEV,O_RDWR))<0){

printf("Erroropening%sadcdevice\n",ADC_DEV);return-1;

}

}

staticintGetADresult(intchannel)

{

intPRESCALE=0XFF;

intdata=ADC_WRITE(channel,PRESCALE);write(adc_fd,&data,sizeof(data));read(adc_fd,&data,sizeof(data));

returndata;

}

staticintstop=0;

staticvoid*comMonitor(void*data)

{

getchar();stop=1;returnNULL;

}

intmain(void)

{

inti;floatd;

pthread_tth_com;void*retval;

//sets3c44b0ADregisterandstartADif(init_ADdevice()<0)

return-1;

/*Createthethreads*/

pthread_create(&th_com,NULL,comMonitor,0);printf("\nPressEnterkeyexit!

\n");

while(stop==0){

for(i=0;i<=2;i++){//采样0~2路A/D值d=((float)GetADresult(i)*3

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2