当前位置:文档之家› 基于linux的嵌入式软件开发

基于linux的嵌入式软件开发


3.4 嵌入式系统引导代码
3.4.1 Bootloader简介 3.4.2 常用的Bootloader 3.4.3 Bootloader基本原理 3.4.4 Bootloader移植实例一:U_Boot 3.4.5 Bootloader移植实例二:vivi
10:08
21
3.4.1 Bootloader简介
10:08 19
3.2.3 基于linux的嵌入式软件开发流程
1.建立开发环境 2.配置开发主机 3.建立引导装载程序BOOTLOADER 4.移植Linux 操作系统 5.建立根文件系统 6.建立应用程序的文件系统 7.开发应用程序 8.烧写内核、根文件系统、应用程序 9.发布产品
10:08 20
10:08 6
2. 实时操作系统RTOS
对于使用操作系统的嵌入式系统而言,操作系统一 般以内核映像的形式下载到目标系统中。 以Linux为例,在系统开发完成之后,将整个操作 系统部分做成内核映像文件,与文件系统一起传送 到目标系统中;然后通过BootLoader指定地址运 行Linux内核,启动已经下载好的嵌入式Linux系 统;再通过操作系统解开文件系统,运行应用程序。 整个嵌入式系统与通用操作系统类似,功能比不带 有操作系统的嵌入式系统强大了很多。
10:08 29
3.4.2 常用的Bootloader
4. RedBoot
RedBoot是一个专门为嵌入式系统定制的开发工 具,最初由Redhat开发,是嵌入式操作系统 eCos的一个最小版本,现在交由自由软件组织 FSF管理,遵循GPL的发布协议。 集Bootloader、调试、Flash烧写于一体。支持 串口、网络下载,执行嵌入式应用程序。 既可以用在产品的开发阶段(调试功能),也 可以用在最终的产品上(Flash更新、网络启 动)。
10:08
24
2. Bootloader操作模式
启动加载(Boot loading)模式:这种模 式也称为“自主”(Autonomous)模式。 也即 Boot Loader 从目标机上的某个固态 存储设备上将操作系统加载到 RAM 中运 行,整个过程并没有用户的介入。 这种模式是 Boot Loader 的正常工作模式, 因此在嵌入式产品发布的时侯,Boot Loader 显然必须工作在这种模式下。
10:08
12
2. 内核
Linux 内核的开发主要包括Linux内核的定制、 裁剪等工作。 在嵌入式开发中经常要面对设备驱动程序的开 发,嵌入式系统通常有许多设备用于与用户交 互,象触摸屏、小键盘、滚动轮、传感器、 RS232 接口、LCD 等等。 除了这些设备外,还有许多其它专用设备,包 括闪存、USB、GSM 等。 内核通过所有这些设备各自的设备驱动程序来 控制它们,包括 GUI 用户应用程序也通过访问 这些驱动程序来访问设备。
3.1.2 基于Linux的嵌入式软件
基于嵌入式Linux 的软件结构如图所 示,在硬件之上的 是引导程序 BootLoader,然后 是Linux内核,最 上层是应用程序。
10:08
10
1. BootLoader
引导装载程序通常是在任何硬件上执行的第一段 代码。 在象台式机这样的常规系统中,通常将引导装载 程序装入主引导记录(Master Boot Record, (MBR))中,或者装入 Linux 驻留的磁盘的第一 个扇区中。 通常,在台式机或其它系统上,BIOS 将控制移 交给引导装载程序。而在嵌入式系统中,通常并 没有像BIOS那样的固件程序,因此整个系统的加 载启动任务就完全由BootLoaderoader
2. PPCBoot
PPCBoot是德国DENX小组开发的用于多种嵌入 式CPU的Bootloader引导程序,主要由德国的工 程师Wolfgang Denk和Intemet上的一群自由开发 人员对其进行维护和开发。 支持PowerPC、ARM、MIPS、m68K等多种处理 器平台,易于裁剪和调试。PPCBoot遵循GPL(通 用公共许可)公约,完全开放源代码。 PPCBoot源代码可以在sourceforge网站的社区服 务器中获得,它的项目主页是http: ///projects/ppcboot,也可以从 DENX的网站htrp://www.denx.de下载。
18
3.2.2 基于开发板的二次开发
所谓二次开发是利用现成的开发板进行开发,不同于通用 计算机和工作站上的软件开发工程,一个嵌入式软件的开 发过程具有很多特点和不确定性。其中最重要的一点是软 件跟硬件的紧密耦合特性。 由于嵌入式系统的灵活性和多样性,这样就给软件设计人 员带来了极大地困难。第一,在软件设计过程中过多地考 虑硬件,给开发和调试都带来了很多不便;第二,如果所 有的软件工作都需要在硬件平台就绪之后进行,自然就延 长了整个的系统开发周期。这些都是应该从方法上加以改 进和避免的问题。 为了解决这个问题,通常的做法是基于某种开发板做二次 开发,从这个角度看,硬件开发所占的比重不到20%,而 软件开发的比重占到了80%。
重点回顾
TCP通信过程
1
重点回顾
UDP通信过程
2
第三章 基于Linux的嵌入式软件开发
3.1 嵌入式软件结构 3.2 嵌入式软件开发流程 3.3 嵌入式linux开发环境 3.4 嵌入式系统引导代码 3.5 linux内核结构及移植 3.6 嵌入式文件系统及移植 3.7 linux设备驱动概述 3.8 设备驱动程序接口 3.9 linux设备驱动开发流程
10:08 30
10:08 8
4. 应用程序
实际的嵌入式系统应用软件建立在系统的 主任务(Main Task)基础之上。 用户应用程序主要通过调用系统的API函数 对系统进行操作,完成用户应用功能开发。 在用户的应用程序中,也可创建用户自己 的任务。任务之间的协调主要依赖于系统 的消息队。
10:08
9
10:08
7
3. 中间件层
中间件(middleware)是基础软件的一大 类,属于可复用软件的范畴。 顾名思义,中间件处于操作系统软件与用 户的应用软件的中间。 中间件在操作系统、网络和数据库之上, 应用软件的下层,总的作用是为处于自己 上层的应用软件提供运行与开发的环境, 帮助用户灵活、高效地开发和集成复杂的 应用软件。
10:08 13
3. 应用程序
对于嵌入式Linux的应用,大多数的应用并不需 要图形界面,比如交换机、路由器、嵌入式网 关以及服务器等等。 但是,随着消费类电子的普及,越来越多的嵌 入式产品如多媒体播放、手机等手持设备需要 图形用户界面(或称 GUI)的支持。 因此基于GUI的应用程序的开发越来越重要。 目前比较流行的GUI平台有Qt/Embedded、 紧缩的X Windows系统、MicroWindows以及 MiniGUI系统。
10:08 3
3.1 嵌入式软件结构
3.1.1 嵌入式软件体系结构 3.1.2 基于Linux的嵌入式软件
10:08
4
3.1.1 嵌入式软件体系结构
10:08
5
1. 设备驱动层
设备驱动层是嵌入式系统中必不可少的重 要部分,使用任何外部设备都需要有相应 驱动程序的支持,它为上层软件提供了设 备的操作接口。 上层软件不用理会设备的具体内部操作, 只需调用驱动层程序提供的接口即可。 驱动层一般包括硬件抽象层HAL、板级支 持包BSP和设备驱动程序。
10:08 11
1. BootLoader
通过这段小程序,我们可以初始化硬件设 备、建立内存空间的映射图,从而将系统 的软硬件环境带到一个合适的状态,以便 为最终调用操作系统内核准备好正确的环 境。 常见的BootLoader有uboot、vivi等。引 导程序的开发主要是做一些移植工作。
10:08 26
3.4.2 常用的Bootloader
1. ARMBoot
ARMBoot是一个bootloader,是为基于ARM或者 StrongARM CPU的嵌入式系统所设计的。它支 持多种类型的Flash;允许映像文件经由 bootp、、tftp从网络传输;支持从串口线下载 S-record或者binary文件;允许内存的显示及修 改;支持jffs2文件系统等。 ARMBoot源码公开,可以在 /projects/armboot下 载。
10:08 28
3.4.2 常用的Bootloader
3. U-Boot
U-Boot是sourceforge网站上的一个开放源代码的项目。 它可对powerpc、MPC5xx、MPC8xx、MPC82xx、 MPC7xx、MPC74xx、ARM(ARM7、ARM9、 StrongARM、Xscale)、MIPS、X86等处理器提供支 持,支持的嵌入式操作系统有linux、Vx-work、 NetBSD、QNX、RTEMS、ARTOS、LynxOS等,主 要用来开发嵌入式系统初始化代码bootloader。软件的 主站点是/projects/u-boot。 U-Boot最初是由PPCboot发展而来的,它对PowerPC系 列处理器的支持最完善,对linux操作系统的支持最好。 源代码开放的U-Boot软件项目经常更新,是学习硬件底 层代码开发的很好样例。目前已成为Armboot和 PPCboot的替代品。
10:08 17
3.2.1 嵌入式Linux设计概述
宿主机(host)是编辑和编译程序的平台, 一般是基于 X86 的 PC 机,通常也称为主 机。而目标机(target)是用户开发的系统, 通常都是非 X86 平台。 Host 编译得到的可执行代码在目标机 target 上运行。
10:08
10:08 25
2. Bootloader操作模式
下载(Downloading)模式:在这种模式 下,目标机上的 Boot Loader 将通过串口 连接或网络连接等通信手段从主机(Host) 下载文件到目标机的 RAM 中,然后再被 Boot Loader 写到目标机上的FLASH 类 固态存储设备中。 工作于这种模式下的 Boot Loader 通常都 会向它的终端用户提供一个简单的命令行 接口。因此产品开发时通常使用这种模式。
相关主题