Chinaunix首页 | 论坛 | 博客
  • 博客访问: 366349
  • 博文数量: 36
  • 博客积分: 2071
  • 博客等级: 大尉
  • 技术积分: 797
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-20 12:08
文章分类
文章存档

2011年(2)

2010年(34)

我的朋友

分类: 嵌入式

2010-11-30 20:02:07

 嵌入式系统开发概述

1、裸机开发:对于功能简单仅包括应用程序的嵌入式系统一般不使用操作系统,仅有应用程序和设备驱动程序

2、带操作系统的开发:1)、当设计较复杂的程序时,可能就需要一个操作系统(OS)来管理控制内存、多任务、周边资源等2)、本阶段我们将分别介绍裸机下与操作系统下的开发,并且把嵌入式Linux操作系统的嵌入式开发作为重点

3、嵌入式系统开发流程

一、 (无操作系统)

1 硬件开发(PCB、原理图)

2)  启动代码(硬件初始化)

3) 设备驱动(裸机下驱动)

4) 应用程序(单任务)

二、 (有操作系统)

1)、硬件开发

2)、启动加载程  (bootloader

3)、操作系统内核(kernel)

4)、根文件系统  (root)

5)、设备驱动    (driver)

6)、应用程序    (进程、线程、GUI、网络、数据库等)

4、通常基于linux系统的嵌入式开发步骤如下:

1)、开发目标硬件系统:

    如选择微处理器、Flash及其它外设等

2)、建立交叉开发环境:

安装交叉编译工具链、配置串口通信工具、配置网络通信工具等

3)、开发Bootloader: 移植Bootloader,如vivi

4)、移植linux内核:  如linux2.4.18内核移植

5)、开发根文件系统: 如CRAMFS文件系统的制作

6)、开发相关硬件的驱动程序:如LCD、网卡、GPIO

7)、开发上层的应用程序:如网络、QT GUI开发

5、交叉编译链介绍

1)、本地编译:

在当前平台编译,编译得到的程序也在本地执行,这时所使用的编译器称为本地编译器

2)、交叉编译:

在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在X86平台上编译出能运行于ARM平台上的程序,这时所使用的编译器称为交叉编译器

3)、在编译Linux内核和应用程序之前,由于一般嵌入式开发系统存储大小有限,通常都要在性能优越的PC机上建立一个用于目标机的交叉编译工具链,用该交叉编译工具链在PC上编译出目标机上要运行的程序

4)、交叉编译工具链主要由binutilsgccglibc 3个部分组成

5)、编译交叉编译工具链是一个非常复杂的过程,但一般网上有已经编译好的工具链可以下载

常用的交叉编译器版本如下:

2.95.33.3.23.4.14.3.2

6、启动Bootloader介绍

1)、对于PC机,其开机后的初始化处理器配置、硬件初始化等操作是由BIOSBasic Input/Output System)完成的,但对于嵌入式系统来说,出于经济性、价格方面考虑一般不配置BIOS,因此我们必须自行编写完成这些工作的程序

2)、这就是所需要的引导启动程序,在嵌入式中称为BootLoader程序(在裸机下称作启动代码)

3)、BootLoader是系统加电后、操作系统内核或用户应用程序运行之前,首先必须运行的一段程序代码

4)、通过这段程序,为最终调用操作系统内核、运行用户应用程序准备好正确的环境

5)、系统启动代码完成基本软硬件环境初始化后,对于有操作系统的情况下,启动操作系统、启动内存管理、任务调度、加载驱动程序等,最后执行应用程序或等待用户命令

6)、对于没有操作系统的系统直接执行应用程序或等待用户命令

7Linux内核介绍

Linux内核是linux操作系统的核心部分,它实现了操作系统的五大功能模块:

进程管理

内存管理

文件系统

设备控制

网络

8、Linux根文件系统介绍

根文件系统是linux/UNIX系统启动的一个重要组成部分,也是操作系统正常工作的必要组成部分,在启动内核后需要挂载根文件系统

一般重要的文件、命令、应用程序等都保存在根文件系统中,操作系统起来后可以直接使用

根文件系统的实现多种多样

基于ramramdisk

基于flashcramfsyaffs2

基于网络的nfs

9、Linux驱动介绍

驱动程序从字面上可以理解为一类程序,这类程序的目的一般是驱动硬件正常工作,所以通常说的驱动都是针对特定的硬件来编写的

例如:lcdflashad、网络等正常工作都需要相应的驱动程序来支持

驱动程序既可以工作在有操作系统的环境下,也可以工作在无操作系统的环境中

在做一些简单的硬件控制时,由于功能比较单一,不需要操作系统来管理,所以针对这种情况的驱动程序也相对简单,因为它只完成特定硬件的功能而不需考虑其它的并发任务等情况

如果要实现的任务相对较多,较复杂,需要操作系统对它进行管理,在这种情况下,编写驱动的程序就要考虑其他任务的并发、任务的优先级以及中断的处理等问题

所以在带操作系统的环境下编写驱动程序相对较复杂,但这也是最常用到的类型

从嵌入式应用程序开发人员角度看,linux驱动程序为应用程序提供了访问硬件设备的应用编程接口(API),它主要提供以下功能:

应用程序通过驱动程序安全有效的访问硬件设备

驱动程序作为嵌入式系统的中间一层软件,他隐藏了低层的细节,从而提高了软件的可移植性和可复用性

10、Linux应用程序开发操作界面

现代操作系统一般都提供图形化的操作界面,这种界面一般由视窗、图标、菜单、对话框以及其它一些可视特征组成,它允许终端用户方便地利用鼠标和键盘来操作电脑

GUI系统发展非常迅速,其桌面主要分支有:

苹果的视窗系统

微软的Windows桌面系统

UNIX的上的X Window系统

在类UNIX系统中,X Window系统占据统治地位,各种流行的桌面环境和开发包实际上都是在X Window的基础上开发的,

例如前面我们介绍过的桌面系统上的GnomeKDE

嵌入式系统中由于硬件条件的限制,X Window系统不太适合

目前常见的面向嵌入式LinuxGUI系统主要有

Qtopia Core

MicroWindows(Nabo-X Windows)

国内的MiniGUI

是一个专门为嵌入式系统设计图形用户界面的工具包。Qt是挪威Trolltech软件公司的产品,它是桌面系统图形用户界面开发包,Qtopia Core就是Qt的嵌入式版本

MiniGUI

是一种面向嵌入式系统的图形用户界面支持

系统,是国内做的较好的自由软件之一.其主

要特点有:

跨操作系统支持

多汉字输入法支持

轻型、占用资源少

高性能、高可靠性

可配置性

MicroWindows

(2005年更名为Nano-X Window)是一个基于客户/服务器体系结构的GUI系统

其主要特色是提供了类似X Window的客户/服务器体系结构并提供了相对完善的图形功能

MicroWindows作为X Window的替代品,可以使用更少的存储空间(100KB-600KB)RAM提供与X Window相似的功能

阅读(2315) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~