嵌入式系统的操作方法与控制芯片与流程

文档序号:11774033阅读:276来源:国知局
嵌入式系统的操作方法与控制芯片与流程

本发明是关于嵌入式系统,尤其是关于嵌入式系统的控制芯片及其执行驱动程序的操作方法。



背景技术:

现今的嵌入式系统因为提供较多功能,所以通常会借由操作系统来协助管理系统资源,而嵌入式系统的驱动程序可以执行于操作系统的使用者模式(usermode)或是核心模式(kernelmode)。执行于使用者模式的驱动程序具有以下优点:(1)当使用者模式的驱动程序运作不正常时,不会导致核心崩溃(crash);(2)因为不需要于保护模式与非保护模式之间作切换,所以应用程序(application)呼叫使用者模式驱动程序时的反应速度较快。另一方面,执行于核心模式的驱动程序具有以下优点:(1)对于操作系统的多工处理的支持比较完整;(2)对于操作系统进行休眠时的支持比较完整。然而,传统上,一个驱动程序要执行于使用者模式执行或是核心模式,在驱动程序的编译期间(compiletime)就必须决定,无法在系统的执行期间(runtime)才决定,限制了驱动程序在使用上的弹性。



技术实现要素:

鉴于现有技术的不足,本发明的一目的在于提供一种嵌入式系统的操作方法与控制芯片,以提升嵌入式系统执行驱动程序时的弹性。

本发明提出一种操作一嵌入式系统的方法,该嵌入式系统包含一目标硬件,该嵌入式系统的一操作系统具有一使用者模式及一核心模式,该方法包含:提供一使用者模式驱动程序,该使用者模式驱动程序执行于该使用者模式,用来控制该目标硬件;提供一核心模式驱动程序,该核心模式驱动程序执行于该核心模式,用来控制该目标硬件;以及依据一指示代码决定使用该使用者模式驱 动程序或该核心模式驱动程序来控制该目标硬件。

本发明另提出一种嵌入式系统的控制芯片,该控制芯片用来控制该嵌入式系统的一目标硬件,该控制芯片包含:一处理单元,用来执行一操作系统以实现该嵌入式系统的功能,该操作系统具有一使用者模式及一核心模式;以及一存储器,耦接该处理单元,用来储存该嵌入式系统的系统程序,包含:一使用者模式驱动程序,执行于该使用者模式,用来控制该目标硬件;一核心模式驱动程序,执行于该核心模式,用来控制该目标硬件;以及一判断模块。该处理单元是执行该判断模块来依据该目标硬件所对应的一指示代码决定使用该使用者模式驱动程序或该核心模式驱动程序以控制该目标硬件。

本发明的嵌入式系统的操作方法与控制芯片能够令嵌入式系统在执行期间才决定要执行使用者模式驱动程序或核心模式驱动程序。相较于已知技术,本发明无需预先决定驱动程序将执行于使用者模式或核心模式,提高了嵌入是式统执行驱动程序的弹性。

附图说明

为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具体实施方式作详细说明,其中:

图1为一个嵌入式系统的局部功能方块图;

图2为本发明的系统程序的使用者空间与核心空间的示意图;

图3为本发明统一使用者模式驱动程序与核心模式驱动程序的函数接口的流程图;以及

图4为本发明选择使用者模式驱动程序或核心模式驱动程序来控制硬件的一实施例的流程图。

图中元件标号说明如下:

10嵌入式系统

100控制芯片

110处理单元

120快闪存储器控制器

130影像处理单元

140存储器

142应用程序

144程序库

146操作系统

148操作系统功能模块

1442判断模块

1444使用者模式驱动程序串列

1482其他功能模块

1484核心模式驱动程序串列

200快闪存储器

300显示器

s310~s340、s410~s490步骤

具体实施方式

本发明的披露内容包含嵌入式系统的操作方法与控制芯片,在实施为可能的前提下,本技术领域技术人员能够依本说明书的披露内容来选择等效的元件或步骤来实现本发明,亦即本发明的实施并不限于后叙的实施例。

图1为一个嵌入式系统的局部功能方块图。嵌入式系统10例如是电视、手持电子装置(例如手机、平板电脑)或是其他消费性电子装置等系统,包含控制芯片100、快闪存储器200以及显示单元300。快闪存储器200储存控制芯片100执行嵌入式系统10的功能时所需的系统程序,控制芯片100的处理单元110透过快闪存储器控制器120从快闪存储器200读取系统程序并载入存储器140中。系统程序包含应用程序142、操作系统146、操作系统功能模块148以及供应用程序142使用的程序库144。处理单元110执行操作系统146使嵌入式系统10具有系统调度、档案系统、或甚至多工处理等能力,而操作系统功能模块148提供操作系统146存取系统资源所需的程序,例如驱动程序等;另一方面,操作系统146还提供控制芯片100执行应用程序142的能力,如此,嵌入式系统10可完成各式各样的功能,而应用程序142的一些共用的 资源则储存于程序库144中。当控制芯片100欲控制显示单元300时,例如将一图案显示于显示单元300,可由处理单元110执行显示单元300的驱动程序,以便直接在显示单元300上描绘出该图案,或是将影像处理单元130处理完成的该图案显示于显示单元300。

图2为本发明的系统程序区分为使用者空间(userspace)与核心空间(kernelspace)的示意图。本发明的系统程序载入存储器140时,是选择性载入于两个独立虚拟存储器空间,即使用者空间与核心空间。例如说,所有的使用者模式驱动程序载入于使用者空间,所有的核心模式驱动程序则载入于核心空间。使用者空间包含应用程序142及程序库144,核心空间包含操作系统146及操作系统功能模块148。操作系统146在执行的时候,可操作于使用者模式(usermode)或核心模式(kernelmode),其中,在使用者模式下仅能存取使用者空间中的数据及程序,而在核心模式下则仅能存取核心空间中的数据及程序。在本发明一实施例中,使用者空间及核心空间分别注册有显示单元300的使用者模式驱动程序以及核心模式驱动程序,更详细地说,显示单元300的使用者模式驱动程序注册于程序库144的使用者模式驱动程序串列1444中,显示单元300的核心模式驱动程序则注册于操作系统功能模块148的核心模式驱动程序串列1484中。除了核心模式驱动程序串列1484之外,操作系统功能模块148还包含嵌入式系统10所需的其他功能模块1482。

传统上,产生系统的驱动程序的方法包含以下的步骤:(1)依据目标硬件的功能、特性以及将使用于使用者模式或核心模式来撰写程序码;(2)编译该程序码以得到可控制该目标硬件的驱动器逻辑(driverlogic);以及(3)将该驱动器逻辑注册,以得到驱动程序。在步骤(3)中,若将使用于使用者模式的驱动器逻辑注册于使用者空间,则得到使用者模式驱动程序,而若将使用于核心模式的驱动器逻辑注册于核心空间,则得到核心模式驱动程序。此外,于步骤(1)所产生的程序码,即使是对应同样功能的函数(function),只要其编译后的驱动器逻辑是注册到不同的注册空间,则其所使用的函数接口仍会有所差异。例如说,若想在步骤(3)中得到使用者模式驱动程序,则必须在步骤(1)以符合使用者空间的函数接口来撰写程序码,对核心模式驱动程序而言同理。常见的对应相同功能但接口不同的函数包括了复制函数(copyfunction)、存储器配置函数(memory allocationfunction)等。

为使嵌入式系统10能更加流畅地于执行期间在使用者模式驱动程序与核心模式驱动程序之间做选择,本发明先统一两者对应同样功能但具有不同接口的函数,再执行注册。如此一来,之后嵌入式系统10可以使用同样的函数接口呼叫对应同样功能的函数,提升执行嵌入式系统10执行驱动程序时的便利性。

图3为本发明统一使用者模式驱动程序与核心模式驱动程序的函数接口的流程图。首先,为对应相同功能,但接口不同的函数提供单一接口,也就是提供同时适用于使用者空间与核心空间的函数接口(步骤s310)。因为该使用者空间的驱动器逻辑与该核心空间的驱动器逻辑对应相同功能但接口不同的函数可能不只一个,所以步骤s310可能提供不只一个函数接口。接着,以该函数接口包装(wrap)该使用者空间的驱动器逻辑与该核心空间的驱动器逻辑,以分别产生使用者模式初始驱动程序及核心模式初始驱动程序(步骤s320)。最后将该使用者模式初始驱动程序注册于使用者空间以产生使用者模式驱动程序(步骤s330),以及将该核心模式初始驱动程序注册于核心空间以产生核心模式驱动程序(步骤s340)。请注意,步骤s340亦可早于步骤s330执行。更详细地说,由于该使用者模式初始驱动程序与该核心模式初始驱动程序系统一以同一接口函数作为呼叫接口,因此后续不论是在使用者模式或是核心模式,皆可使用该相同的接口函数呼叫该使用者模式驱动程序或者该核心模式驱动程序,并据以执行相同的操作。

事实上,嵌入式系统10除了显示单元300之外还包含其他硬件,这些硬件也需要相对应的驱动程序,因此嵌入式系统10包含多个使用者模式驱动程序以及多个核心模式驱动程序。这些使用者模式驱动程序以链接串列(linkedlist)的形式存在于使用者模式驱动程序串列1444中,这些核心模式驱动程序以链接串列的形式存在于核心模式驱动程序串列1484中。不论是在使用者模式驱动程序串列1444中或是在核心模式驱动程序串列1484中,驱动程序具有各自的识别码。在本发明的其中一个实施例中,在步骤s330及步骤s340的注册程序中,使用者模式初始驱动程序与核心模式初始驱动程序以相同的识别码分别注册于使用者空间以及核心空间,也就是说,对应相同硬件的驱动程序, 在使用者模式驱动程序串列1444中或是在核心模式驱动程序串列1484中有同样的识别码。在一实施例中,识别码可以是驱动程序在链接串列(linkedlist)中的排序,但不以此为限。这样设计的好处在于方便嵌入式系统10以同样的识别码,即可依需求在使用者模式驱动程序串列1444或核心模式驱动程序串列1484中找到对应相同硬件的使用者模式驱动程序或者核心模式驱动程序。

在本发明一实施例中,当嵌入式系统10需要操作一目标硬件(例如显示单元300或其他硬件)时,首先依据指示代码得到该目标硬件的一个处理代码(handle),接着依据一操作指令(例如复制指令(copy))及该处理代码来操作对应的驱动程序以控制该目标硬件。其中,该对应的驱动程序依需求可以是使用者模式驱动程序,也可以是核心模式驱动程序。。

在一个实施例中,假设该目标硬件的驱动程序在使用者模式驱动程序串列1444及核心模式驱动程序串列1484中的识别码皆为0x00000001(也就是在使用者模式驱动程序串列1444及核心模式驱动程序串列1484中为第一排序),则对应于使用者模式的指示代码被处理单元110决定同样为0x00000001,而对应于核心模式时的指示代码则为0x80000001。也就是说,两者只有最高有效位(mostsignificantbit,msb)不同。因此,在使用者模式下可依据指示代码0x00000001找到对应的使用者模式驱动程序,而在核心模式下则可依据指示代码0x80000001找到对应的核心模式驱动程序。

图4为本发明选择使用者模式驱动程序或核心模式驱动程序来控制硬件的一实施例的流程图。首先,接收一操作指令与一指示代码(步骤s410)。接着,依据该指示代码决定一识别码(步骤s420)。实作上,判断模块1442可以直接使用查找表来判断指示代码对应的识别码,例如指示代码0x00000001、0x80000001皆对应于识别码0x00000001;或者,当对应使用者空间与核心空间的指示代码仅有msb不同,则判断模块1442可以利用遮罩(mask)遮蔽指示代码的msb来直接得到识别码。接着,判断模块1442判断该指示代码是对应使用者空间或是核心空间(步骤s430)。实作上,判断模块1442是由处理单元110执行,其可以直接使用查找表来判断指示代码对应使用者空间或核心空间,例如指示代码为0x00000001对应于使用者模式,指示代码为0x80000001对应于核心模式。或者,判断模块1442可以利用遮罩,仅比对指示代码的msb, 0对应于使用者模式,8对应于核心模式。请注意,步骤420与步骤430的执行顺序可以调换,亦可以同步进行。此外,当步骤430先于步骤420进行时,由于已知要选择的是使用者模式驱动程序或核心模式驱动程序,因此可以直接将指示代码映射为识别码。例如当步骤430中判断为选择使用者模式驱动程序时,该映射机制不作任何转换,直接将指示代码视为识别码,当步骤430中判断为选择核心模式驱动程序时,直接将指示代码0x80000001映射为0x00000001以作为识别码。

