CN101107592A - 操作系统友好引导加载器 - Google Patents

操作系统友好引导加载器 Download PDF

Info

Publication number
CN101107592A
CN101107592A CNA2006800028299A CN200680002829A CN101107592A CN 101107592 A CN101107592 A CN 101107592A CN A2006800028299 A CNA2006800028299 A CN A2006800028299A CN 200680002829 A CN200680002829 A CN 200680002829A CN 101107592 A CN101107592 A CN 101107592A
Authority
CN
China
Prior art keywords
processor
information
loaded
memory
storage area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2006800028299A
Other languages
English (en)
Other versions
CN100580628C (zh
Inventor
麦茨·斯文森
迈克尔·罗森伯格
尼克拉·鲍尔
彼得·奥林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of CN101107592A publication Critical patent/CN101107592A/zh
Application granted granted Critical
Publication of CN100580628C publication Critical patent/CN100580628C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

Abstract

本发明提供一种操作系统友好引导加载器。常规引导加载器会与多处理器系统的操作系统存在冲突。因此描述了一种操作系统友好引导加载器和方法,其可在任何如下系统中将操作系统与引导加载器集成起来,在所述系统中,主机处理器与客户机处理器具有通信机制,该通信机制需要操作系统来使其运转,并且所述客户机处理器具有两个存储器系统:一个对于主机处理器和客户机处理器都是可见的,一个只对于客户机处理器是可见的。

Description

操作系统友好引导加载器
技术领域
本发明涉及对具有多个可编程处理器的电子系统的初始化。
背景技术
对具有连接到用于存储程序指令或代码以及数据的一个或更多个存储装置的可编程处理器的电子系统进行启动或引导的处理并不像初看起来的那么简单。其原因的一个重要部分是处理器必须在良好定义的状态下开始操作。
向裸系统加载程序代码和数据的传统方式是将该代码和数据直接“推入”到系统的随机访问存储器(RAM)中或者使用引导加载器。引导加载器(有时称为启动加载器或引导程序加载器)是可从非易失性存储器(诸如只读存储器(ROM))“推入”到系统的RAM中或者加载到RAM中的指令集合(即程序代码,有时称为“引导代码”)。在由处理器执行所述指令集合时,该引导加载器随后“拖”入其余代码和数据并启动系统。
用于启动处理器系统的包括引导加载器的现有机制的示例包括Tulpule等的美国专利第5,652,886号和Barton等的美国专利第6,490,722号以及Wong等的美国专利申请公报第US 2002/0138156A1号。Barton等的专利文件例如描述了一种两阶段引导加载器,其中第二阶段对操作系统进行查找、校验以及加载。在Wong等的专利文件中,多处理器系统利用与ROM耦合的主处理器向从处理器传送引导代码,而从处理器中的存储器控制器拒绝存储器访问请求,直到引导代码已传送到这些从处理器的RAM为止。
如Barton等和Wong等的专利文件所指出的那样,例如启动多处理器系统(通常认为该多处理器系统具有主处理器或主机处理器(即,命令进行引导的系统)和一个或更多个从处理器或客户机处理器(即,待引导系统))比启动单处理器系统甚至更复杂。
“推”方法的优点在于:在引导过程中不需要在从处理器中执行代码,并且所需要的唯一同步处理是将从处理器保持在复位状态并在加载完成时解除所述保持。然而,“推”方法仅当从处理器的一个或多个存储器对于主机处理器可见时才有效。所述可见性可按几种方式来实现。例如,存储器可以在主机处理器和从处理器的地址和数据总线上是可见的,或者允许从主机处理器的一个或多个存储器向从处理器的一个或多个存储器进行直接存储器访问(DMA)传送。
当从处理器的待加载存储器对于主机处理器不可见时,不能使用“推”方法。在此情况下,必须使用某些形式的引导加载处理。如上所述,引导加载器技术要求能够将引导代码推到从处理器上(这在此情况下是不可能实现的)或者要求从处理器能够从非易失性存储器加载代码。引导加载器随之开始从主机处理器向从处理器的代码传送,从而完成对存储器的加载。
可能存在其中从处理器的某些或者全部的存储器对于主机处理器不可见的多处理器系统。在这种系统中,利用良好建立的软件框架来进行加载和处理器间通信是有利的,这导致不再期望使用传统的引导加载器。此外,引导加载器可能与操作系统存在冲突,可以说操作系统希望能控制整个系统和所有存储器。
当将引导加载器与操作系统(OS)集成起来时所面临的问题是:确保不执行尚未加载的代码,将代码高效地加载到对于主机处理器不可见的一个或多个存储器中,并使对(多个)从处理器的加载和引导与主机处理器相同步。此外,必须确定应当将系统的哪些部分加载到对于主机处理器和从处理器均可见的存储器中,并且必须确定应当如何排列待加载的二进制映像以使引导加载器与OS一起工作。可能重要的另一个问题是对引导加载器与OS的集成,因为随后在加载过程中可能使用已经建立的用于主机处理器与从处理器之间的通信的框架。这种框架通常依赖于OS特性而包括用于通信的一个或更多个原型(primitive)。
发明内容
在一个方面中,本发明提供了一种在包括主处理器和从处理器的多处理器系统中向所述从处理器加载程序代码的方法。该方法包括以下步骤:将所述从处理器复位并将所述从处理器保持在复位状态下;将信息推入到所述主处理器和所述从处理器都可访问的第一存储器中;引导所述从处理器;启动所述从处理器中的操作系统,包括阻断对程序代码位于所述从处理器可访问但所述主处理器不可访问的第二存储器中的进程的调度;在所述第一存储器中预留中间存储区;向所述主处理器发送关于所预留的中间存储区的位置和大小的信息;基于所发送的信息,将待加载到所述第二存储器中的信息加载到所述中间存储区中;向所述从处理器发送表示已对所述中间存储区进行了加载和是完成了加载处理还是要加载其它信息的第一消息;将所述中间存储区中的信息复制到所述第二存储器中;以及向所述主处理器发送表示已复制了所述中间存储区中的信息的第二消息。
在本发明的另一方面中,提供了一种多处理器系统,所述系统包括主机处理器、至少一个客户机处理器、所述主机处理器和所述客户机处理器都可访问的第一随机访问存储器、所述客户机处理器可访问但所述主机处理器不可访问的第二随机访问存储器、以及引导加载器。所述第一存储器包括中间存储区,并且所述引导加载器包括主机部分和客户机部分。该主机部分可加载到所述第一随机访问存储器中,并且具有第一阶段和第二阶段。所述第一阶段将所述客户机处理器复位并将其保持在复位状态下,并且将信息推入到所述第一随机访问存储器中。所述第二阶段由所述客户机部分来启动,将待加载到所述第二随机访问存储器中的信息加载到所述中间存储区中,并且向所述客户机部分发送表示已对所述中间存储区进行了加载的第一消息。所述客户机部分可加载到所述第一随机访问存储器中,并且所述客户机部分启动操作系统,包括启动空闲进程并且最初阻断对程序代码位于所述第二随机访问存储器中的所有进程的调度;将加载到所述中间存储区中的信息复制到所述第二随机访问存储器;并且向所述主机部分发送表示已复制了信息的第二消息。
在本发明的另一方面中,提供了一种计算机可读介质,所述计算机可读介质包含有在包括主处理器和从处理器的多处理器系统中向所述从处理器中加载信息的计算机程序。该计算机程序执行以下步骤:将所述从处理器复位并将所述从处理器保持在复位状态下;将信息推入到所述主处理器和所述从处理器都可访问的第一存储器中;引导所述从处理器;启动所述从处理器中的操作系统,包括阻断对程序代码位于所述从处理器可访问但所述主处理器不可访问的第二存储器中的进程的调度;在所述第一存储器中预留中间存储区;向所述主处理器发送关于所预留的中间存储区的位置和大小的信息;基于所发送的信息,将待加载到所述第二存储器中的信息加载到所述中间存储区中;向所述从处理器发送表示已对所述中间存储区进行了加载和是完成了加载处理还是要加载更多信息的第一消息;将所述中间存储区中的信息复制到所述第二存储器中;以及向所述主处理器发送表示已复制了所述中间存储区中的信息的第二消息。
附图说明
通过结合附图阅读本说明,将理解本发明的各种特征、目的以及优点,在附图中:
图1描绘了多处理器系统;
图2是OS友好引导加载器的流程图;以及
图3描绘了中间存储区的构造的实施例。
具体实施方式
如上所述,常规引导加载器会与多处理器系统的操作系统存在冲突。本申请描述了在如下系统中满足将OS与引导加载器集成在一起的要求的OS友好引导加载器和方法,在所述系统中,主机处理器和客户机处理器具有通信机制,该通信机制需要OS来使其工作,并且客户机处理器具有两个存储器系统:一个存储器系统对于主机处理器和客户机处理器都可见,一个存储器系统只对于客户机处理器可见。
图1描绘了包括主机处理器102和客户机处理器104的这种多处理器系统100。应当理解,尽管图1只示出了一个客户机处理器104,但是也可设置更多客户机处理器。还应当理解,主机处理器和客户机处理器可以是任何可编程电子处理器。在图1所示的实施例中,将处理器102示为先进RISC机(ARM)的中央处理单元(CPU),并将处理器104示为数字信号处理器(DSP)装置的CPU。图1中的虚线描绘出主机设备与从设备之间(在该实施例中是ARM与DSP之间)的硬件边界,以及非易失性存储器106。存储器106可以是ROM、闪存存储器或其他类型的非易失性存储器装置。
大多数市场上可获得的DSP装置包括芯片上存储器,并且如图1所示,DSP包括“内部”单通道RAM(SARAM)和双通道RAM(DARAM)108,以及“外部”RAM(XRAM)110。如以下更详细描述的,在存储器108中限定有由虚线表示的中间存储区。图1中的箭头表示CPU与存储器之间的访问路径,例如总线和DMA路径。ARM主机CPU 102可以访问非易失性存储器106和DSP的SARAM和DARAM 108,但不能访问DSP的XRAM 110,而DSP从CPU 104可以访问所有RAM 108、110。
可通过普通的“推”方法从非易失性存储器106对SARAM和DARAM 108进行加载。然而,当在引导过程中需要向XRAM 110加载代码时,需要一种引导加载器解决方案,因为XRAM 110对于CPU 102不可见(即,不能由CPU 102访问),因此不能将引导代码推入到XRAM110。
如以下参照图2的流程图更详细描述的,OS友好引导加载器的优势在于具有被加载到对于主处理器和从处理器均可见的一个或多个存储器(例如SARAM和DARAM 108)中的主机部分和客户机部分。
可将OS友好引导加载器的主机部分视为包括两个操作阶段或者两个操作模式。第一阶段将从处理器104复位并将其保持在复位状态下(步骤202),并且按常规方式将信息(程序指令和/或数据)从非易失性存储器106推入到都可见的存储器108中(步骤204)。被推入到这些存储器中的信息主要是引导加载器、OS以及对于该OS的任何必要启动代码。应当理解,应用(多个应用)及其部分也可在启动时被推入到这些存储器中,并且可在对“外部”存储器110进行加载的过程中执行。当完成了该“推”处理时(步骤206),允许引导从处理器104(步骤208)并启动OS(例如解除从处理器的复位状态)及其常规通信机制(步骤210)。接着,主机部分等待来自从处理器的消息,如以下更详细描述的那样开始其第二阶段操作。
已加载到(通过主机部分的第一阶段“推”到)都可见的存储器108中的OS友好引导加载器的从部分对操作系统进行启动,执行以下操作(步骤210)。首先,创建中断处理程序。因为中断可能在任何时候发生,所以中断处理程序的代码必须位于已被加载的存储器中。其次,创建公共进程(即,在主机处理器和从处理器中均运行的进程)的数据结构(例如,进程控制块和堆栈)。应当理解,由于尚未执行这些公共进程,所以可稍后加载它们的代码,并且这些代码位于仅对从处理器可见的“外部”存储器(例如,XRAM 110)中是非常好的。第三,创建系统空闲进程。因为空闲进程是在没有值得处理的事情时,由OS选择来运行的进程,所以必须将该空闲进程的代码置于已经被加载的存储器中。第四,阻断对至少驻留在“外部”存储器110中(即,程序代码或数据位于“外部”存储器110中)的全部进程的调度。如上所述,因此有利的是可与加载“外部”存储器并行地启动或继续执行驻留在“内部”存储器中的进程。也可以停止对除空闲进程以外的所有进程的调度,但这不是必须的。让阻断处理成为OS调度程序开始运行之前所做的最后一项操作,确保了在调度程序释放时将不会运行这些进程中的代码。最后,释放OS调度程序,这允许OS开始执行代码并对进程进行调度。应当理解,由于阻断了至少所有外部存储器进程调度处理,所以OS现在所能做的就是对中断和空闲进程进行调度。
此时,从处理器104已部分启动并运行。OS友好引导加载器的从部分已被加载,并且正在执行从处理器的空闲进程。从处理器的OS可以响应于中断而对代码进行调度和执行,并且可对空闲进程和代码驻留在内部存储器中的任何未阻断进程进行调度。可以使用所有代码和数据访问都在已被加载的存储器(在本实施例中是SARAM和DARAM 108)中的包括常规通信机制在内的OS机制。作为DMA、共享存储器以及结构化寄存器的高级抽象的这些OS通信机制,比简单的信号机(semaphore)更有能力,并且使得主机处理器能够与尚未完全启动的处理器(从处理器)(就是主要只执行OS、中断服务以及驻留在“内部”RAM中的进程的处理器)进行高效通信。
空闲进程在从处理器的对主机处理器可见的存储器(如“内部”存储器108)中的存储器堆栈中预留一存储器块(步骤212)。如以下更详细所述,该预留存储器块用于对要传送到从处理器专用存储器(即,对主机处理器不可见的存储器,如“外部”XRAM 110)的信息(代码和/或数据)进行中间存储。从处理器的空闲进程有利地利用已建立的通信机制向主机处理器发送关于前一步骤中预留的中间存储区的地址和大小或长度的信息(步骤214)。在发送了该信息(其可能包含在一个或更多个合适的消息中)之后,从处理器块等待来自主机处理器的消息。当“被阻挡”时,从处理器不进行任何其他加载活动,直到它接收到主机处理器的响应为止。
应当理解,从处理器的OS在此阶段是否对中断采取行动取决于该中断的性质。由于许多OS机制(例如,如用于与主机处理器进行通信的那些OS机制)依赖于中断,并且无法预先知道何时将发生中断,因此必须已将所有中断代码都加载到“内部”存储器中。在这方面,在引导加载处理的第二阶段中响应中断。然而,如果中断要触发诸如开始进行数据处理的多个进程的事件链,并且用于这些进程的代码或数据都位于或将位于“外部”存储器中,则阻挡该中断并且中断服务将请求放入该进程的“进入队列”中,使得在完成引导之后可响应该请求并且执行该进程。
当接收到从处理器的信息时,主机引导加载器的第二阶段将待加载到从处理器的不可见存储器中的信息(代码和/或数据)填充到中间存储区中(步骤216)。因为该区是两个处理器都可以访问的存储区,因此按常规方式将代码和数据推到中间存储区中,但该推处理是通过OS通信机制来激活的。
现在主机处理器向从处理器发送表示已对中间存储区进行了加载和是完成了加载处理还是还有其它代码和/或数据的消息(步骤218)。这是从处理器正在等待的消息。主机处理器现在随之阻断,等待来自从处理器的消息。从处理器将中间存储区的内容复制到其从处理器专用存储器中的合适位置中(步骤220),由此实现其实际加载。从处理器随后向主机处理器发送表示从处理器已复制了中间存储区的内容的消息(步骤222)。
如果存在其它待加载代码和/或数据(步骤224),则可将该复制和消息发送循环(步骤216到224)重复需要的次数。当完成了加载时,即,当没有需要复制到从处理器的信息时,从处理器释放对先前被阻断的进程的阻断,从而允许调度其从处理器专用存储器中的代码(步骤226)。现在完成了加载。
如上所述,主机处理器将从处理器要复制到从处理器专用存储器110中的最终目的地的代码和数据填充到存储器108中的中间存储区中。进行此处理的最简单的方式可能是在中间存储区中的所有代码和数据之前加上含有块待加载到的目的地地址和块长度的标签。图3描绘了中间存储区的这种构造的一个实施例。待传送到中间存储区中的代码和/或数据的块包括表示该块的长度和要将该块加载到从存储器中的位置(即,目的地地址)的头部。如图3中的虚线所示,在中间存储区中可以串接(concatenate)几个这种块。
可按许多方式将待装载的信息(代码和数据)排列在中间存储区和存储器中。通常将信息排列成待加载到不同地址的多个连续信息块,因此任意选择的中间存储区大小可能并不与所有这种块的大小都匹配。而且,应当理解,如果中间存储区一直是填满的,则系统将运转得更高效。这意味着如果待加载的块比该中间存储区小,则应当同时执行对几个(较小)块的传送。这还意味着如果块比中间存储区的剩余部分大时应当划分该块,并将一部分传送到中间存储区中,而将剩余部分传送到下一块中。此外,如果某个块比中间存储区大数倍,则可多次划分该块。按计算机技术人员已知的方式在OS友好引导加载器的主机部分中执行所有这种划分和串接。从数据通信工程师的角度来看,OS友好引导加载器的主机部分因此是一种“传输层”。
本领域的技术人员将明了从信息到传送块的这种划分和串接的益处。需要某种通信机制来执行存储器之间的信息的实际传送,无论使用哪种机制,通常越少的大量传送优于越多的小量传送。保持满载的中间存储区通过有利地使通信信道开销最小化而可更高效地利用可用带宽。每个消息都需要一定量的管理和管理信息,因此更少的消息意味着更小的开销。
块划分和串接效果的益处的一个优选示例是作为通信机制的DMA。DMA通常需要一些设置开销(即,它需要一些时间来进行设置),但DMA一旦启动了就非常高效,因为其可按最小的CPU周期来执行传送。为了获得使用DMA的最大益处,应当每次执行硬件所允许的最大DMA传送。因此,目前相信将中间存储区的大小设定为最大DMA块大小是有利的。
OS友好引导加载器的主机部分应当“知道”何时离开其第一阶段(通过将信息推入到存储器中来加载信息)并进入其第二阶段(通过一个或更多个通信机制来加载信息)。但主机处理器终究不能将信息推入到对于它不可见的存储器中。尽管从处理器在已到达空闲进程时向主机部分发送了消息,但是这可能不足以使主机部分告诉从处理器开始执行。可将从推处理到引导加载处理的这一转变看作从被动加载的范例(即,在从处理器中不执行代码)到主动加载的范例(即,从处理器部分地活动、执行)的变化。
主机部分知道何时改变阶段的一个方式是利用关于应当加载到什么存储器的信息来对要加载的代码和数据添加标签。例如,待提供给不可见存储器的信息可包括表示要将该信息加载到不可见存储器中的一个或多个标签。缺少这种标签则表示要将该信息加载到可见存储器中,但应当明白,也可使用明确表示要将该信息加载到可见存储器中的标签。这使得主机处理器能够对信息执行双路传送,并且每路传送上仅加载所要求的信息。在第一路传送中,将查找并加载进入内部存储器的内容,在第二路传送中,将查找并加载进入外部存储器的内容。
目前看起来更简单的另一方式是对从处理器专用存储器进行设置,使得它的所有内容都驻留在预定地址以上(或以下)。随后对要传送的信息进行相应排序,将待加载到从处理器专用存储器中的所有代码和数据段都放置在排序后的映像的末端(或开头)处。然后,当遇到比所述预定(边界)地址大(或小)的地址时,OS友好引导加载器的主机部分所能做的就是进入其第二阶段。
为了在主机侧节省存储器或增强代码完整性和平台安全性,也可以按几种不同的方式对要加载到从处理器的信息进行预处理。例如,可根据适当算法对该信息进行压缩,从而减小在主机侧上的该信息所需的存储器的大小。对于另一实施例,可以对该信息进行加密,从而增强平台安全性,因为可能存在的黑客将不能容易地对信息进行分解。目前相信如果待加载到从处理器的信息是存储在主机处理器的内部文件系统中的,则加密处理是有价值的,因为在此情况下该信息对于任何人来说(至少在理论上)都是可获得的。
根据本说明,应当明白,OS机制对于OS友好引导加载器的由从处理器执行的从部分有效,并且从处理器可以对通信所需的现有依赖于OS的代码进行再使用。此外,由于主机部分自动决定何时从第一阶段(或推模式)切换到第二阶段(或引导加载器模式),所以OS友好引导加载器可高效地利用加载资源(例如,DMA)。
预期本发明可在包括例如移动通信设备的广泛的各种环境下实施。较新的这种装置可使用在此描述的OS友好引导加载器来引导它们的DSP,这些DSP被提供用于与它们的主处理器软件系统相协作地处理多媒体任务。
在此描述的OS友好引导加载器考虑了操作系统并且实际上在操作系统上执行。在引导从处理器或者再引导从处理器时,主机处理器完全运行。本引导加载器不要求主机处理器处于特定状态以启动从处理器。实际上,可在执行主机处理器软件的过程中的任何时刻执行对从处理器的启动。在正从主机处理器向从处理器和主机不可访问RAM加载信息时,OS友好引导加载器不需要在从处理器中运行的特殊可执行文件。将一个可执行代码链接到所有从处理器的存储器。在加载所有代码之前引导从处理器,但不运行被链接到主机处理器不可访问的存储器的代码,直到在链接到从处理器的主机处理器可访问的存储器的代码的帮助下加载了该代码为止。
因此应当明白,在此描述的OS友好引导加载器还能够改变在从处理器中执行的软件并且在完全加载应用软件之前启动对该应用软件的从动执行。可以选择一个或更多个应用进程,由引导加载器将它们“推”入从处理器的主机处理器可访问的存储器中,并且这些进程将在开始对从处理器的主机处理器不可访的问存储器进行加载的相同时间点开始执行。
该能力在许多装置中和许多应用情况中都是很重要的。在移动电话中,例如,这种应用情况包括进行呼叫、接收呼叫、对语音进行压缩/解压缩、播放音乐文件等。利用在此描述的OS友好引导加载器,实际上可以在主机处理器正在运行的任何时刻在从处理器中加载并执行新软件。
应当理解,上述过程可根据需要重复执行。为了便于理解,根据可由例如可编程计算机系统的组件来执行的动作序列来描述本发明的许多方面。应当认识到,可由专用电路(例如相互连接以执行专用功能的多个离散逻辑门,或专用集成电路)、由一个或更多个处理器执行的程序指令或由这两者的组合来执行各种动作。
此外,还可考虑将在此描述的本发明全部实现任何形式的计算机可读存储介质中,所述计算机可读存储介质存储有可由或者结合指令执行系统、设备或装置(诸如基于计算机的系统、含有处理器的系统、或者可从介质取出指令并执行指令的其他系统)使用的适当指令组。在此使用时,“计算机可读介质”可以是包含、存储、传达、传播或传输由或者结合指令执行系统、设备或装置使用的程序的装置。该计算机可读介质例如可以是(但不限于)电子、磁、光、电磁、红外或半导体系统、设备、装置或传播介质。该计算机可读介质的更具体的示例(非穷举列表)包括具有一条或更多条导线的电连接、便携式计算机磁盘、RAM、ROM、可擦除可编程只读存储器(EPROM或闪存存储器)以及光纤。
因此,本发明可实现为多种不同的形式,以上并未描述所有形式,所有这些形式都应当在本发明的范围内。对于本发明的各种方面中的每一个方面,可以将任何这种形式称为“被配置成”执行已描述的动作的“逻辑”,或者另选地称为执行已描述的动作的“逻辑”。
需要强调的是,术语“包括”在本申请中使用时是指存在所陈述的特征、整数、步骤或组成部分,但不排除一个或更多个其他特征、整数、步骤、组成部分或其群组的存在或者附加。
上述具体实施方式仅是例示性的,不应当被认为是在任何方面的限制。本发明的范围由所附权利要求来确定,并且旨在包括落入所述权利要求范围内的所有变型例和等同例。

Claims (23)

1.一种在包括主处理器和从处理器的多处理器系统中向所述从处理器中加载信息的方法,所述方法包括以下步骤:
a)将所述从处理器复位并将所述从处理器保持在复位状态下;
b)将信息推入到所述主处理器和所述从处理器都可访问的第一存储器中;
c)引导所述从处理器;
d)启动所述从处理器中的操作系统,包括阻断对程序代码位于所述从处理器可访问但所述主处理器不可访问的第二存储器中的进程的调度;
e)在所述第一存储器中预留中间存储区;
f)向所述主处理器发送关于所预留的中间存储区的位置和大小的信息;
g)基于所发送的信息,将待加载到所述第二存储器中的信息加载到所述中间存储区中;
h)向所述从处理器发送表示已对所述中间存储区进行了加载和是完成了加载处理还是要加载其它信息的第一消息;
i)将所述中间存储区中的信息复制到所述第二存储器中;以及
j)向所述主处理器发送表示已复制了所述中间存储区中的信息的第二消息。
2.根据权利要求1所述的方法,所述方法还包括以下步骤:如果存在其它待加载的信息,则重复步骤g到j,直到没有其它待加载的信息为止。
3.根据权利要求1所述的方法,其中,步骤d)包括以下步骤:创建中断处理程序,并创建在所述主处理器和所述从处理器两者中运行的进程的数据结构。
4.根据权利要求1所述的方法,其中,被推入到所述第一存储器中的信息包括所述操作系统和至少一个应用的至少一部分。
5.根据权利要求1所述的方法,其中,步骤d)包括以下步骤:阻断对除空闲进程以外的所有进程的调度。
6.根据权利要求1所述的方法,其中,步骤g)包括以下步骤:在待加载到所述第二存储器中的信息之前,添加表示所述信息待加载到所述第二存储器中的地址和所述信息的长度的至少一个标签。
7.根据权利要求1所述的方法,其中,步骤g)包括以下步骤:将待加载到所述第二存储器中的信息划分成多个块,并且将第一块加载到所述中间存储区中。
8.根据权利要求7所述的方法,所述方法还包括以下步骤:连续针对各个块,重复步骤g到j。
9.根据权利要求1所述的方法,其中,被推入到所述第一存储器中的信息包括表示是否要将所述信息加载到所述第二存储器中的至少一个标签。
10.根据权利要求1所述的方法,其中,待加载到所述第二存储器中的信息是压缩信息和加密信息中的至少一个。
11.一种多处理器系统,所述系统包括:
主机处理器;
至少一个客户机处理器;
第一随机访问存储器,其可由所述主机处理器和所述客户机处理器访问,其中,所述第一存储器包括中间存储区;
第二随机访问存储器,其可由所述客户机处理器访问但不可由所述主机处理器访问;以及
引导加载器,其包括主机部分和客户机部分,
所述主机部分可加载到所述第一随机访问存储器中,并且所述主机部分具有:第一阶段,其将所述客户机处理器复位并将其保持在复位状态下,并且将信息推入到所述第一随机访问存储器中;和由所述客户机部分启动的第二阶段,其将待加载到所述第二随机访问存储器中的信息加载到所述中间存储区中,并且向所述客户机部分发送表示已对所述中间存储区进行了加载的第一消息;并且
所述客户机部分可加载到所述第一随机访问存储器中,并且所述客户机部分启动操作系统,包括启动空闲进程并且最初阻断对程序代码位于所述第二随机访问存储器中的所有进程的调度;将加载到所述中间存储区中的信息复制到所述第二随机访问存储器;并且向所述主机部分发送表示已复制了信息的第二消息。
12.根据权利要求11所述的系统,其中,通过所述第一阶段推入到所述第一存储器中的信息包括所述引导加载器的所述客户机部分和所述操作系统,并且所述第二阶段使得所述主机处理器与客户机处理器能够交换消息。
13.根据权利要求12所述的系统,其中,通过所述第一阶段推入到所述第一存储器中的信息包括至少一个应用的至少一部分。
14.根据权利要求11所述的系统,其中,所述客户机部分最初阻断对除空闲进程以外的所有进程的调度。
15.根据权利要求11所述的系统,其中,所述空闲进程向所述主机处理器发送关于所述中间存储区的地址和长度的信息。
16.根据权利要求11所述的系统,待加载到所述第二随机访问存储器中的信息包括表示所述信息待加载到所述第二随机访问存储器中的地址和所述信息的长度的至少一个标签。
17.根据权利要求11所述的系统,其中,所述中间存储区被组织成多个信息块,并且每个块都包括表示该块的长度和该块在所述第二随机访问存储器中的地址的头部。
18.根据权利要求11所述的系统,其中,被推入到所述第一随机访问存储器中的信息包括表示是否要将所述信息加载到所述第二随机访问存储器中的至少一个标签。
19.根据权利要求11所述的系统,其中,待加载到所述第二随机访问存储器中的信息是压缩信息和加密信息中的至少一个。
20.一种计算机可读介质,所述计算机可读介质包含用于在包括主处理器和从处理器的多处理器系统中向所述从处理器中加载信息的计算机程序,其中,所述计算机程序执行以下步骤:
a)将所述从处理器复位并将所述从处理器保持在复位状态下;
b)将信息推入到所述主处理器和所述从处理器都可访问的第一存储器中;
c)引导所述从处理器;
d)启动所述从处理器中的操作系统,包括阻断对程序代码位于所述从处理器可访问但所述主处理器不可访问的第二存储器中的进程的调度;
e)在所述第一存储器中预留中间存储区;
f)向所述主处理器发送关于所预留的中间存储区的位置和大小的信息;
g)基于所发送的信息,将待加载到所述第二存储器中的信息加载到所述中间存储区中;
h)向所述从处理器发送表示已对所述中间存储区进行了加载和是完成了加载处理还是要加载其它信息的第一消息;
i)将所述中间存储区中的信息复制到所述第二存储器中;以及
j)向所述主处理器发送表示已复制了所述中间存储区中的信息的第二消息。
21.根据权利要求20所述的计算机可读介质,其中,所述计算机程序还执行以下步骤:如果存在其它待加载的信息,则重复步骤g到j,直到不存在其它待加载的信息为止。
22.根据权利要求20所述的计算机可读介质,其中,步骤g)包括以下步骤:在待加载到所述第二存储器中的信息之前,添加表示所述信息待加载到所述第二存储器中的地址和所述信息的长度的至少一个标签。
23.根据权利要求20所述的计算机可读介质,其中,步骤g)包括以下步骤:将待加载到所述第二存储器中的信息划分成多个块,并且将第一块加载到所述中间存储区中。
CN200680002829A 2005-01-22 2006-01-17 操作系统友好引导加载器 Active CN100580628C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/040,798 US7356680B2 (en) 2005-01-22 2005-01-22 Method of loading information into a slave processor in a multi-processor system using an operating-system-friendly boot loader
US11/040,798 2005-01-22

