此申请是申请日为2013年12月18日、中国申请号为201310699757.x发明名称为“硬件资源动态分配的实现方法及装置”的发明申请的分案申请。
本发明属于通信领域,尤其涉及一种硬件资源动态分配的实现方法及装置。
背景技术:
目前流行的工业用计算机设计方案中一类为嵌入式操作系统,它是从运行在个人电脑上的操作统向下移植到嵌入式系统中,形成的嵌入式操作系统,如微软公司的windowsce及其新版本本wec、sun公司java操作系统、朗讯科技公司的inferno、嵌入式linux等,这类系统经过个人电脑或高性能的计算机等产品的长期运行考验,技术日趋成熟,其相关的标准和软件开发方式被用户普遍接受,同时积累了丰富的开发工具和应用软件资源,但是实时性较低。另一类为实时操作系统,如windriver公司的vxworks,isi的psos、qnx系统软件公司的qnx,这类产品的操作统的结构和实现上都针对所面向的应用领域,对实时性高可靠性进行了精巧的设计,而且提供了独立而备系统开发和测试工具,较多应用在军用产品和工业控制等领域,但这种系统代码量比较大,实时性还不够强。嵌入式操作系统或实时操作系统存在以下缺点:
﹒成本高:大多需要昂贵的版权使用费;
﹒代码庞大:最少也需要几百kb以上的内存空间,在小内存的应用种无法使用;
﹒实时性低:就算是实时操作系统,都需要执行任务的调度,内存管理所需要花费的时间绝对比裸机统多,在实时性要求较高的应用中无法实现某些特定的功能。
﹒使用难度较大:都需要一定操作系统开发经验,要比较深刻的了解系统的实现机制方能实现驱动应用的代码编写。
技术实现要素:
本发明实施例的目的在于提供一种硬件资源动态分配的实现方法及装置,旨在解决现有的嵌入式系统实时性低的问题。
本发明实施例是这样实现的,一种硬件资源动态分配的实现方法,所述方法包括:
收到应用指令时,根据所述应用指令创建至少一应用功能对象;
创建所述应用功能对象关联的至少一硬件功能对象;
根据所述硬件功能对象为所述应用功能对象分配硬件资源,由所述硬件资源执行所述应用指令。
进一步地,在执行所述根据应用指令创建至少一应用功能对象之前,还包括:
判断是否支持所述应用指令,是则执行所述根据应用指令创建至少一应用功能对象,否则返回失败。
进一步地,在执行所述硬件资源执行应用指令之后,还包括:
释放所述硬件资源。
进一步地,所述根据硬件功能对象为应用功能对象分配硬件资源包括:
检索设备管理器中空闲的硬件资源;
初始化所述检索到的空闲的硬件资源,完成硬件资源的分配。
进一步地,所述根据硬件功能对象为应用功能对象分配硬件资源还包括:
当所述应用功能对象有多个,通过设备管理器对所述多个应用功能对象分配对应的硬件资源。
本发明还提出一种硬件资源动态分配的装置,所述装置包括:
第一创建模块,用于收到应用指令时,根据所述应用指令创建至少一应用功能对象;
第二创建模块,创建所述应用功能对象关联的至少一硬件功能对象;
分配模块,用于根据所述硬件功能对象为所述应用功能对象分配硬件资源,由所述硬件资源执行所述应用指令。
进一步地,所述装置还包括:
判断模块,用于判断是否支持所述应用指令,是则执行所述根据应用指令创建至少一应用功能对象,否则返回失败。
进一步地,所述装置还包括:
释放模块,用于释放所述硬件资源。
进一步地,所述分配模块包括:
检索单元,用于检索设备管理器中空闲的硬件资源;
初始化单元,用于初始化所述检索到的空闲的硬件资源,完成硬件资源的分配。
进一步地,所述分配模块还包括:
选择单元,用于当所述应用功能对象有多个,通过设备管理器对所述多个应用功能对象分配对应的硬件资源。
在本发明实施例中,通过结构体管理系统中所存在的硬件资源,并通过设备数据结构中的标志位,标明该硬件资源是否己经被占用,通过使用类的概念管理具体硬件资源的需要实现的具体功能;通过使用结构体构建一个设备管理器,用设备管理器,维护系统中所有存在的硬件资源。与现有技术相比,本发明提出的技术方案中,具有以下几点优势:
1.灵活性高:可以实动态的自由分配硬件资源,并能在程序模块中,任意增加需要的应用功能模块,而不需要修改与设备相关的代码。
3.实时性高:不需要操作系统的支撑,自主完成硬件资源的分配,代码执行效率高,实时性大在提高。
4.成本低:由于不需要操作系统的支撑,代码需要的空间小,需要保存代码的flash容量要求不高。
5.使用难度较小:无需要像操作系统一样,需要熟悉复杂的系统模型,只要略加修改就能应用到裸机系统中。
附图说明
图1是本发明实施例一提供的硬件资源动态分配的实现方法的流程图;
图2是本发明实施例一提供的硬件资源动态分配的实现方法中的结构体框架图;
图3是本发明实施例二提供的硬件资源动态分配的实现装置的结构图;
图4是本发明实施例二提供的硬件资源动态分配的实现装置中分配模块的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一
发明实施例一提出一种硬件资源动态分配的实现方法。如图1所示,本发明实施例一的方法包括:
步骤s1、收到应用指令时,判断是否支持应用指令,是则执行步骤s2,否则返回失败。
步骤s2、根据应用指令创建至少一应用功能对象,如图2所示之实现uart与spi之间的数据交互功能对象5、实现can和uart之间数据交互功能对象6以及实现can与spi之间数据交互功能对象7。本发明实施例一首先执行全局初使化代码,实例化一个usb类对象对于从pc或别的设备平台接收指令发送相应数据,然后再进入主体循环等待pc端上层应用的指令,并根据相应的指令实例化一个或多个应用功能对象。
步骤s3、创建所述应用功能对象关联的至少一硬件功能对象,如图2所示之usb接收和发送数据子对象11、can接收和发送数据子对象12、uart接收和发送数据子对象13、spi接收和发送数据子对象14、定时计数据器功能子对象15。
步骤s4、根据所述硬件功能对象为所述应用功能对象分配硬件资源,由所述硬件资源执行所述应用指令。硬件资源如图2所示之usb控制器21、定时计数器122、定时计数器223、异步串行通信接口124、异步串行通信接口225、canbus控制器126、canbus控制器227、spi控制器128和spi控制器229。具体硬件功能对象与哪一个实体的硬件资源相应需要看应用功能模块构建后所分配的硬件资源(如uart接收和发送数据子对象13需要分配异步串行通信接口124、异步串行通信接口225,需要知道该硬件资源是否被占用)。当调用程序功能模块构建对象工厂构建应用功能模块时,会调用alloc_dev函数,检索未用的硬件资源,并将硬件资源的类型和id传递给应用功能模块,再传递到应用功能对象相关联的硬件功能对象,初使化上述硬件资源相关的寄存器和数据结构,完成硬件资源的分配。
步骤s5、释放所述硬件资源。在应用功能对象析构的时候,再调用相关联的硬件功能对象进行硬件资源的释放(包括中断关闭,时钟关闭等一系列与该硬件相关的资源),然后调用程序功能模块构建工厂中的free_dev功能函数完成设备管理器的资源释放(即将设备中alloc_states标志清除)。这样当每一个应用功能对象构建的时候分配硬件资源,在应用功能对象释放的时候,释放对硬件资源的占用。当有两个以上的应用功能对象需要共用同种类型的硬件资源的时候(比如uart与spi之间的数据交互功能对象5、实现can和uart之间数据交互功能对象6都需要使用uart控制器)就可以根据设备管与器完成对异步串行通信接口124、异步串行通信接口225进行分配。如果还有一个应用功能模块还需用到uart资源,那么在调用alloc_dev函数的时候就会失败,表示资源己占用,只有当之前占用硬件资源的某一应用功能对象释放了与之相对应的硬件资源后这个新的应用功能模块才能重新分配到硬件资源。
其中,相关的代码部分如下:
在本发明实施例一中,通过结构体管理系统中所存在的硬件资源,通过使用类的概念管理具体硬件资源的需要实现的具体功能;通过使用结构体构建一个设备管理器,用设备管理器,维护系统中所有存在的硬件资源。实现动态的自由分配硬件资源,并能在程序模块中,任意增加需要的应用功能模块,而不需要修改与设备相关的代码。且不需要操作系统的支撑,自主完成硬件资源的分配,代码执行效率高,实时性大大提高。由于不需要操作系统的支撑,代码需要的空间小,需要保存代码的flash容量要求不高。本发明实施例一无需要象操作系统一样,需要熟悉复杂的系统模型,只要略加修改就能应用到裸机系统中。
实施例二
本发明实施例二提供一种硬件资源动态分配的装置。如图3所示,本发明的装置可包括判断模块10、第一创建模块20、第二创建模块30、分配模块40和释放模块50。判断模块10用于收到应用指令时,判断是否支持所述应用指令,是则由第一创建模块20执行根据应用指令创建至少一应用功能对象,否则返回失败。第一创建模块20,用于根据所述应用指令创建至少一应用功能对象。如图2所示之实现uart与spi之间的数据交互功能对象5、实现can和uart之间数据交互功能对象6以及实现can与spi之间数据交互功能对象7。本发明实施例一首先执行全局初使化代码,实例化一个usb类对象对于从pc或别的设备平台接收指令发送相应数据,然后再进入主体循环等待pc端上层应用的指令,并根据相应的指令实例化一个或多个应用功能对象。
第二创建模块30,创建所述应用功能对象关联的至少一硬件功能对象;如图2所示之usb接收和发送数据子对象11、can接收和发送数据子对象12、uart接收和发送数据子对象13、spi接收和发送数据子对象14、定时计数据器功能子对象15。
分配模块40,用于根据所述硬件功能对象为所述应用功能对象分配硬件资源,由所述硬件资源执行所述应用指令。硬件资源如图2所示之usb控制器21、定时计数器122、定时计数器223、异步串行通信接口124、异步串行通信接口225、canbus控制器126、canbus控制器227、spi控制器128和spi控制器229。具体硬件功能对象与哪一个实体的硬件资源相应需要看应用功能模块构建后所分配的硬件资源(如uart接收和发送数据子对象13需要分配异步串行通信接口124、异步串行通信接口225,需要知道该硬件资源是否被占用)。
释放模块50,用于释放所述硬件资源。
如图4所示,分配模块40进一步包括检索单元41、初始化单元42和选择单元43。检索单元41用于检索设备管理器中空闲的硬件资源;当调构建应用功能模块时;初始化单元42,用于初始化所述检索到的空闲的硬件资源,完成硬件资源的分配。选择单元43,用于当所述应用功能对象有多个,通过设备管理器对所述多个应用功能对象分配对应的硬件资源。
在本发明实施例二的装置,通过结构体管理系统中所存在的硬件资源,通过使用类的概念管理具体硬件资源的需要实现的具体功能;通过使用结构体构建一个设备管理器,用设备管理器,维护系统中所有存在的硬件资源。实现动态的自由分配硬件资源,并能在程序模块中,任意增加需要的应用功能模块,而不需要修改与设备相关的代码。且不需要操作系统的支撑,自主完成硬件资源的分配,代码执行效率高,实时性大大提高。由于不需要操作系统的支撑,代码需要的空间小,需要保存代码的flash容量要求不高。本发明实施例一无需要象操作系统一样,需要熟悉复杂的系统模型,只要略加修改就能应用到裸机系统中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。