决定识别码并判断出该指示代码是对应使用者空间或是核心空间后,依据识别码从对应的空间中决定对应该指示代码的驱动程序(步骤s440或步骤s450)。也就是说,当指示代码对应使用者空间,则执行步骤s440,依据识别码从使用者模式驱动程序串列1444决定对应的使用者模式驱动程序;反之,若指示代码对应核心空间,执行步骤s450,依据识别码从核心模式驱动程序串列1484决定对应的核心模式驱动程序。

步骤s440或步骤s450完成后,回传一处理代码(handle)(步骤s460)。详细来说,步骤410~步骤460是透过一开启指令(open)进行操作。操作的同时,处理单元110首先依据该开启指令于存储器140中定义出第一存储器区间及第二存储器区间(未绘示),其中,第一存储器区间属于使用者空间,第二存储器区间属于核心空间。接着,依据判断出的识别码所决定的使用者模式驱动程序及核心模式驱动程序,于第一存储器区间载入对应于所决定的使用者模式驱动程序的数据,以及于第二存储器区间载入对应于所决定的核心模式驱动程序的数据。前述回传的处理代码包含一存储器地址,当该指示代码对应于使用者空间,则该存储器地址指向第一存储器区间,当该指示代码对应于核心空间,则该存储器地址是指向第二存储器区间。后续对该目标硬件的操作,皆直接依据操作指令与该处理代码来进行(步骤s470),而无须再进行判断。详细来说,嵌入式系统10是直接依据先前所选择的使用者模式/核心模式驱动程序、以及对应的第一/第二存储器区间所纪录的内容来进行操作指令。此外,在一较佳实施例中,依据判断出的识别码所决定的使用者模式驱动程序及核心模式驱动程序,处理单元110仅依据该开启指令于存储器140中定义出第一存储器区间(使用者空间)或第二存储器区间(核心空间),并进行后续流程。

接着,判断是否继续操作该目标硬件(步骤s480),如果继续操作该目标硬件(步骤s480判断为是),则回到步骤s470,直接依据操作指令与该处理代码进行操作;反之(步骤s480判断为否),结束此次对目标硬件的操作(步骤s490)。详细来说,若不继续操作该目标硬件,可透过一关闭指令(close)清除该处理代码的值,并且释放前述第一/第二存储器区间。

即使在嵌入式系统10的执行期间(runtime),通过本发明仍可动态决定针对一目标硬件使用核心模式驱动程序或使用者模式驱动程序。例如说,针对同一目标硬件,只要先将使用者模式驱动程序退出(exit),再初始化(initialize)核心模式驱动程序,即可轻易进行使用者模式驱动程序与核心模式驱动程序的切换。又或者,使用者可以透过一文字档定义每个操作所对应的模式,嵌入式系统10即可读取该文字档并据以产生对应的指示代码,来供后续操作。。

综上所述,本发明提供了嵌入式系统选择驱动程序时的弹性,以有效发挥使用者模式驱动程序与核心模式驱动程序各自的特点。举例来说,当系统需要即时性地操作目标硬件时,可以选择使用核心模式驱动程序,以得到操作系统的完整支持;然而,当系统需要频繁性地操作目标硬件时,可以选择使用使用者模式驱动程序,以避免系统频繁地切换于保护模式与非保护模式之间,拖累系统效能。

由于本技术领域技术人员可借由图1及图2的装置发明的披露内容来了解图3及图4的方法发明的实施细节与变化,因此虽然本发明的实施例如上所述,然而这些实施例并非用来限定本发明,本技术领域技术人员可依据本发明的明示或隐含之内容对本发明的技术特征施以变化,凡此种种变化均可能属于本发明所寻求的专利保护范围,换言之,本发明的专利保护范围须以本说明书的权利要求书所界定的为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1