Publications (2)

Publication Number Publication Date
CN101107592A true CN101107592A (zh) 2008-01-16
CN100580628C CN100580628C (zh) 2010-01-13

Family

ID=36593731

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680002829A Active CN100580628C (zh) 2005-01-22 2006-01-17 操作系统友好引导加载器

Country Status (7)

Country Link
US (1) US7356680B2 (zh)
EP (2) EP3270285B1 (zh)
KR (1) KR101255382B1 (zh)
CN (1) CN100580628C (zh)
ES (1) ES2642320T3 (zh)
PL (1) PL1844394T3 (zh)
WO (1) WO2006077068A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102812453A (zh) * 2010-03-22 2012-12-05 高通股份有限公司 在多处理器系统中将可执行软件图像从主要处理器直接分散加载到一个或一个以上次要处理器
CN103975305A (zh) * 2011-12-05 2014-08-06 高通股份有限公司 多处理器系统中的处理器间协议

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702893B1 (en) * 2006-09-22 2010-04-20 Altera Corporation Integrated circuits with configurable initialization data memory addresses
US8667254B1 (en) * 2008-05-15 2014-03-04 Xilinx, Inc. Method and apparatus for processing data in an embedded system
EP2141590A1 (en) * 2008-06-26 2010-01-06 Axalto S.A. Method of managing data in a portable electronic device having a plurality of controllers
US8145749B2 (en) 2008-08-11 2012-03-27 International Business Machines Corporation Data processing in a hybrid computing environment
US8141102B2 (en) 2008-09-04 2012-03-20 International Business Machines Corporation Data processing in a hybrid computing environment
US7984267B2 (en) * 2008-09-04 2011-07-19 International Business Machines Corporation Message passing module in hybrid computing system starting and sending operation information to service program for accelerator to execute application program
US8230442B2 (en) 2008-09-05 2012-07-24 International Business Machines Corporation Executing an accelerator application program in a hybrid computing environment
US8527734B2 (en) 2009-01-23 2013-09-03 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
US9286232B2 (en) 2009-01-26 2016-03-15 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a cache of ranges of currently registered virtual addresses
US8843880B2 (en) 2009-01-27 2014-09-23 International Business Machines Corporation Software development for a hybrid computing environment
US8255909B2 (en) 2009-01-28 2012-08-28 International Business Machines Corporation Synchronizing access to resources in a hybrid computing environment
US8001206B2 (en) 2009-01-29 2011-08-16 International Business Machines Corporation Broadcasting data in a hybrid computing environment
US9170864B2 (en) 2009-01-29 2015-10-27 International Business Machines Corporation Data processing in a hybrid computing environment
US8010718B2 (en) 2009-02-03 2011-08-30 International Business Machines Corporation Direct memory access in a hybrid computing environment
US8386757B1 (en) * 2009-02-13 2013-02-26 Unidesk Corporation Managed desktop system
US8037217B2 (en) 2009-04-23 2011-10-11 International Business Machines Corporation Direct memory access in a hybrid computing environment
US8180972B2 (en) 2009-08-07 2012-05-15 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment by maintaining remote memory values locally
US9417905B2 (en) 2010-02-03 2016-08-16 International Business Machines Corporation Terminating an accelerator application program in a hybrid computing environment
US8578132B2 (en) 2010-03-29 2013-11-05 International Business Machines Corporation Direct injection of data to be transferred in a hybrid computing environment
US20120102314A1 (en) * 2010-04-01 2012-04-26 Huizhou TCL Mobile Communications Co., Ltd. Smart phone system and booting method thereof
US9015443B2 (en) 2010-04-30 2015-04-21 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment
KR101863250B1 (ko) * 2012-02-17 2018-06-04 인포뱅크 주식회사 프로그램 실행 방법 및 장치와 이를 위한 기록매체
US8615766B2 (en) 2012-05-01 2013-12-24 Concurix Corporation Hybrid operating system
CN102929719B (zh) * 2012-09-18 2015-09-02 中标软件有限公司 一种多核计算机上多操作系统的控制方法及多核计算机
CN105144185B (zh) 2013-04-23 2018-06-05 惠普发展公司,有限责任合伙企业 验证控制器代码和系统启动代码
CN105308609B (zh) * 2013-04-23 2017-12-29 惠普发展公司,有限责任合伙企业 存储事件数据的系统和方法
CN104199702A (zh) * 2014-09-08 2014-12-10 吴健辉 一种软件版本加载方法
TWI551479B (zh) * 2014-12-31 2016-10-01 橙的電子股份有限公司 內置啓動裝載器之胎壓偵測系統及其更新方法
WO2020159533A1 (en) 2019-02-01 2020-08-06 Hewlett-Packard Development Company, L.P. Security credential derivation
US11520662B2 (en) 2019-02-11 2022-12-06 Hewlett-Packard Development Company, L.P. Recovery from corruption
GB2597082B (en) * 2020-07-14 2022-10-12 Graphcore Ltd Hardware autoloader
CN113094111B (zh) * 2021-04-16 2024-01-09 三星(中国)半导体有限公司 设备以及设备的启动方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3639571A1 (de) 1986-11-20 1988-06-01 Standard Elektrik Lorenz Ag Verfahren und schaltungsanordnung zum urladen eines zweitrechners
US5155833A (en) * 1987-05-11 1992-10-13 At&T Bell Laboratories Multi-purpose cache memory selectively addressable either as a boot memory or as a cache memory
US5068780A (en) 1989-08-01 1991-11-26 Digital Equipment Corporation Method and apparatus for controlling initiation of bootstrap loading of an operating system in a computer system having first and second discrete computing zones
US5799186A (en) 1990-12-20 1998-08-25 Eastman Kodak Company Method and apparatus for programming a peripheral processor with a serial output memory device
KR970002882B1 (ko) * 1992-06-11 1997-03-12 엘지전보통신 주식회사 다중 프로세서 시스템의 부트 스트랩 프로그램 로딩 방법 및 장치
US6438683B1 (en) 1992-07-28 2002-08-20 Eastman Kodak Company Technique using FIFO memory for booting a programmable microprocessor from a host computer
US5347514A (en) * 1993-03-26 1994-09-13 International Business Machines Corporation Processor-based smart packet memory interface
US5652886A (en) 1994-10-03 1997-07-29 United Technologies Corporation System for loading a boot program into an initially blank programmable memory of a microprocessor using state machine and serial bus
US5754863A (en) * 1995-01-20 1998-05-19 Redcom Laboratories, Inc. System for downloading program code to a microprocessor operative as a slave to a master microprocessor
US5696949A (en) 1995-06-15 1997-12-09 Intel Corporation System for PCI slots expansion using asynchronous PCI-to-PCI bridge with clock generator for providing clock signal to the expansion mother board and expansion side of bridge
US6058474A (en) 1997-01-24 2000-05-02 Texas Instruments Incorporated Method and apparatus for DMA boot loading a microprocessor without an internal ROM
US6684397B1 (en) 1997-09-08 2004-01-27 Novell, Inc. Auto-install apparatus and method
US5944820A (en) 1997-10-15 1999-08-31 Dell U.S.A., L.P. Modifiable partition boot record for a computer memory device
US6012142A (en) * 1997-11-14 2000-01-04 Cirrus Logic, Inc. Methods for booting a multiprocessor system
JP2000242612A (ja) * 1999-02-25 2000-09-08 Sega Enterp Ltd メモリ及びバスを共有化したシステム
US6490722B1 (en) 1999-03-30 2002-12-03 Tivo Inc. Software installation and recovery system
WO2001027753A2 (en) 1999-10-12 2001-04-19 Scientific-Atlanta, Inc. Method and apparatus for loading software into a plurality of processors
US6601167B1 (en) 2000-01-14 2003-07-29 Advanced Micro Devices, Inc. Computer system initialization with boot program stored in sequential access memory, controlled by a boot loader to control and execute the boot program
US6760785B1 (en) 2000-03-29 2004-07-06 Unisys Corporation Method, apparatus, and computer program product for establishing communications between an adapter card and a host processor running in a bios supported environment
GB0009945D0 (en) * 2000-04-20 2000-06-07 Sgs Thomson Microelectronics Debugging device nad method
US6691216B2 (en) 2000-11-08 2004-02-10 Texas Instruments Incorporated Shared program memory for use in multicore DSP devices
US6810478B1 (en) 2000-12-12 2004-10-26 International Business Machines Corporation System for remote booting of muntliple operating systems using chained bootstrap mechanism in a network
US6813522B1 (en) * 2000-12-29 2004-11-02 Emc Corporation Method of sharing memory in a multi-processor system including a cloning of code and data
US20020138156A1 (en) 2001-01-25 2002-09-26 Wong Isaac H. System of connecting multiple processors in cascade
US7032106B2 (en) 2001-12-27 2006-04-18 Computer Network Technology Corporation Method and apparatus for booting a microprocessor
KR100469669B1 (ko) 2002-09-24 2005-02-02 삼성전자주식회사 플래시 메모리를 이용하여 부팅되는 시스템 장치 및 그시스템 부팅 방법
US20040088697A1 (en) 2002-10-31 2004-05-06 Schwartz Jeffrey D. Software loading system and method
US7100038B2 (en) 2003-03-13 2006-08-29 Sun Microsystems, Inc. System and method for device parameter persistence
JP4349837B2 (ja) 2003-04-24 2009-10-21 富士通株式会社 情報処理システム
CN1301473C (zh) * 2003-09-17 2007-02-21 中兴通讯股份有限公司 多处理器系统共享引导模块的方法
CN1277224C (zh) * 2003-10-20 2006-09-27 中兴通讯股份有限公司 嵌入式系统中主从式多处理器的引导方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102812453A (zh) * 2010-03-22 2012-12-05 高通股份有限公司 在多处理器系统中将可执行软件图像从主要处理器直接分散加载到一个或一个以上次要处理器
US9058191B2 (en) 2010-03-22 2015-06-16 Qualcomm Incorporated Direct transfer of executable software image to memory allocated by target processor based on transferred image header
CN102812453B (zh) * 2010-03-22 2016-02-24 高通股份有限公司 在多处理器系统中将可执行软件图像从主要处理器直接分散加载到一个或一个以上次要处理器
CN105718419B (zh) * 2010-03-22 2019-04-16 高通股份有限公司 在多处理器系统中将可执行软件图像从主要处理器直接分散加载到一个或一个以上次要处理器
CN103975305A (zh) * 2011-12-05 2014-08-06 高通股份有限公司 多处理器系统中的处理器间协议
CN103975305B (zh) * 2011-12-05 2017-10-31 高通股份有限公司 多处理器系统中的处理器间协议

