嵌入式大作业.docx
《嵌入式大作业.docx》由会员分享,可在线阅读,更多相关《嵌入式大作业.docx(7页珍藏版)》请在冰豆网上搜索。
![嵌入式大作业.docx](https://file1.bdocx.com/fileroot1/2022-12/15/9aa7b884-b2eb-4f90-9780-8b3400ace5ee/9aa7b884-b2eb-4f90-9780-8b3400ace5ee1.gif)
嵌入式大作业
目录
一、嵌入式系统开发概述.........................................3
1.1嵌入式系统的概念...........................................3
1.2嵌入式系统的特点...........................................3
1.3嵌入式与PC的不同..........................................3
二、宿主机系统开发环境的建立...................................5
2.1安装LINUX发行版本REDHATLINUX..............................5
2.2安装跨平台开发工具链.......................................5
2.3配置宿主机的网络环境WINDOWS和LINUX之间可以互相联通.........6
三、目标机最小系统的建立和安装.................................7
3.1BOOTLOADER的烧写...........................................7
3.2烧写内核zImage(KERNEL)....................................7
3.3烧写根文件系统(ROOT)......................................7
3.4烧写应用程序...............................................7
四、嵌入式系统应用程序的开发...................................8
一、嵌入式系统开发概述
嵌入式系统是集成电路发展过程中的一个标志性成果,它把计算机直接嵌入到应用系统中,融合了计算机软/硬件技术、通信技术和微电子技术,是一种微电子产业和信息技术产业的最终产品。
微电子产业是许多国家优先发展的产业。
以超深亚微米工艺和IP核复用技术为支撑的系统芯片技术是国际超大规模集成电路发展的趋势和21世纪集成技术的主流。
1.1嵌入式系统的概念
嵌入式系统就是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适合应用系统对功能、可靠性、成本、体积、功耗等严格要求的一种专用计算机系统。
它一般由以下几部分组成:
●嵌入式微处理器;
●外围硬件设备;
●嵌入式操作系统;
●特定的应用程序。
1.2嵌入式系统的特点
●系统内核小
●专用性强
●系统精简
●高实时性的系统软件是嵌入式软件的基本要求
●需使用多任务的操作系统
●需要开发工具和环境
1.3嵌入式与PC的不同
●一般专用于特定的任务,而PC是一个通用计算机
●使用多种类型的处理器和处理器体系结构
●极其关注成本
●有实时约束
●使用实时多任务操作系统
●软件故障造成的后果比PC系统更严重
●大多有功耗约束
●经常在极端的环境下运行
●系统资源比PC少的多
●通常所有的目标代码存放在ROM中
●需要专用工具和方法进行开发设计
●嵌入式系统的数量远远超过PC
二、宿主机系统开发环境的建立
嵌入式交叉编译环境依据宿主机的不同,可以分为基于linux和windows环境下的交叉编译环境。
我们这学期主要学习了在Linux下的嵌入式开发,所以本文主要阐述基于Linux的宿主机系统开发环境的建立。
基于我们的实验环境,我们采用在windows下安装虚拟机来运linux操作系统,因此构建宿主机系统开发环境的前提是先安装虚拟机。
然后是在虚拟上安装我们所需要的linux操作系统。
其开发步骤如下:
2.1安装linux发行版本redhatlinux
由于开发环境限制,需在XP系统上安装redhatlinux虚拟机,安装过程步骤较多难度较低,故略去。
。
。
2.2安装跨平台开发工具链
由于嵌入式开发系统的限制,在裁剪和定制嵌入式linux系统之前,通常要先在pc机上建立一个用于目标机的交叉编译环境,也就是将各种二进制工具程序集成为工具链。
其中包括连接器(ld)、汇编(as)、编译器(gcc)以及链接库(glibc)等。
Linux使用GNU的工具,先行者们已经编译出了常用体系结构的工具链,在网上可以下载这些工具,建立交叉开发环境。
我们实验用的是arm-inux-gcc工具。
其安装步骤如下:
1、利用文件夹共享,找到并运行可执行文件
mnt/hgfs/yaffs/Linux7.2/install.sh
实现交叉编译环境的安装。
2、在配置文件profile中修改环境变量PATH。
3、注销登录。
2.3配置宿主机的网络环境windows和linux之间可以互相联通
a、Windows的IP地址要与linux的IP地址位于同一个网段,这是两者之间相互通信的前提。
b、NFS网络服务可以使用;
设置虚拟机在windows里的共享目录,然后在linux里配置NFS服务,并通过servicenfsrestart命令启动NFS服务。
c、关闭防火墙
三、目标机最小系统的建立和安装
3.1bootloader的烧写
a、安装驱动:
拷贝文件—添加硬件
b、利用烧写工具烧写:
sjf2410-s/f:
安装盘自定
c、利用串口:
分区、重新烧写bootloader
d、重启开发板。
3.2烧写内核zImage(kernel)
a、通过bootloader命令,利用串口烧写内核
b、loadflashkernelx
c、重新启动开发板
3.3烧写根文件系统(root)
a、通过bootloader命令,利用串口烧写内核
b、loadflashrootx
c、重新启动开发板
3.4烧写应用程序
可以利用ftp服务,直接把应用程序下载到目标机上。
特点是速度快
四、嵌入式系统应用程序的开发
嵌入式系统的开发包含驱动程序的开发、应用程序的开发、图形界面的开发。
驱动程序的开需要在了解硬件结构和工作方式的基础上进行驱动程序的开发,应用程序的开发是在驱动装好的基础上,实现特定的功能,需要编写源程序和makefile文件,图形界面的开发是编写嵌入式系统的应用图形化界面。
开发一个应用程序:
1、编写源文件
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;
}
2、编写Makefile文件
myprogone:
star.ohello.o
gcc-omyprogonestar.ohello.o
hello.o:
hello.chello.hstarfun.h
star.o:
star.cstarfun.h
clean:
rm-f*.o
检验程序是否正确,先在目标机上运行,检验下能否输出预期的设计效果,如果正确,改写Makefile文件,生成能在目标机上运行的嵌入式应用程序,其改写方法如下:
myprogone:
star.ohello.o
arm-linux-gcc-omyprogonestar.ohello.o
hello.o:
hello.chello.hstarfun.h
star.o:
star.cstarfun.h
clean:
rm-f*.o
3、运用已经搭建好的环境,把生成的myprogone文件烧写在目标板上,然后运行该应用程序即可。
实验结果:
*
***
*****
*******
*****
***
*
*
***
*****
*******
hello,myfriends