嵌入式Linux系统开发与应用 教学课件 ppt 作者 康维新 第3章 开发环境的建立

上传人:E**** 文档编号:89494336 上传时间:2019-05-25 格式:PPT 页数:68 大小:2.05MB
返回 下载 相关 举报
嵌入式Linux系统开发与应用 教学课件 ppt 作者 康维新 第3章 开发环境的建立_第1页
第1页 / 共68页
嵌入式Linux系统开发与应用 教学课件 ppt 作者 康维新 第3章 开发环境的建立_第2页
第2页 / 共68页
嵌入式Linux系统开发与应用 教学课件 ppt 作者 康维新 第3章 开发环境的建立_第3页
第3页 / 共68页
嵌入式Linux系统开发与应用 教学课件 ppt 作者 康维新 第3章 开发环境的建立_第4页
第4页 / 共68页
嵌入式Linux系统开发与应用 教学课件 ppt 作者 康维新 第3章 开发环境的建立_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《嵌入式Linux系统开发与应用 教学课件 ppt 作者 康维新 第3章 开发环境的建立》由会员分享,可在线阅读,更多相关《嵌入式Linux系统开发与应用 教学课件 ppt 作者 康维新 第3章 开发环境的建立(68页珍藏版)》请在金锄头文库上搜索。

1、第3章 开发环境的建立,第3章 开发环境的建立,3.1 基于ARM9的博创2410s开发实验平台 3.2 ARM与宿主机的通信 3.3 交叉编译环境的建立 3.4 Boot Loader技术 3.5 ARM-Linux内核的编译与移植 3.6 根文件系统的建立与烧写 3.7 建立嵌入式Linux应用程序,3.1 基于ARM9的博创2410s开发实验平台,表3-1 UP-NETARM2410s开发平台硬件配置,3.1 基于ARM9的博创2410s开发实验平台,3.2 ARM与宿主机的通信,由于主机与目标板是两个独立的个体,要想在它们之间传输数据,就必须首先建立某种数据连接,才能实现通信、文件传输

2、等功能。通常,在目标板和主机之间可以使用串口、以太网接口、USB接口和JTAG接口等连接方式。 3.2.1 串口通信 Linux环境串口通信的工具主要有minicom、picocom等。 3.2.2 以太网接口 3.2.3 USB接口 3.2.4 JTAG接口,3.3 交叉编译环境的建立,交叉开发环境的模型如图所示,TARGET就是目标板,HOST是开发主机。在开发主机上,可以安装开发工具,编辑、编译目标板的Linux引导程序(Bootloader)、内核(Kernel)和文件系统,然后在目标板上运行。通常这种在主机环境下开发,在目标板上运行的开发模式叫作交叉开发。本节主要讲解在Linux中编

3、译环境的建立。,3.3.1 宿主机环境搭建,1基于PC机Windows操作系统的Cygwin; Cygwin是一个在Windows平台上运行的UNIX模拟环境,是Cygnus solutions公司开发的自由软件。它的主要目的是将GNU工具集移植到Win32系统上来。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对Cygwin产生了兴趣。 对普通用户而言,Cygwin提供了一组UNIX工具,运行时可以将Windows系统变成一部UNIX主机。Cygwin几乎包含了所有的Linux系统下可用的软件包,包括各种开发工具。这些程序和源代码均可免费获得。 要安装最新版的Cygwin,可以到http

4、:/ Cygwin Now!”。这样会先下载一个叫做Setupexe的GUI安装程序,可以下载一个完整的Cygwin(我们的光盘里有提供Cygwin软件)。单击Cygwin目录下的“SETUP.EXE文件,将弹出如图所示的窗口。,3.3.1 宿主机环境搭建,2在windows下安装虚拟机(VMware虚拟机环境)后,再在虚拟机上安装Linux操作系统。 VMware workstation是VMware公司设计的专业虚拟机,可以在Windows平台上为几乎任何的其他操作系统提供虚拟运行环境。顾名思义,只要物理主机的内存、CPU等配置足够,就可以在Windows平台上,再“虚拟”出一台或多台“P

5、C机”,而且使用简单,容易上手,是目前用得非常广泛的工具软件。,3.3.1 宿主机环境搭建,3直接安装Linux操作系统。,一般会用到两个桌面操作系统,即linux和windows操作系统,其中Linux主要有Redhat/Fedora、Suse、Mandrake等发行版本。 (1)Windows与Linux的双重启动; (2)为Linux操作系统准备硬盘空间。 在一台PC机上安装Linux,建议使用RedHat Linux9.0版本。选择Custom定制方式,进行完全安装,在选择软件Package时选择最后一项everything,即完全安装。再配置好网络、TFTP服务和NFS(Enable

6、 Running)。网络配置主要是安装好以太网,对于一般常见的如RTL8139网卡,RedHat Linux 9.0可以自动识别并安装,完全不需要用户参与,因此建议使用该网卡。然后配置宿主机IP地址(假设IP地址为192.168.2.100),在Linux命令行(即终端方式下),键入以下命令:# ifconfig eht0 192.168.2.100 配置完成后,简单测试一下NFS是否配置好,可以在宿主机根目录/命令行下执行以下命令:# mount 192.168.2.100:/mnt 注意:对于RedHat Linux 9.0,它默认安装是打开了防火墙,因此对于外来的IP访问它全部拒绝,这样

7、其他网络设备根本无法访问它,即无法用NFS mount它,无法通过TFTP进行下载,无法telnet、ftp等等。因此网络安装完毕后,应立即关闭防火墙。 然后转到/mnt/目录下看是否可以列出/目录下的所有文件和目录,如果可以则说明mount成功,NFS配置成功;否则应首先配置好NFS。,3.3.2交叉编译环境的建立,交叉编译环境是由一个编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要包括针对目标系统的编译器GCC、目标系统的二进制工具binutils、目标系统的标准C库Glibc和目标系统的Linux内核头文件。 在建立交叉编译环境之前,首先要下载包括GCC、binutils、Gl

8、ibc(如ftp.gnu.org)及Linux(如ftp.kernel.org)内核在内的源代码,尽量选用较新版本,Glibc和内核源代码的版本必须与目标机上实际使用的版本保持一致,并设定shell变量PREFIX指定可执行程序的安装路径。,3.3.2交叉编译环境的建立,基于ARM平台的交叉工具链,这里将其目标平台名为arm-linux-gnu,比如arm-linux-gcc、arm-linux-gdb等。 分步构建交交叉开发工具链的整个过程: 1.下载源代码 到相关的网站下载包括binutils、gcc、glibc(如ftp.gnu.org)及linux(如ftp.kernel.org)内核

9、的源代码。注意:glibc和内核源代码的版本必须与目标机上实际使用的版本保持一致。,3.3.2交叉编译环境的建立,2.建立环境变量 声明以下环境变量的目的是在之后编译工具库的时候用到,很方便输入,尤其是可以降低输错路径的风险。 3.配置、安装binutils inutils是GNU工具之一,它包括连接器、汇编器和其他用于目标文件和档案的工具,它是二进制代码的维护工具。安装Binutils工具包含的程序有addr2line、ar、as、c+filt、gprof、ld、mm、 objcopy、ranlib、 readelf、size、strings、strip、libiberty、libbfd和l

10、ibopcodes。,3.3.2交叉编译环境的建立,4.配置linux内核头文件 编译器需要通过系统内核的头文件来获得目标平台所支持的系统函数调用所需要的信息。对于LINUX内核,最好的方法是下载一个合适的内核,然后复制获得头文件。 首先执行make mrproper进行清理工作。 接下来执行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)进行配置。,3.3.2交叉编译环境的建立,5.第一次编译gcc 完成此过程需要执行三个步骤,分别如下: (1)修改t-linux下的内容; (2)配置gcc; (3)编译、安装gcc。,3.3.2

11、交叉编译环境的建立,6.交叉编译glibc 这一步骤生成的代码是针对目标机cpu的,因此它属于一个交叉编译过程。该过程要用到linux内核头文件,默认路径为$PREFIX/arm- linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一个名为sys-linux的软连接,使其内核头文件所在的 include目录. 或者也可以在接下来要执行的configure命令中使用-with-headers参数指定linux内核头文件的实际路径。,3.4 Boot Loader技术,3.4.1 初识Bootloader工作原理 Bootloader,启动引导程序,又叫引导加载程序

12、,功能强大的Bootloader也就直接叫做板级支持包(BSP,Board Support Packet)或者固件(Firmware)。近年来,为了方便嵌入式产品的推广,也有些直接将Bootloader叫做BIOS。BIOS是PC机的“基本输入输出系统”,烧录在电脑主板上一块专门的芯片中。一般BIOS由主板厂商或者专门的BIOS生产商提供,不是开源的,用户不能修改其中的代码进行定制。而嵌入式系统的开发则离不开Bootloader的开发,它也是整个系统开发中的难点之一。,3.4.1 初识Bootloader工作原理 1. Bootloader的作用,Bootloader是在嵌入式操作系统内核运行

13、之前运行的一段小程序,也是系统开机后执行的第一段程序。通过这段小程序,可以初始化硬件设备、建立内存空间,从而将系统的软硬件环境设置成一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。Bootloader是依赖于底层硬件而实现的,因此建立一个通用的嵌入式系统Bootloader几乎是不可能的。 在PC机中,主板的BIOS和位于硬盘0磁道上的主引导记录(Master Boot Record, MBR)中的引导程序(如LILO或GRUB等),两者一起的作用就相当于Bootloader在嵌入式系统中的作用,即实现整个系统的启动引导,并最终能引导操作系统的运行。,1. Bootloader的作

14、用,在嵌入式系统中,Bootloader对嵌入式设备中的主要部件如CPU、SDRAM、FLASH、串口等进行了初始化,这样可以使用Bootloader通过串口下载各种文件到设备的SDRAM中或者烧录Flash,然后将操作系统内核读入到内存中来或者直接跳转到内核的入口点,从而实现操作系统的引导。现在有些Bootloader也把对以太网的支持等功能也加进去了,这样一个功能比较强大的Bootloader实际上就已经相当于一个微型的操作系统了。 Bootloader从第一条指令跳转后,就开始初始化各种最重要的硬件,比如CPU的工作频率、定时器、中断、看门狗、检测RAM大小和Flash等。一般,硬件初始

15、化的这段程序是用汇编语言编写的,其后就用C语言编写。,1. Bootloader的作用,总体上Bootloader主要完成以下工作: (1)初始化CPU速度; (2)初始化内存,包括启用内存库,初始化内存配置寄存器等; (3)初始化中断控制器,在系统启动时,关闭中断,关闭看门狗; (4)初始化串行端口(如果在目标上有的话); (5)启用指令/数据高速缓存; (6)设置堆栈指针; (7)设置参数区域并构造参数结构和标记,即引导参数; (8)执行POST(上电自检)来标识存在的设备并报告有何问题; (9)为电源管理提供挂起/恢复支持; (10)传输操作系统内核镜像文件到目标机。也可以将操作系统内核

16、镜像文件事先存放在Flash中,这样就不需要Bootloader和主机传输操作系统内核镜像文件,这通常是在做成产品的情况下使用。而一般在开发过程中,为了调试内核的方便,不将操作系统内核镜像文件固化在Flash中,这就需要主机和目标机进行文件传输; (11)跳转到内核的开始,在此又分为ROM启动和RAM启动。所谓ROM启动就是用XIP技术直接在Flash中执行操作系统镜像文件;所谓RAM启动就是指把内核镜像从Flash复制到RAM中,然后再将PC指针跳转到RAM中的操作系统启动地址。,1 Bootloader的作用,在嵌入式Linux软件系统的开发中,一般将软件分为启动引导程序(Bootloader)、操作系统内核(OS Kernel)、根文件系统(File System)、图形窗口系统(GUI)和应用程序(AP)等几个部分,其中前三部分是一个可运行的嵌入式系统必不可少的, 它们在开发的过程中,被分别独立地编译链接或打包为一个二进制目标文件,然后下载(烧录)到嵌入式系统的ROM(一般是Flash)中。后两部分如果有的话,通

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号