Also Published As

Publication number Publication date
KR20070097538A (ko) 2007-10-04
US20060168435A1 (en) 2006-07-27
PL1844394T3 (pl) 2017-12-29
EP3270285A1 (en) 2018-01-17
EP3270285B1 (en) 2019-03-20
CN100580628C (zh) 2010-01-13
KR101255382B1 (ko) 2013-04-17
EP1844394B1 (en) 2017-07-26
US7356680B2 (en) 2008-04-08
ES2642320T3 (es) 2017-11-16
WO2006077068A3 (en) 2006-11-02
EP1844394A2 (en) 2007-10-17
WO2006077068A2 (en) 2006-07-27

Similar Documents

Publication Publication Date Title
CN100580628C (zh) 操作系统友好引导加载器
CN101128807B (zh) 用于扩充中断控制器和合成中断来源的系统和方法
US11281388B2 (en) Method for managing a multi-system shared memory, electronic device and non-volatile computer-readable storage medium
CN101438266A (zh) 按照离散的级引导操作系统
CN104471537A (zh) 中介虚拟机任务管理
TW201303613A (zh) 分散式計算架構
US8069333B2 (en) Converting logical to real number to access shared configuration information in event driven state transiting reconfigurable system
CN102844747A (zh) 将rdma语义映射到高速存储
CN100583049C (zh) 多核处理器共享代码段补丁方法及装置
WO2016195624A1 (en) Transferring an image file over a network
CN105404635A (zh) 字符串匹配的方法、设备和异构计算系统
CN103678163A (zh) 数据流的切换方法、装置及系统
RU2281546C1 (ru) Способ обработки информации на основе потока данных и устройство для его осуществления
WO2014011084A1 (ru) Способ управления ресурсами в вычислительной системе
JP5365840B2 (ja) マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法
CN113986379B (zh) 一种应用启动方法、装置、计算机设备和存储介质
KR102268796B1 (ko) 하이퍼바이저 기반 plc 서비스 처리 장치
JPH06295289A (ja) 複数計算機におけるブート方法
JP5379618B2 (ja) コンピュータシステム
CN115543191A (zh) Pcie ssd的数据存储方法、系统、设备及存储介质
JP2023534238A (ja) ハードウェアオートローダ
EP1684175B1 (en) System and process for incremental loading of software program code, corresponding host computer and software transmission process, and associated products
CN113835850A (zh) 任务处理方法、系统及存储介质
TWI630551B (zh) 下載程式的方法
CN100580645C (zh) 获取软件代码的系统和方法、主计算机和软件传输过程

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant