嵌入式linux实验报告
姓名:梅发同
学号:0942826124
一实验目的:
1.熟悉嵌入式系统硬件实验平台
2.掌握超级终端配置方法。
3. 掌握嵌入式系统开发环境配置,ARM-Linux下NFS服务器的配置方法
4. 掌握常用的 Linux下shell命令
二实验设备及工具:
硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境
三实验内容 :
(1)掌握嵌入式系统实验平台上的各类借接口的位置;
(2)配置windows的超级终端,熟悉vivi的命令行,bootload、kernel、root和用户程序的介绍;
(3)配置linux的终端,配置网络服、Ip地址,开发目录共享,挂载等。
四实验结果分析
配置windows的超级终端
输入终端名称
选择COM1接口
设置COM1属性
打开虚拟机,启动linux。
新建终端,输入minicom启动实验箱
设置ip并且在minicom下ping通主机
设置网络服务
取消防火墙
选中NFS
设置共享文件夹
在主机编译运行程序hello word
Hello.c 源代码如下:
在target上挂载主机开发目录上嵌入式程序到实验箱,运行Mount –t nfs 主机IP:/开发目录 /host
cd /host
运行程序
交叉编译完成
实验心得:实验中应注意需要将编译的程序文件挂载到开发板,才能在ARM里找到我们需要运行的文件。还要注意区分gcc和armv4l-unknown-linux-gcc编译器的区别。只有用armv4l-unknown-linux-gcc编译的才能在开发板上运行。
一实验目的:
1.掌握嵌入式Linux软件设计方法原理
2.掌握Makefile文件设计方法。
3. 熟悉Linux下静态库和共享库的设计
二实验设备及工具:
硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境
三实验内容 :
(1)编写一个带输入、输出的由5个文件组成的嵌入式软件;
(2)写好makefile文件,并上机调试;
(3)用变量指明两种编译器。
四实验结果分析:
1 在宿主机(PC)上建立用户开发目录,编写嵌入式程序文件,3个C文件+2个头文件。
2 编写Makefile文件,要求Makefile文件实现这5个文件的编译,有clean 和intall 选项,用变量选择86和arm编译器指明CC= gcc或CC= armv4l-unknown-linux-gcc
arm编译:
gcc编译:
3 编译程序,并下载到实验箱上执行
mount –t nfs 主机ip:/开发目录 /host。
在主机里运行
挂载后在目标板里运行
实验心得
Makefile文件在实验中可以修改,比如将input.o:input.c这样重复的内容删掉。将重复使用的东西赋给一个变量,之后只要用$()引用这个变量即可。注意makefile里选择gcc编译还是用arm gcc编译。如果是在本机上运行,则使用gcc编译,若是挂载到开发板运行,则要用arm-unknown-linux-gcc编译,然后像第一次实验一样挂载运行,就可以成功完成。
一实验目的
1学习在 LINUX 下进行驱动设计的原理
2掌握使用模块方式进行驱动开发调试的过程
3了解在 linux 环境下对S3C2410 芯片的8 通道10 位A/D 的操作与控制。
二实验设备及工具:
硬件:UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:PC机操作系统REDHAT LINUX 9.0 、MINICOM 、AMRLINUX开发环境
三实验内容
1在 PC 机上编写简单的虚拟硬件驱动程序并进行调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。
四实验结果分析
驱动实验:
修改makefile文件
修改驱动文件
编译驱动,make
生成可执行文件,测试该文件
实验心得:
实验时要将驱动程序copy出来,否则如果运行不当的话会破坏系统。
实验六嵌入式GUI
一、实验目的
1. 了解在 Linux 下安装Qt 的基本步骤;
2. 学会在Qt 环境在X11 平台下程序设计的方法;
二、实验内容
1. 在本机 Linux 下编译和使用Qt 例程;
2. 在本机环境下编译和运行一个程序并显示运行结果;
三、预备知识
1. 熟悉使用 C++语言程序设计;
2. 掌握Linux 下常用编辑器的使用;
3. 掌握Linux 下程序编译;
4. 熟悉Qt 程序设计;
四、实验室设备和工具
硬件:UP-ARM2410CL、PC 机Pentumn500 以上, 硬盘80G 以上。
软件:PC 机操作系统RHEL4 +超级终端(或X-shell) + ARM-Linux 开发环境
qt-x11-opensource-src-4.4.0.tar.gz arm-linux-gcc-3.4.6-glibc-2.3.6
五、实验步骤
编译 QT-X11 环境
在Trolltech 公司的网站上可以下载该公司所提供的Qt/Embedded 的免费版本,在安装
产品光盘以后,本次实验目录下已有要下载的文件,在/arm2410cl/gui/src 下。在做实验
前把本次实验用到的qt-x11-opensource-src-4.4.0.tar.gz 文件拷贝到
/home/sprife/qt4/for_pc 目录下。
实验具体目录可以自行定义,拷贝库文件:
#cd /home/
#mkdir sprife
#cd sprife
#mkdir qt4
#cd qt4
#mkdir for_pc
#cd for_pc
#cp /arm2410cl/gui/Qt/src/qt-x11-opensource-src-4.4.0.tar.gz ./
Qt 本机环境的搭建需要以下几步:
#tar xzvf qt-x11-opensource-src-4.4.0.tar.gz
#cd qt-x11-opensource-src-4.4.0
#./configure -prefix /usr/local/Trolltech/Qt-x11-4.4.0 //这里自行新建目
录Trolltech/Qt-x11-4.4.0
出现安装提示时选择yes 注意大小写
#gmake
#gmake install
./configure 是对Qt 进行配置,它包括很多选项,例如可以通过添加“ -no-opengl”等,
上面命令中的-prefix 参数指定Qt-x11 环境的安装目录。如果想要进一步了解可以通过键
入 ./configure --help 来获得更多的帮助信息。
gmake 与gmake insall 命令分别是编译与安装QT 环境
如果上面各步都能够成功的编译通过,下面就可以通过运行Qt/Embedded 自带的demo
来查看运行结果。
#cd /home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/examples/widgets/wiggly/
#./wiggle
将上面的步骤完成后,我们就已经建立好了在本机上开发Qt 应用程序的环境,下面我
们通过编写一个“Hello”的程序来了解Qt 程序设计。
Hello, Qt!
我们以一个非常简单的 Qt 程序开始Qt 的学习。我们首先一行行的分析代码,然后我们
将会看到怎样编译和运行这个程序。
1 #include <QApplication>
2 #include <QLabel>
3 int main (int argc, char *argv [])
4 {
5 QApplication app (argc, argv);
6 QLabel *label = new QLabel ("Hello Qt!");
7 label->show ();
8 return app. exec ();
9 }
第 1 行和第2 行包含了两个类的定义:QApplication 和QLabel。对于每一个Qt 的类,
都会有一个同名的头文件,头文件里包含了这个类的定义。因此,你如果在程序中使用了
一个类的对象,那么在程序中就必须包括这个头文件。
第3 行是程序的入口。几乎在使用Qt 的所有情况下,main()函数只需要在把控制权转
交给Qt 库之前执行一些初始化,然后Qt 库通过事件来向程序告知用户的行为。argc 是命
令行变量的数量,argv 是命令行变量的数组。这是一个C/C++特征。它不是Qt 专有的,无
论如何Qt 需要处理这些变量
第5 行定义了一个QApplication 对象App。QApplication 管理了各种各样的应用程序
的广泛资源,比如默认的字体和光标。App 的创建需要argc 和argv 是因为Qt 支持一些自
己的命令行参数。在每一个使用Qt 的应用程序中都必须使用一个QApplication 对象,并
且在任何Qt 的窗口系统部件被使用之前创建此对象是必须的。App 在这里被创建并且处理
后面的命令行变量(比如在X 窗口下的-display)。请注意,所有被Qt 识别的命令行参数
都会从argv 中被移除(并且argc 也因此而减少)。
第6 行创建了一个QLabel 窗口部件(widget),用来显示“Hello,Qt!”。在Qt 和Unix
的术语中,一个窗口部件就是用户界面中一个可见的元素,它相当于Windows 术语中的“容
器”加上“控制器”。按钮(Button)、菜单(menu)、滚动条(scroll bars)和框架(frame)
都是窗口部件的例子。窗口部件可以包含其它的窗口部件。例如,一个应用程序界面通常
就是一个包含了QMenuBar,一些QToolBar,一个QStatusBar 和其它的一些部件的窗口。绝
大多数应用程序使用一个QMainWindow 或者一个QDialog 作为程序界面,但是Qt 允许任何
窗口部件成为窗口。在这个例子中,QLabel 窗口部件就是作为应用程序主窗口的。
第7 行使我们创建的QLabel 可见。当窗口部件被创建的时候,它总是隐藏的,必须调
用show()来使它可见。通过这个特点我们可以在显示这些窗口部件之前定制它们,这样就
不会出现闪烁的情况。
第8 行就是main()将控制权交给Qt。在这里,程序进入了事件循环。事件循环是一种
stand-by 的模式,程序会等待用户的动作(比如按下鼠标或者是键盘)。用户的动作将会产
生程序可以做出反应的事件(也被称为“消息”)。程序对这些事件的反应通常是执行一个
或几个函数。
为了简单起见,我们没有在main()函数的结尾处调用delete 来删除QLabel 对象。这
种内存泄露是无害的,因为像这样的小程序,在结束时操作系统将会释放程序占用的内存
堆。
下面我们来编译这个程序。建立一个名为hello 的目录,在目录下建立一个名为
hello.cpp 的c++源文件,将上面的代码写入文件中。
#cd /home/sprife/
#mkdir hello
#vi hello.c
编辑hello.c 源文件,填入上述9 行代码
编译程序
#/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake -project
#/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake
#make
运行程序
#./hello
Qt也支持XML。我们可以把程序的第6 行替换成下面的语句:
QLabel *label = new QLabel ("<h2><i>Hello</i> " "<font color=red>Qt! </font></h2>");
重新编译程序,我们发现界面拥有了简单的 HTML 风格。
嵌入式原理与设计实验报告书
1 实验名称:IIC的应用
2实验目的:熟悉通过IIC通信协议,单品机利用这通信协议对EPROM进行读和写!
3 实验步骤:
// 写该程序的头文件
#define uchar unsigned char
#define uint unsigned int
sbit scl=P1^5; // 单片机与EPROM的共用时钟线 sbit sda=P3^6; // 单片机与EPROM的共用数据线
void delay_10us() // 10个的单片机的指令周期
{
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
void start() // IIC通信协议初始化
{
sda=1;
scl=1;
delay_10us();
sda=0;
delay_10us();
scl=0;
}
void stop() //关闭读和写
{
sda=0;
scl=1;
delay_10us();
sda=0;
delay_10us();
}
void respond(uchar x) //读后或写后的返回 {
sda=(x)& 0x01;
delay_10us();
scl=1;
delay_10us();
scl=0;
}
uchar iic_write_byte(uchar wdata) //往EPROM写进一个字节
{
uchar bit_cnt;
for(bit_cnt=0;bit_cnt<8;bit_cnt++)
{
if(wdata & 0x80) sda=1;
else sda=0;
wdata<<=1;
delay_10us();
scl=1;
delay_10us();
scl=0;
}
delay_10us();
sda=1;
scl=1;
delay_10us();
if(sda==1) bit_cnt=0;
else bit_cnt=1;
scl=0;
return bit_cnt;
}
uchar iic_read_byte(void) // 往EPROM读出一个字节{
uchar bit_cnt,rdata;
sda=1;
for(bit_cnt=0;bit_cnt<8;bit_cnt++)
{
scl=0;
delay_10us();
scl=1;
delay_10us();
rdata<<=1;
if(sda==1) rdata|=0x01;
delay_10us();
}
scl=0;
return rdata;
}
uchar iic_read_str(uchar sla,uchar suba,uchar *s,uchar len) 往EPROM读出一组字符 //
{
uchar i;
start();
if(iic_write_byte(sla)==0) return 0;
if(iic_write_byte(suba)==0) return 0; start();
if(iic_write_byte(sla|0x01)==0) return 0; for(i=0;i<len-1;i++)
{
*s++=iic_read_byte();
respond(0);
}
*s=iic_read_byte();
respond(1);
stop();
return 1;
}
uchar iic_write_str(uchar sla,uchar suba,uchar // 往EPROM写进一组字符
{
uchar i;
start();
if(iic_write_byte(sla)==0)
return 0;
if(iic_write_byte(suba)==0)
return 0;
for(i=0;i<len;i++)
{
if(iic_write_byte(*s++)==0) *s,uchar len)
return 0;
}
stop();
return 1;
}
//程序的源文件 #include<reg52.h>
#include<intrins.h>
#include<absacc.h>
#include"ming.h"
uchar code table[10]
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit dg=P3^2;
uchar symptom;
a[1]={0}; // 定义数组来记录数字的大小 void delay_ms(uint z) // 延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void initial() // 外部中断0的初始化
{
EA=1;
EX0=1; =
IT0=1;
}
void breaing() interrupt 0 // 外部中断0的处理 {
EX0=0;
delay_ms(10);
if(dg==0)
symptom=1;
delay_ms(100);
EX0=1;
}
void main(void) // 主函数
{
iic_read_str(0xa0,0,a,1);
initial();
while(1)
{
if(symptom==1)
{
symptom=0;
a[0]++;
if(a[0]==100) a[0]=0;
iic_write_str(0xa0,0,a,1);
}
P2=0;
P0=table[a[0]/10];
delay_ms(1);
P2=1;
P0=table[a[0]%10];
delay_ms(1);
}
}
4 调试
在对字符的存储过程中,要有明确的指针(地址)。单片机才能对其进行读和写的操作。
比如在源文件的主函数定义 *p(对写进行记录),*s(对读进行记录)—— 这样的方法的不行的!在只有定义的存放的数据的地址才能对他进行操作!比如在源文件定义了啊a[1]={0}
5心得体会
通过该实验我明白了单片机是如何利用iic协议来对EPROM进行读写。同时,在编程过程中的一些不好的习惯得以改正!
武汉大学计算机学院08级嵌入式系统设计实验报告班级08级计科5班指导老师武小平学期20xx20xx第1学期小组成员目录一设计题目选…
嵌入式系统实验报告姓名:##学号:##班级:计算机科学与技术非师范121班实验一LCD控制一、实验目的1、初步掌握液晶显示屏的使用…
嵌入式实验报告姓名邓庆学号1075490019学院通信工程学院实验一电源复位时钟管理单元一实验目的1了解如何配置不同的时钟2如何使…
嵌入式系统实验报告学院测量与通信工程学院专业信号与信息处理学生姓名姜元学号1320xx0050指导教师董静薇一实验目的了解Boot…
嵌入式系统实验报告小组成员指导老师实验三键盘及LED驱动实验一实验目的1学习键盘及LED驱动原理2掌握ZLG7289芯片的使用方法…
这学期才接触嵌入式系统感觉还称不上入门,我通过学习知道了嵌入式的发展前景很大,各个领域都用到了嵌入式,学好嵌入式不愁没饭吃。广义上…
嵌入式心得体会嵌入式心得体会一嵌入式学习心得体会4月10号为期一个阶段的Linux开发基础培训课程圆满结束回首这些天所留下的点点滴…
嵌入式系统原理实验总结报告车辆座椅控制系统实验20xx523嵌入式系统原理实验总结报告一技术性总结报告一题目车辆座椅控制系统实验二…
中国地质大学北京实验报告课程名称嵌入式系统实验名称嵌入式LinuxSocket编程姓名杨森学号1010102115班级101010…
嵌入式系统设计实验报告班级学号姓名成绩指导教师1实验一11实验名称博创UP3000实验台基本结构及使用方法12实验目的1学习嵌入式…
嵌入式实训总结20xx年x月我参加了学校安排的课题实训,基地在北京,学院安排我们集体坐火车一同前去,浩浩荡荡的队伍开始出发了。刚来…