Chinaunix首页 | 论坛 | 博客
  • 博客访问: 363548
  • 博文数量: 109
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 1920
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-19 11:17
个人简介

只要活着,就要有目标。

文章分类
文章存档

2013年(109)

我的朋友

分类: LINUX

2013-07-05 17:25:56

 Linux 正在嵌入式开发领域稳步发展。因为 Linux 使用 GPL,所以任何对将 Linux 定制于 PDA、掌上机或者可佩带设备感兴趣的人都可以从因特网免费下载其内核和应用程序,并开始移植或开发。许多 Linux 改良品种迎合了嵌入式/实时市场。它们包括 RTLinux(实时 Linux)、uclinux(用于非 MMU 设备的 Linux)、Montavista Linux(用于 ARM、MIPS、PPC 的 Linux 分发版)、ARM-Linux(arm 上的 Linux)和其它 Linux 系统(请参阅 参考资料以链接到本文中提到的这些和其它术语及产品。)

嵌入式 Linux 开发大致涉及三个层次:引导装载程序、Linux 内核和图形用户界面(或称 GUI)。在本文中,我们将集中讨论涉及这三层的一些基本概念;深入了解引导装载程序、内核和文件系统是如何交互的;并将研究可用于文件系统、GUI 和引导装载程序的众多选项中的一部分,由于内容太多,我们这里就只介绍下引导装载程序。

 

    引导装载程序

    引导装载程序通常是在任何硬件上执行的第一段代码。在象台式机这样的常规系统中,通常将引导装载程序装入主引导记录(Master Boot Record,(MBR))中,或者装入 Linux 驻留的磁盘的第一个扇区中。通常,在台式机或其它系统上,BIOS 将控制移交给引导装载程序。这就提出了一个有趣的问题:谁将引导装载程序装入(在大多数情况中)没有 BIOS 的嵌入式设备上呢?

    解决这个问题有两种常规技术:专用软件和微小的引导代码(tiny bootcode)。

    专用软件可以直接与远程系统上的闪存设备进行交互并将引导装载程序安装在闪存的给定位置中。 闪存设备是与存储设备功能类似的特殊芯片,而且它们能持久存储信息 ― 即,在重新引导时不会擦除其内容。

    这个软件使用目标开发中,嵌入式设备通常被称为 目标)上的 JTAG 端口,它是用于执行外部输入(通常来自主机机器)的指令的接口。JFlash-linux 是一种用于直接写闪存的流行工具。它支持为数众多的闪存芯片;它在主机机器(通常是 i386 机器 ― 本文中我们把一台 i386 机器称为 主机)上执行并通过 JTAG 接口使用并行端口访问目标的闪存芯片。当然,这意味着目标需要有一个并行接口使它能与主机通信。Jflash-linux 在 Linux 和 Windows 版本中都可使用,可以在命令行中用以下命令启动它:

    Jflash-linux

    某些种类的嵌入式设备具有 微小的引导代码― 根据几个字节的指令 ― 它将初始化一些 DRAM 设置并启用目标上的一个串行(或者 USB,或者以太网)端口与主机程序通信。然后,主机程序或装入程序可以使用这个连接将引导装载程序传送到目标上,并将它写入闪存。

    在安装它并给予其控制后,这个引导装载程序执行下列各类功能:

    初始化 CPU 速度

    初始化内存,包括启用内存库、初始化内存配置寄存器等

    初始化串行端口(如果在目标上有的话)

    启用指令/数据高速缓存

    设置堆栈指针

    设置参数区域并构造参数结构和标记(这是重要的一步,因为内核在标识根设备、页面大小、内存大小以及更多内容时要使用引导参数)

    执行 POST(加电自检)来标识存在的设备并报告任何问题

    为电源管理提供挂起/恢复支持

    跳转到内核的开始

    带有引导装载程序、参数结构、内核和文件系统的系统典型内存布局可能如下所示:

    清单 1. 典型内存布局

    /* Top Of Memory */

    Bootloader

    Parameter Area

    Kernel

    Filesystem

    /* End Of Memory */

    嵌入式设备上一些流行的并可免费使用的 Linux 引导装载程序有 Blob、Redboot 和 Bootldr(请参阅 参考资料获得链接)。所有这些引导装载程序都用于基于 arm 设备上的 Linux,并需要 Jflash-linux 工具用于安装。

    一旦将引导装载程序安装到目标的闪存中,它就会执行我们上面提到的所有初始化工作。然后,它准备接收来自主机的内核和文件系统。一旦装入了内核,引导装载程序就将控制转给内核。

 

    原文来自:

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