一种嵌入式操作系统中切换任务的方法和单元的制作方法

文档序号:6464316阅读:207来源:国知局
专利名称:一种嵌入式操作系统中切换任务的方法和单元的制作方法
技术领域
本发明涉及嵌入式操作系统,尤其涉及一种嵌入式操作系统中切换任务 的方法禾n单元。
背景技术
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入 式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的 底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器browser等。与通用操作系统相比较,嵌入式操作系统在系统实时高效 性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出 的特点。中断是指由于某个事件的发生,CPU暂停当前正在执行的其它程序,转 而执行处理该事件的一个程序。该事件的程序执行完成后,CPU接着执行被 暂停的程序,这个过程称为中断。根据中断源的位置,有两种类型的中断 有的中断源在CPU的内部,称为内部中断。大多数的中断源在CPU的外部, 称为外部中断。根据中断引脚的不同,或者CPU响应中断的不同条件,也可 以把中断划分为可屏蔽中断和不可屏蔽中断两种。有了这种中断机制,CPU 才能有条不紊地"同时"完成多个任务,中断机制实质上帮助CPU提高了并 发"处理"能力。任务上下文是指任务切换要保存的数据,也叫上下文,简单地说, 一个 任务可看作一个运行中的C函数。对于抢先式RTOS (实时操作系统)来说, 在任务切换时,应保存当前任务的各种现场数据。现场数据包括局部变量、 各个CPU寄存器、堆栈指针和程序被中止的任务指针。CPU寄存器是任何任 务代码均会用到的;而局部变量, 一般的编译器是将其它安排在堆栈空间中, 堆栈指针也是各任务共用的,所以也需要保存。而对于全局变量,由于一般是在内存中的固定位置,各任务所占用的空间完全独立,所以不需要保存。变量在堆栈中的位置, 一般编译器中,对于一个存在函数调用嵌套的C 程序来说,大部分编译器将传递的参数和函数本身的局部变量放在了堆栈中, 编译器会自动生成压栈(push)和弹栈(p叩)代码,以保存上级函数的运行 寄存器。假设函数main ()调用testl(),而testl ()调用test2 (),则在执 行test2 ()中的代码时,堆栈映像如图1所示(ARM CPU的情况)。对于RTOS 系统,堆栈中的各种数据就是一个任务的现场。 一般CPU的堆栈指针SP只 有一个,在进行任务切换时,必须将挂起任务所使用的堆栈内容保存起来, 以便使该任务在下次唤醒时能从原地继续运行。在现有技术中,为了保存任务堆栈中的数据,为每个任务定义一个数组 变量作为堆栈,在任务切换时,将CPU堆栈指针SP指向当前运行的任务对 应的数组中的某个元素,即栈顶,如图2所示。而各任务的堆栈空间都是预 留好的。在图2中,为每个任务定义一个数组变量作为堆栈,数组的大小一般根 据可能出现的任务需要的最大堆栈来分配,任务所需的最大堆栈一般很难确 定, 一般根据经验值来确定,而且堆栈要确保不能溢出, 一旦溢出就很麻烦, 因此在实际中每个任务需要分配比实际大^艮多的一个堆栈,这样每个任务的 堆栈都会有浪费, 一般在操作系统中任务的个数是比较多的,因此对于整个 系统而言,存储资源的浪费就很明显。发明内容本发明要解决的技术问题是提供一种嵌入式操作系统中切换任务的方法 和单元,能够节省任务堆栈占用的存储空间。为了解决上述问题,本发明提供了 一种嵌入式操作系统中切换任务的方 法,包括将当前运行任务的现场数据保存在临时工作栈中;任务切换时,确定当前运行任务的现场数据的大小N并记录,将当前运 行任务的现场数据存^:在一个存储空间大小至少等于N的堆栈中,记录该任务与该堆栈的对应关系。进一步的,所述的方法还包括查找待运行任务对应的堆栈,查找到后将待运行任务的现场数据存放到 临时工作栈中,并相应更改临时工作栈的栈顶指针的值。进一步的,将待运行任务的现场数据存放到临时工作栈中后不释放堆栈的存储空间;将当前运行任务的现场数据存放在一个大小至少等于N的堆栈中是指 判断当前运行任务的现场数据的大小是否大于该任务对应的堆栈的大小,如 果不是则将临时工作栈中当前运行任务的现场数据按顺序复制或移动到所述 对应的堆栈中,从栈底开始存储;如果是则释放该堆栈的存储空间,重新申 请一个存储空间大小至少等于N的堆栈,将临时工作栈中当前运行任务的现 场数据按顺序复制或移动到所申请的堆栈中,从栈底开始存储。进一步的,如果是以复制方式将现场数据从其存储空间存放到临时工作 栈,则在任务运行过程中跟踪SP的值;记录最接近栈底的SP值为SP1;当需要切换到其它任务并且不用重新申请堆栈时,将当前运行任务的现 场数据存放在一个大小至少等于N的堆栈中是指仅复制临时工作栈中SP 到SP1的数据到当前任务对应的堆栈中,从SP2开始存储;其中,SP2与当 前任务对应堆栈的栈底之间的距离等于SP1与临时工作栈的栈底之间的距离。进一步的,相应更改临时工作栈的栈顶指针SP的值是指如果查找不到待运行任务对应的堆栈或无现场数据,将临时工作栈的栈 顶指针SP的值置为栈底地址;否则在将待运行任务对应的现场数据存放进临 时工作栈后,使SP指向待运行任务的现场数据中位于顶部的一条。本发明还提供了一种嵌入式操作系统中切换任务的单元,包括存储模 块,堆栈管理模块;所述存储模块中包括用于保存当前运行任务的现场数据的临时工作栈;所述堆栈管理^^莫块用于接收任务切换命令后,确定当前运行任务的现场数据的大小N并记录,以及将当前运行任务的现场数据存放在一个存储空间大小至少等于N的堆栈中,并记录该任务与该堆栈的对应关系。进一步的,所述堆栈管理^t块还用于查找待运行任务对应的堆栈,查找 到后将待运行任务的现场数据存放到临时工作栈中,并相应更改临时工作栈的栈顶指针SP的值。进一步的,堆栈管理模块将待运行任务的现场数据存放到临时工作栈中后释放堆栈的存储空间;所述堆栈管理片莫块将当前运行任务的现场数据存放在一个大小至少等于 N的堆栈中是指堆栈管理模块判断当前运行任务的现场数据的大小是否大 于该任务对应的堆栈的大小,如果不是则将临时工作栈中当前运行任务的现 场数据按顺序复制或移动到所述对应的堆栈中,从栈底开始存储;如果是则 释放该堆栈的存储空间,重新申请一个存储空间大小至少等于N的堆栈,将 临时工作栈中当前运行任务的现场数据按顺序复制或移动到所申请的堆栈 中,从栈底开始存储。进一步的,所述切换任务的单元还包括一寄存器;所述堆栈管理才莫块还 用于将现场数据从其存储空间复制到临时工作栈并相应更改SP的值后,将其 保存在所述寄存器中;以及在任务运行过程中跟踪SP的值,如果当前SP值 比寄存器中的值更接近临时工作的栈底地址,则用当前SP值替换寄存器中保 存的值,将寄存器中的值记为SP1;当需要切换到其它任务并且不用重新申 请堆栈时,所述堆栈管理才莫块将当前运行任务的现场数据存放在一个大小至 少等于N的堆栈中是指堆栈管理模块仅复制临时工作栈中SP到SP1的数 据到当前任务对应的堆栈中,从SP2开始存储;其中,SP2与当前任务对应 堆栈的栈底之间的距离等于SP1与临时工作栈的栈底之间的距离。进一步的,所述堆栈管理模块相应更改临时工作栈的栈顶指针SP的值是指堆栈管理it块如果查找不到待运行任务对应的堆栈或无现场数据,将临时工作栈的栈顶指针SP的值置为栈底地址;否则在将待运行任务对应的现场 数据存放进临时工作栈后,使SP指向待运行任务的现场数据中位于顶部的一条。本发明的技术方案可以解决任务堆栈浪费存储空间的问题,基本不会浪费任何空间,对于存储空间紧缺,切换不是特别频繁的系统更加适用;本发明的优化方案可以提高切换时的效率,节省软硬件资源。


图1为一种堆栈的映^^图;图2为现有技术中切换任务时的堆栈使用示意图;图3为应用实例中的堆栈使用示意图;图4为应用实例中的流程示意图。
具体实施方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。本发明4是供了 一种嵌入式才喿作系统中切换任务的方法,包括将当前运行任务的现场数据保存在临时工作栈中;任务切换时,确定当前运行任务的现场数据的大小N并记录,将当前运 行任务的现场数据存放在一个存储空间大小至少等于N的堆栈中,记录该任 务与该堆栈的对应关系。该方法还可以包括查找待运行任务对应的堆栈,查找到后将待运行任务的现场数据存放到 临时工作栈中,并相应更改临时工作栈的栈顶指针SP的值。此时,可以释放 原先存放待运行任务现场数据的堆栈的存储空间,也可以不释放堆栈的存储 空间,记录任务与堆栈之间的对应关系;可以但不限于记录于TCB (任务控 制块)中。如果释放堆栈的存储空间,将当前运行任务的现场数据存放在一个大小 至少等于N的堆栈中是指申请一个存储空间大小至少等于N的堆栈,将临 时工作栈中当前运行任务的现场数据一一即位于SP到栈底之间的数据—— 按顺序复制或移动到所申请的堆栈中,从栈底开始存储。如杲不释放堆栈的存储空间,将当前运行任务的现场数据存放在一个大小至少等于N的堆栈中是指判断当前运行任务的现场数据的大小是否大于该任务对应的堆栈的大小,如果不是则将临时工作栈中当前运行任务的现场数据按顺序复制或移动到所述对应的堆栈中,从栈底开始存储;如果是则释 放该堆栈的存储空间,重新申请一个存储空间大小至少等于N的堆栈,将临 时工作栈中当前运行任务的现场数据按顺序复制或移动到所申请的堆栈中, 从栈底开始存储。对于之前没运行过的任务,堆栈的存储空间大小可设为0; 或是在判断时,对于查找不到对应堆栈的任务,将其对应的堆栈的存储空间 大小默认为0。在嵌入式系统中各任务会多次进行,如果采用该优化方案, 当各任务运行过一段时间后,各自对应的堆栈将达到适合本任务的大小,此 时的这样不仅避免了存储空间的浪费,也提高了效率。本文中,复制是指不删除原始数据的方式,而移动是指删除原始数据的 方式。可以看出,这样一来每个任务对应的堆栈所占用的存储空间的大小不需 要按可能出现的任务需要的最大堆栈定义,可以动态按实际大小从内存中分 配空间,因此可以节省存储资源。而无论运行哪个任务时,CPU的SP指针所指向的空间始终是同一块存储空间,即临时工作栈,临时工作栈的大小按 可能出现的任务需要的最大堆栈来设定。其中,由于临时工作栈是预留好的,栈底的地址是固定的,因此确定当前运行任务的现场数据的大小N为SP的值与栈底地址之差的绝对值。其中,可以但不限于将任务对应的堆栈、及该任务现场数据的大小记录 于TCB (任务控制块)中;查找待运行任务对应的堆栈可以是指在TCB中 根据任务名查找其对应的堆栈。其中,将待运行任务的现场数据存放到临时工作栈中可以是指根据待 运行任务现场数据的大小M,在待运行任务对应的堆栈中从栈底开始按顺序 复制或移动大小为M的数据到临时工作栈里,存放在从栈底开始的存储空间 中。其中,相应更改临时工作栈的栈顶指针SP的值可以是指如果查找不到 待运行任务对应的堆栈或无现场数据,将临时工作栈的栈顶指针SP的值置为栈底地址;否则在将待运行任务对应的现场数据存放进临时工作栈后,使SP
指向待运行任务的现场数据中位于顶部的一条。
如果是以复制方式将现场数据从其存储空间存放到临时工作栈,则在任
务运行过程中跟踪SP的值;记录最接近栈底的SP值为SP1;当需要切换到 其它任务并且不用重新申请堆栈时,将当前运行任务的现场数据存放在一个 大小至少等于N的堆栈中是指仅复制临时工作栈中SP到SP1的数据(包 括SP和SP1指向的数据)到当前任务对应的堆栈中,从SP2开始存储;其 中,SP2与当前任务对应堆栈的栈底之间的距离等于SP1与临时工作栈的栈 底之间的距离。这是因为,堆栈中的数据是先进后出的,任务运行中,数据 一直在出栈进栈,而SP1所指向的一条数据是最接近栈底的、任务运行中进 栈或可能进栈的数据记录,也就是说SP1和栈底间的数据是任务运行后未改 变的(不包括SP1指向的数据),那么只要该任务对应的堆栈的存储空间未 改变,在向堆栈复制时,就可以不复制这部分数据。可以看出,如果任务运 行中该堆栈数据一直没有减少到比复制进来时小,则SPl就是复制后相应更 改得到的SP,因此SP1的取值范围是在栈底和复制后相应更改得到的SP之 间,包括栈底和该SP。这样做的优点是可以提高切换时复制数据的效率,节 省复制时所耗费的软硬件资源。
为了提高切换效率,还可以采用CPU的硬件加速。
本发明还提供了一种嵌入式操作系统中切换任务的单元,包括存储模 块,堆栈管理模块;
所述存储^t块中包括用于保存当前运行任务的现场数据的临时工作栈;
所述堆栈管理;f莫块用于接收任务切换命令后,确定当前运行任务的现场 数据的大小N并记录,以及将当前运行任务的现场数据存放在一个存储空间 大小至少等于N的堆栈中,并记录该任务与该堆栈的对应关系。
所述堆栈管理才莫块还用于查找待运行任务对应的堆栈,查找到后将待运 行任务的现场数据存放到临时工作栈中,并相应更改临时工作栈的栈顶指针 SP的值。此时,可以释放原先存放待运行任务现场数椐的堆栈的存储空间,也可以不释放堆栈的存储空间,记录任务与堆栈之间的对应关系;可以但不
限于记录于TCB (任务控制块)中。
如果释放堆栈的存储空间,所述堆栈管理模块将当前运行任务的现场数
据存放在一个大小至少等于N的堆栈中是指堆栈管理模块申请一个存储空 间大小至少等于N的堆栈,将临时工作栈中当前运行任务的现场数据按顺序 复制或移动到所申请的堆栈中,从栈底开始存储。
如果不释放堆栈的存储空间,所述堆栈管理模块将当前运行任务的现场 数据存放在一个大小至少等于N的堆栈中是指堆栈管理模块判断当前运行 任务的现场数据的大小是否大于该任务对应的堆栈的大小,如果不是则将临 时工作栈中当前运行任务的现场数据按顺序复制或移动到所述对应的堆栈
中,从栈底开始存储;如果是则释放该堆栈的存储空间,重新申请一个存储 空间大小至少等于N的堆栈,将临时工作栈中当前运行任务的现场数据按顺 序复制或移动到所申请的堆栈中,从栈底开始存储。对于之前没运行过的任 务,堆栈的存储空间大小可设为0;或是在判断时,对于查找不到对应堆栈 的任务,将其对应的堆栈的存储空间大小默认为0。
其中,所述堆栈管理^t块确定当前运行任务的现场教:据的大小N为临时 工作栈的栈顶指针SP的值与栈底地址之差的绝对值。
其中,所述堆栈管理才莫块可以但不限于将任务对应的堆栈、及该任务现 场数据的大小记录于TCB (任务控制块)中;所述堆栈管理才莫块查找待运行 任务对应的堆栈可以是指堆栈管理才莫块在TCB中根据任务名查找其对应的 堆栈。
其中,所述堆栈管理才莫块将待运行任务的现场数据存;^到临时工作栈中 可以是指堆栈管理^t块根据待运行任务现场数据的大小M,在待运行任务 对应的堆栈中从栈底开始按顺序复制或移动大小为M的数据到临时工作栈 里,存放在从栈底开始的存储空间中。
其中,所述堆栈管理才莫块相应更改临时工作栈的栈顶指针SP的值可以是 指堆栈管理;f莫块如果查找不到待运行任务对应的堆栈或无现场数据,将临 时工作栈的栈顶指针SP的值置为栈底地址;否则在将待运行任务对应的现场 数据存放进临时工作栈后,使SP指向待运行任务的现场数据中位于顶部的一条。
所述切换任务的单元还包括一寄存器;所述堆栈管理;模块还用于将现场 数据从其存储空间复制到临时工作栈并相应更改SP的值后,将其保存在所述 寄存器中;以及在任务运行过程中跟踪SP的值,如果当前SP值比寄存器中 的值更接近临时工作的栈底地址,则用当前SP值替换寄存器中保存的值,将 寄存器中的值记为SP1;当需要切换到其它任务并且不用重新申请堆栈时, 所述堆栈管理模块将当前运行任务的现场数据存放在一个大小至少等于N的 堆栈中是指堆栈管理模块仅复制临时工作栈中SP到SP1的数据(包括SP 和SP1指向的数据)到当前任务对应的堆栈中,从SP2开始存储;其中,SP2 与当前任务对应堆栈的栈底之间的距离等于SP1与临时工作栈的栈底之间的 距离。
下面用本发明的两个应用实例进一 步加以i兌明。
应用实例一以三个任务运行的情况为例,如图3所示,首先是任务l运 行,其数据保存在临时工作栈中;当要切换到任务2时,申请堆栈A来存放 任务1的数据,记录任务1对应的数据的存放地址为堆栈A的地址;运行任 务2;当要切换到任务2时,申请堆栈B来存放任务2的数据,记录任务2 对应的数据的存放地址为堆栈B的地址;运行任务3;当又要切换到任务1 时,申请堆栈C来存^:任务3的数据,记录任务3对应的数据的存i丈地址为 堆栈C的地址;根据任务l对应的数据地址找到任务l的现场数据,将该现 场数据存放到临时工作栈中,运行任务l。
应用实例二的主要步骤是如果任务切换时,需要把原来工作栈中的内 容换出,把需要运行的任务的栈的内容重新搬移到工作栈中,使任务运行的 栈始终在工作栈中。切换任务时的具体步骤如图4所示,包括
401、 当前运行任务为任务i,现在要切换到任务j;
402、 判断任务i对应的堆栈大小是否大于或等于任务i实际需要的存储 空间大小一一即任务i的现场数据的大小;如果是则进行步骤405;否则进行 步骤403;403 、释放任务i原来对应的堆栈;
404、 重新为任务i申请一堆栈,该堆栈大小至少等于任务i的现场数据 的大小;
405、 把临时工作栈中任务i的现场数据复制到任务i的堆栈中,从栈底 开始存储;
406、 从任务j对应的堆栈中复制任务j的现场数据到临时工作栈中;
407、 改变临时工作栈的指针SP,使其指向任务j的现场数据中位于顶部 的数据。
任务切换完成,可以开始运行任务j。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的 但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
权利要求
1、一种嵌入式操作系统中切换任务的方法,包括将当前运行任务的现场数据保存在临时工作栈中;任务切换时,确定当前运行任务的现场数据的大小N并记录,将当前运行任务的现场数据存放在一个存储空间大小至少等于N的堆栈中,记录该任务与该堆栈的对应关系。
2、 如权利要求l所述的方法,其特征在于,还包括查找待运行任务对应的堆栈,查找到后将待运行任务的现场数据存》文到 临时工作栈中,并相应更改临时工作栈的栈顶指针的值。
3、 如权利要求2所述的方法,其特征在于将待运行任务的现场数据存 放到临时工作栈中后不释》文堆栈的存储空间;将当前运行任务的现场数据存放在一个大小至少等于N的堆栈中是指 判断当前运行任务的现场数据的大小是否大于该任务对应的堆栈的大小,如 果不是则将临时工作栈中当前运行任务的现场数据按顺序复制或移动到所述 对应的堆栈中,从栈底开始存储;如果是则释放该堆栈的存储空间,重新申 请一个存储空间大小至少等于N的堆栈,将临时工作栈中当前运行任务的现 场数据按顺序复制或移动到所申请的堆栈中,从栈底开始存储。
4、 如权利要求2所述的方法,其特征在于如果是以复制方式将现场数据从其存储空间存放到临时工作栈,则在任 务运行过程中跟踪SP的值;记录最接近栈底的SP值为SP1;当需要切换到其它任务并且不用重新申请堆栈时,将当前运行任务的现 场数据存放在一个大小至少等于N的堆栈中是指仅复制临时工作栈中SP 到SP1的数据到当前任务对应的堆栈中,从SP2开始存储;其中,SP2与当 前任务对应堆栈的栈底之间的距离等于SP1与临时工作栈的栈底之间的距离。
5、 如权利要求1到4中任一项所述的方法,其特征在于,相应更改临时工作栈的栈顶指针SP的值是指如果查找不到待运行任务对应的堆栈或无现场数据,将临时工作栈的栈顶指针SP的值置为栈底地址;否则在将待运行任务对应的现场数据存放进临 时工作栈后,使SP指向待运行任务的现场教:据中位于顶部的一条。
6、 一种嵌入式操作系统中切换任务的单元,其特征在于,包括存储模 块,堆栈管理模块;所述存储模块中包括用于保存当前运行任务的现场数据的临时工作栈;所述堆栈管理模块用于接收任务切换命令后,确定当前运行任务的现场 数据的大小N并记录,以及将当前运行任务的现场数据存放在一个存储空间 大小至少等于N的堆栈中,并记录该任务与该堆栈的对应关系。
7、 如权利要求6所述的单元,其特征在于所述堆栈管理才莫块还用于查找待运行任务对应的堆栈,查找到后将待运 行任务的现场数据存放到临时工作栈中,并相应更改临时工作栈的栈顶指针 SP的值。
8、 如权利要求7所述的单元,其特征在于堆栈管理模块将待运行任务 的现场数据存放到临时工作栈中后释;改堆栈的存储空间;所述堆栈管理片莫块将当前运行任务的现场数据存放在一个大小至少等于 N的堆栈中是指堆栈管理模块判断当前运行任务的现场数据的大小是否大 于该任务对应的堆栈的大小,如果不是则将临时工作栈中当前运行任务的现 场数据按顺序复制或移动到所述对应的堆栈中,从栈底开始存储;如果是则 释放该堆栈的存储空间,重新申请一个存储空间大小至少等于N的堆栈,将 临时工作栈中当前运行任务的现场数据按顺序复制或移动到所申请的堆栈中,从栈底开始存储。
9、 如权利要求7所述的单元,其特征在于所述切换任务的单元还包括一寄存器;所述堆栈管理才莫块还用于将现场 数据从其存储空间复制到临时工作栈并相应更改SP的值后,将其保存在所述 寄存器中;以及在任务运行过程中跟踪SP的值,如果当前SP值比寄存器中的值更接近临时工作的栈底地址,则用当前SP值替换寄存器中保存的值,将寄存器中的值记为SP1;当需要切换到其它任务并且不用重新申请堆栈时, 所述堆栈管理^t块将当前运行任务的现场数据存放在一个大小至少等于N的堆栈中是指堆栈管理模块仅复制临时工作栈中SP到SP1的数据到当前任务 对应的堆栈中,从SP2开始存储;其中,SP2与当前任务对应堆栈的栈底之 间的距离等于SP1与临时工作栈的栈底之间的距离。
10、如权利要求6到9中任一项所述的单元,其特征在于,所述堆栈管 理才莫块相应更改临时工作栈的栈顶指针SP的值是指堆栈管理才莫块如果查找不到待运行任务对应的堆栈或无现场数据,将临 时工作栈的栈顶指针SP的值置为栈底地址;否则在将待运行任务对应的现场 数据存放进临时工作栈后,使SP指向待运行任务的现场数据中位于顶部的一条。
全文摘要
本发明公开了一种嵌入式操作系统中切换任务的方法和单元;其中单元包括存储模块,堆栈管理模块;所述存储模块中包括用于保存当前运行任务的现场数据的临时工作栈;所述堆栈管理模块用于接收任务切换命令后,确定当前运行任务的现场数据的大小N并记录,以及将当前运行任务的现场数据存放在一个存储空间大小至少等于N的堆栈中,并记录该任务与该堆栈的对应关系。本发明的技术方案可以解决任务堆栈浪费存储空间的问题,基本不会浪费任何空间,对于存储空间紧缺,切换不是特别频繁的系统更加适用;本发明的优化方案可以提高切换时的效率,节省软硬件资源。
文档编号G06F9/48GK101290590SQ20081011432
公开日2008年10月22日 申请日期2008年6月3日 优先权日2008年6月3日
发明者国 艾 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1