CN1577261A - 一种对单片机封装的系统和方法 - Google Patents
一种对单片机封装的系统和方法 Download PDFInfo
- Publication number
- CN1577261A CN1577261A CN 200310116379 CN200310116379A CN1577261A CN 1577261 A CN1577261 A CN 1577261A CN 200310116379 CN200310116379 CN 200310116379 CN 200310116379 A CN200310116379 A CN 200310116379A CN 1577261 A CN1577261 A CN 1577261A
- Authority
- CN
- China
- Prior art keywords
- module
- task
- message
- timer
- user
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 230000015572 biosynthetic process Effects 0.000 claims description 20
- 238000005538 encapsulation Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 9
- 240000002853 Nelumbo nucifera Species 0.000 claims description 4
- 235000006508 Nelumbo nucifera Nutrition 0.000 claims description 4
- 235000006510 Nelumbo pentapetala Nutrition 0.000 claims description 4
- 230000003068 static effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 abstract description 39
- 238000011161 development Methods 0.000 abstract description 8
- 238000012856 packing Methods 0.000 abstract description 3
- 230000000977 initiatory effect Effects 0.000 abstract 2
- 238000002054 transplantation Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 5
- 241000238876 Acari Species 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- 101150039208 KCNK3 gene Proteins 0.000 description 2
- ZVKAMDSUUSMZES-NZQWGLPYSA-N OS II Natural products CC(=O)N[C@H]1[C@H](OC[C@@H](O)[C@@H](O)[C@@H](O)CO)O[C@H](CO)[C@H](O[C@H]2O[C@H](CO)[C@@H](O)[C@H](O)[C@H]2O)[C@@H]1O[C@@H]3O[C@H](CO)[C@@H](O)[C@H](O)[C@H]3O ZVKAMDSUUSMZES-NZQWGLPYSA-N 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 2
- 101150083764 KCNK9 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明的一种对单片机封装的系统和方法,该方法包括以下步骤:分别封装调度模块、网络层模块、链路层模块、驱动模块和扩展函数模块组成一单片机操作系统;所述调度模块对主程序进行封装,该主程序完成系统初始化,用户程序初始化,以及运行一个调度任务;所述网络层模块用于发送和接收数据,并根据用户选择决定发送的数据要送到的链路以及对接收的数据的派发;所述链路层模块负责将接收的数据送至网络层;所述驱动模块负责对不同的物理设备提供相应的驱动;所述扩展函数模块包括通用的扩展功能函数。本发明系统通过分层封装代码,用户可裁剪设置,方便用户对单片机软件的移植、扩展、裁剪和开发,提高了单片机软件的开发效率和软件运行效率。
Description
技术领域
本发明涉及一种单片机,具体地,涉及一种对单片机进行封装的系统和方法,尤其涉及C51单片机领域的嵌入式操作系统软件的封装方法。
背景技术
8051及与其兼容的系列单片机作为工业的标准地位,广泛应用于各类电器及通讯产品中。从1985年开始就有8051单片机的C语言编译器,但能为用户提供简捷、高效的较为实用的内核系统却不多见,Keil C51编译器在这方面可以说是做得最好的,它提供了一个支持多任务操作系统的微内核和全内核。但其微内核功能较为简单,全内核所占空间较大。也有人将ucOS II移植到了51系列的单片机上,(美)Jean J.Labrosse先生在《us/OS-II:源码公开的实时嵌入式操作系统》(邵贝贝等译.—北京:中国电力出版社,2001.11)一书中对uc/OS-II操作系统作了详实的描述。但它与Keil C一样,只是为用户提供了一个进行抢占式或轮询式的多任务调度内核,可裁剪性有限,并没有为用户的开发带来更多的益处,用户在它们的基础上进行开发所带来的开发效率不是很明显,许多功能均需要用户自行实现。
很多系统采用51系列的单片机,本身对时间的要求性不是很强,其处理的内容相比使用CPU要简单。而传统的C51单片机软件,主要是从一个被称为main()的主程序开始运行,不停地检测各种标志位,若有标志被置位,则做相应的处理;标志一般是在中断中被置位的。在单片机类应用技术丛书中,如《单片机的C语言应用程序设计》(马忠梅等编著.—北京:北京航空航天大学出版社,1997.3)等书中,几乎全部是这样的实例。这种单片机软件设计的最明显的缺点是:代码没有进行封装,很难进行移植,不同的项目经常会做重复的劳动,如I2C驱动,485驱动,时钟驱动,汉字驱动等;另外,主程序的执行时间不确定,其最大的时间延迟可能是所有的标志均被置位,写在最后的标志只能在其他所有标志均处理完成之后才被执行;这样响应结果也很有可能导致中断丢失。
发明内容
本发明的目的是为了克服现有技术中单片机软件开发重复性劳动多,开发效率低,设计和维护不方便,移植困难等缺点,提出了一种对单片机封装的系统和方法。具体地说,本发明为单片机软件设计提供一种协同式的多任务调度内核,支持消息管理和定时器管理;提供通用的扩展功能函数;提供对不同设备或器件的常用标准驱动;提供前后台通信;并且具有可裁剪(可配置)等功能的单片机嵌入式操作系统。
本发明所述的对单片机封装的系统和方法如下:
一种对单片机封装的方法,该方法包括以下步骤:
分别封装调度模块、网络层模块、链路层模块、驱动模块和扩展函数模块组成一单片机操作系统;
所述调度模块对主程序进行封装,该主程序完成系统初始化,用户程序初始化,以及运行一个调度任务;
所述网络层模块用于发送和接收数据,并根据用户选择决定发送的数据要送到的链路以及对接收的数据的派发;
所述链路层模块负责将接收的数据送至网络层;
所述驱动模块负责对不同的物理设备提供相应的驱动;
所述扩展函数模块包括通用的扩展功能函数。
所述的方法,其中,所述调度模块的调度任务步骤如下:
设定一定时器任务队列和消息队列;
所述调度任务不停地检测该定时器任务队列和消息队列;
若队列不空,则调度相应的任务运行,并将消息参数传递给相应的任务。
所述的方法,其中,所述调度模块的调度任务操作步骤还包括:
检测定时器队列中是否有定时器,若有则调度相应的定时器任务运行;
检测消息队列中是否有消息,若有则将消息参数传给相应的任务,并调度任务运行;
以上两项周而复始。
所述的方法,其中,所述定时器任务队列和消息队列均采用单循环队列进行管理。
所述的方法,其中,所述定时器任务队列采用宏开关进行编译控制。
所述的方法,其中,所述定时器任务队列和消息队列大小可由用户配置。
所述的方法,其中,所述消息队列采用在静态分配的内存缓冲区,形成消息缓冲池,每一消息指针包括有任务号、消息缓冲池位置和消息静荷长度。
所述的方法,其中,对该消息队列的写消息的步骤为:
对所述消息队列和缓冲池进行写操作时关中断;
保存消息到所述缓冲池中的对应写位置;
缓冲池尾指针+=信息体长度;
写操作完毕开中断。
所述的方法,其中,所述方法中的驱动模块对同一类设备提供不同的驱动程序,其对外接口基本相同。
所述的方法,其中,所述驱动模块提供时钟中断驱动,标准串口驱动,扩展串口驱动,HDLC驱动,I2C驱动,软件模拟I2C驱动的驱动程序。
所述的方法,其中,所述时钟中断驱动包括以下步骤:
为用户提供一个记录流逝掉的最小时钟中断粒度数的计数器;
对该计数器进行检测,若大于0则减1,否则不对其处理;
检测是否有定时器时间到,若有则将其加入定时器队列,供调度任务调度其运行,否则对定时器计数器做减1操作;
为用户提供一个可扩展的外部接口宏。
所述的方法,其中,所述时钟中断驱动还为用户提供一个可设置时钟中断工作模式的带参数的宏。
所述的方法,其中,所述扩展函数模块包括通用延迟功能,CRC检验,断言及错误处理函数。
所述的方法,其中,所述用户程序初始化功能包括初始化CPU、初始化设备、初始化变量、初始化启动。
一种对单片机封装的系统,该系统包括分别封装的调度模块、网络层模块、链路层模块、驱动模块和扩展函数模块;
所述调度模块对主程序进行封装,该主程序完成系统初始化,用户程序的上电初始化,以及运行一个调度任务;
所述网络层模块用于发送和接收数据,并根据用户选择决定发送的数据要送到的链路以及对接收的数据的派发;
所述链路层模块负责将接收的数据送至网络层;
所述驱动模块负责对不同的物理设备提供相应的驱动;
所述扩展函数模块包括扩展功能函数。
为方便用户使用本系统和方法,并且达到最优使用FLASH和内存,本发明为用户提供可裁剪(可配置)功能,用户可根据具体项目的需要对本系统进行裁剪(配置),如可配置是否使用定时器,定时器队列大小,消息队列大小,消息缓冲池大小,是否使用I2C或软件模拟I2C等。
本发明的对单片机封装的系统和方法,由于采取了协同式任务调度、可裁剪(可配置)、分层封装、为用户提供标准功能函数等技术措施,使用户将精力主要集中在核心代码的设计上,从而方便了单片机软件的移植、扩展、裁剪和开发,提高了单片机软件的开发效率和软件运行效率。
附图说明
附图中,
图1是本发明的对单片机封装的系统和方法的系统层次结构图;
图2是本发明的对单片机封装的系统和方法的系统调度流程图;
图3是本发明的对单片机封装的系统和方法的系统消息队列示意图;
图4是本发明的对单片机封装的系统和方法的时钟中断驱动流程图;
图5是利用本发明对单片机封装的系统和方法的进行二次开发的流程图。
具体实施方式
以下结合附图,将对本发明的较佳实施例加以详细描述。
本发明的系统层次结构,如图1所示的,主要包括:调度模块110、网络层模块120、链路层模块130、驱动模块140、扩展函数模块150以及应用层模块160和物理设备170,其中:
所述调度模块110主要是为调度系统任务及用户任务的运行,管理消息队列和定时器队列等;
所述网络层模块120的主要功能是在底层为所述调度模块110及单片机软件的上层应用程序提供通过网络层访问不同链路的途径,用户可以不用了解网络层是如何与链路层通信的;
所述驱动模块140主要是针对具体的器件写好特定的驱动程序,使得运行支撑包和上层用户不用关心其具体的实现细节,而只需使用驱动提供的接口就可以。其主要包括:I2C驱动、软件模拟I2C、串口驱动、时钟中断驱动、扩展串口驱动、485驱动、FLASH驱动、EEPROM驱动、LCD驱动等。对于同一类设备或器件,在驱动部分提供不同的驱动程序,但对外接口基本相同,这样对于运行支撑包和上层用户而言,就象是使用同一个设备一样,方便编程时使用。
上述分层封装代码的原因是:整个系统层次结构清晰,利于用户理解、移植和维护,用户也可以在需要时扩展驱动模块及扩展函数模块部分,例如,用户可以写一个Atmel公司的T89C51RD2的看门狗驱动,放到驱动模块部分,只需在应用中使用它就可以了。
由于网络层和链路层只是为用户及所述调度模块110提供不同的通路的底层支持,除此之外不做任何工作;而所述驱动模块140只是将各种设备或器件与硬件密切相关的驱动代码进行封装,提供函数或带参数的宏供用户调用,所述扩展函数模块150则为用户提供了CRC检验、断言及错误处理等功能函数(用户也可以自行扩展这一部分),因此这四部分无需详加说明,以下主要介绍所述调度模块110的实现。
本发明对单片机封装的系统和方法的调度模块流程图,如图2所示的,所述调度模块110包括以下任务:系统初始化、用户程序初始化、运行调度任务。
本发明系统启动后,先进行本系统自身的初始化,接着对用户程序进行初始化,然后就将控制权限交给调度任务。用户程序初始化功能包括初始化CPU、初始化设备、初始化变量、初始化启动等。这样设计的目的在于:用户在本系统上进行二次开发时,不再需要写主程序代码;但用户程序初始化只是为用户提供的一个接口,因为本发明不能够准确地知道用户的项目具体要做什么,因此用户可根据不同的项目确定上电初始化该做什么。
其中,所述调度任务主要进行以下步骤:检测定时器队列中是否有定时器,若有则调度相应的定时器任务运行;检测消息队列中是否有消息,若有则将消息参数传给相应的任务,并调度任务运行。以上两项周而复始。其中,是否检测定时器队列采用宏开关进行编译控制,用户可针对不同的项目确定是否使用定时器,通过配置项对其可以进行裁剪,以减少编译后的代码空间及内存空间。本发明支持多任务,但不支持抢占式、不分时间片,只有一个任务运行结束后,下一个任务才能够运行,所以本发明对于定时器队列和消息队列的管理采用单循环队列的方式。调度任务每次只在相应的队列头取数据,中断或其他任务则只在队列尾插入数据。定时器队列和消息队列的大小也可由用户配置(裁剪)。
本发明的消息队列,如图3所示的,消息队列用于给任务发消息。通过本发明提供的各项服务,中断服务子程序或任务都可以将一则消息放入消息队列,等待调度任务的参数使用,一个或多个任务可以通过内核提供的服务从消息队列中得到消息做为参数。由于C51及与其兼容系列的单片机指令周期长,执行速度慢,所以为了提高速度,本发明不使用动态申请内存的办法,所有缓冲区均使用静态的。本发明在内存中开辟一块缓冲区,作为消息缓冲池(POOL),用于存放消息体静荷,消息队列中则存放消息的指针。一则消息包含任务号、在消息缓冲池中的位置、消息静荷长度三部分。这样,通过消息队列的消息指针就可以找到消息缓冲池中的相应部分,并且可以使调度任务知道要调度哪个任务,消息该传给哪个任务。本发明在运行支撑包中为用户提供了将消息发送到消息队列的函数,用户可在中断中有数据来时,或在用户任务中调用该函数将一则消息发送到消息队列。
由于可能存在下面的情况:
用户的某个任务向消息队列中发消息;
可能会出现写缓冲区时出现写冲突,比如一个中断在写缓冲池的过程中,一个高优先级的中断来了,也进行写操作;本发明不允许多个中断或任务向消息缓冲池中写消息体,这就需要在对消息队列和缓冲池进行写操作时开关中断,以便在写操作过程中防止中断的进入,而在写操作完毕接受中断请求的继续。由于单片机的执行速度所限,可能一次要写入缓冲池的消息体较大;这样在进行开关中断时将有可能导致中断延迟过长,并可能导致中断丢失。为了防止这种情况的发生,就要求进行开关中断时延迟尽可能的小。本发明采用如下的处理方法:
每来一条消息,内核进行如下处理:
对所述消息队列和缓冲池进行写操作时关中断;
将每则消息保存自己在缓冲池中当前的写位置;
由于本发明对任务的调度是先来的先处理,每则消息记录了自己在写消息缓冲池的写位置,并同时从该位置将消息写入消息缓冲池,所以不会造成写冲突,并且关中断时间很短。
本发明的时钟中断驱动,如图4所示的,本发明为用户提供了标准的时钟中断驱动功能,用户可配置USR_CLOCKS_PER_TICK宏定义最小时钟中断粒度(在后面的文档中本发明称之为Tick)所占时钟周期,本发明根据该宏值计算多长时间产生一次时钟中断,用户也可以配置系统使用时钟中断0还是使用时钟中断1,或时钟中断2完成图4所示功能。
所述时钟中断驱动流程如下:
为用户提供一个记录流逝掉的Ticks数功能的计数器,该计数器只是简单的做加1操作,当溢出后自动从0开始计数;
对延时计数器进行检测,若大于0则减1;否则不对其处理;该功能供延时模块查询延时时间是否到;
为用户提供一个可扩展的外部接口宏。
另外,时钟中断驱动部分为用户提供一个可设置时钟中断工作模式的带参数的宏。
利用本发明的对单片机封装的系统和方法进行二次开发的流程,如图5所示的,其包括以下步骤,但在实际的开发过程中,图5所示流程并没有严格的时序,哪一项先做和后做并不重要:
通过配置使用支撑包的哪些功能,该操作会影响到编译后的文件大小和执行速度,以及占用内存的大小。例如配置是否使用定时器任务:#define OS_TIMER_TASK_ENABLE YES,将使用定时器任务;若配置为NO,则不使用定时器任务,编译时与定时器相关的代码将不被编译到用户最终的生成文件中。
若用户不修改系统配置,则使用缺省配置参数。
通过配置各用户参数的大小,也会影响到编译后的文件大小和执行速度,以及占用内存大小。例如配置消息队列及消息缓冲池大小:
#define USR_MSG_POOL_SIZE 255:配置消息缓冲池大小;
#define USR_MSG_QUERY_NUM 10:配置消息队列的最大消息数量;
若用户不修改配置,系统使用缺省配置参数。
任务表,用户定义了4个任务:
T_TaskTb1 gtTaskTb1[]={
/*信号,任务名*/
/*0*/0x0901,Task1,
/*1*/0x0910,Task2,
/*2*/0x0945,Task3,
/*3*/0x0802,Task4};
定时器任务表,用户定义了3个定时器任务:
T_TimerTaskTb1 gtTimerTaskTb1[]={
/*任务名,时间间隔,计数初值,是否允许定时器工作0:禁止;!0:允许*/
/*0*/TimerTask2,200,200,1,
/*1*/TimerTask1,200,200,1,
/*2*/NULL,0,0,0};
其中第3个定时器由于允许定时器工作标志设置为假,所以定时器任务名填为NULL,为预留定时器,用户可在运行过程中通过osSetTimer()函数动态设置;也可以在运行过程中,通过osEnableTimer()、osDisableTimer()函数动态改变定时器的工作状态为允许或禁止。
用户的一个任务例程:
void Task1(BYTE byMsgPos,BYTE byMsgLen,BYTE*byPara)
{
CHAR*cp=″Hello World!″;
/*延时20个Ticks*/
osDelayTicks(20);
/*发送运行信息*/
osOutputRunInfo(12,cp);}
用户的一个定时器任务例程:
void TimerTaskl(void){
/*延时5个Ticks*/
osDelayTicks(5);
/*运行过程中动态设置定时器2,间隔为150个Ticks,允许定时器工作,定时器定时执行定时器任务TimerTask3*/
osSetTimer(2,150,true,TimerTask3);
/*接着该定时器禁止自己工作*/
osDisableTimer(1):}
在用户程序初始化,即上电初始化部分,用户可根据实际需要进行设置,包括初始化CPU、初始化设备、初始化用户的全局变量、初始化启动四部分。下面给出初始化的简单例程:
初始化设备:
#define usrInitialDevice \{ \
/*初始化看门狗*/ \
drvInitWatchdog(); \}
初始化用户全局变量:
#define usrInitialVar \{ \
gbHumidity=0;/*湿度初值为0*/ \
/*…*/ \}
初始化CPU:
#define usrInitialCPU(); \{ \
/*…*/ \
IE=0xB6; \}
初始化启动:
#define usrInitialStart();\
{ \
/*选择运行分枝*/ \
SelectRunBrunch(); \}
用户可配置使用宏还是使用函数来写初始化部分,因为用户的初始化代码如果很多,用宏定义写起来不够方便,本发明在这里给用户留有选择的余地,用户可在代码运行效率和程序书写方便性之间进行权衡。
当项目所需设备驱动程序在本发明中没有时,用户可自行编写相应的驱动,只要在用户自己编写的代码中包含自己写的头文件就可以了,在这里不做过多描述。
采用本发明所述方法,与现有技术相比,由于采取了协同式任务调度、可裁剪(可配置)、分层封装、为用户提供标准功能函数等技术措施,使用户将精力主要集中在核心代码的设计上,从而方便了单片机软件的移植、扩展、裁剪和开发,提高了单片机软件的开发效率和软件运行效率。
应当理解的是,对本领域普通技术人员来说,可以根据本发明的技术方案及其较佳实施例做出各种可能的改变或替换,而所有这些改变或替换都应属于本发明的权利要求的保护范围。
Claims (15)
1、一种对单片机封装的方法,该方法包括以下步骤:
分别封装调度模块、网络层模块、链路层模块、驱动模块和扩展函数模块组成一单片机操作系统;
所述调度模块对主程序进行封装,该主程序完成系统初始化,用户程序初始化,以及运行一个调度任务;
所述网络层模块用于发送和接收数据,并根据用户选择决定发送的数据要送到的链路以及对接收的数据的派发;
所述链路层模块负责将接收的数据送至网络层;
所述驱动模块负责对不同的物理设备提供相应的驱动;
所述扩展函数模块包括通用的扩展功能函数。
2、根据权利要求1所述的方法,其特征在于,所述调度模块的调度任务步骤如下:
设定一定时器任务队列和消息队列;
所述调度任务不停地检测该定时器任务队列和消息队列;
若队列不空,则调度相应的任务运行,并将消息参数传递给相应的任务。
3、根据权利要求2所述的方法,其特征在于,所述调度模块的调度任务操作步骤还包括:
检测定时器队列中是否有定时器,若有则调度相应的定时器任务运行;
检测消息队列中是否有消息,若有则将消息参数传给相应的任务,并调度任务运行;
以上两项周而复始。
4、根据权利要求3所述的方法,其特征在于,所述定时器任务队列和消息队列均采用单循环队列进行管理。
5、根据权利要求4所述的方法,其特征在于,所述定时器任务队列采用宏开关进行编译控制。
6、根据权利要求4或5所述的方法,其特征在于,所述定时器任务队列和消息队列大小可由用户配置。
7、根据权利要求6所述的方法,其特征在于,所述消息队列采用在静态分配的内存缓冲区,形成消息缓冲池,每一消息指针包括有任务号、消息缓冲池位置和消息静荷长度。
8、根据权利要求7所述的方法,其特征在于,对该消息队列的写消息的步骤为:
对所述消息队列和缓冲池进行写操作时关中断;
保存消息到所述缓冲池中的对应写位置;
缓冲池尾指针+=信息体长度;
写操作完毕开中断。
9、根据权利要求1所述的方法,其特征在于,所述方法中的驱动模块对同一类设备提供不同的驱动程序,其对外接口基本相同。
10、根据权利要求9所述的方法,其特征在于,所述驱动模块提供时钟中断驱动,标准串口驱动,扩展串口驱动,HDLC驱动,I2C驱动,软件模拟I2C驱动的驱动程序。
11、根据权利要求10所述的方法,其特征在于,所述时钟中断驱动包括以下步骤:
为用户提供一个记录流逝掉的最小时钟中断粒度数的计数器;
对该计数器进行检测,若大于0则减1,否则不对其处理;
检测是否有定时器时间到,若有则将其加入定时器队列,供调度任务调度其运行,否则对定时器计数器做减1操作;
为用户提供一个可扩展的外部接口宏。
12、根据权利要求11所述的方法,其特征在于,所述时钟中断驱动还为用户提供一个可设置时钟中断工作模式的带参数的宏。
13、根据权利要求1所述的方法,其特征在于,所述扩展函数模块包括通用延迟功能,CRC检验,断言及错误处理函数。
14、根据权利要求1所述的方法,其特征在于,所述用户程序初始化功能包括初始化CPU、初始化设备、初始化变量、初始化启动。
15、一种对单片机封装的系统,该系统包括分别封装的调度模块、网络层模块、链路层模块、驱动模块和扩展函数模块;
所述调度模块对主程序进行封装,该主程序完成系统初始化,用户程序的上电初始化,以及运行一个调度任务;
所述网络层模块用于发送和接收数据,并根据用户选择决定发送的数据要送到的链路以及对接收的数据的派发;
所述链路层模块负责将接收的数据送至网络层;
所述驱动模块负责对不同的物理设备提供相应的驱动;
所述扩展函数模块包括扩展功能函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200310116379 CN1577261B (zh) | 2003-06-30 | 2003-11-06 | 一种对单片机封装的系统 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN03139672.0 | 2003-06-30 | ||
CN03139672 | 2003-06-30 | ||
CN 200310116379 CN1577261B (zh) | 2003-06-30 | 2003-11-06 | 一种对单片机封装的系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1577261A true CN1577261A (zh) | 2005-02-09 |
CN1577261B CN1577261B (zh) | 2010-04-28 |
Family
ID=34593046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200310116379 Expired - Fee Related CN1577261B (zh) | 2003-06-30 | 2003-11-06 | 一种对单片机封装的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1577261B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257864A (zh) * | 2013-05-09 | 2013-08-21 | 南京航空航天大学 | 嵌入式软件任务调度方法 |
WO2019001320A1 (zh) * | 2017-06-27 | 2019-01-03 | 阿里巴巴集团控股有限公司 | 追踪方法、装置、设备和机器可读介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CH673878A5 (zh) * | 1987-10-28 | 1990-04-12 | Benninger Ag Maschf | |
US6678744B2 (en) * | 1997-10-09 | 2004-01-13 | Ericsson Inc. | Application wrapper methods and systems |
US6334146B1 (en) * | 1998-06-05 | 2001-12-25 | I2 Technologies Us, Inc. | System and method for remotely accessing data |
CN1252591C (zh) * | 2001-10-31 | 2006-04-19 | 精工爱普生株式会社 | 动态类封装 |
-
2003
- 2003-11-06 CN CN 200310116379 patent/CN1577261B/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257864A (zh) * | 2013-05-09 | 2013-08-21 | 南京航空航天大学 | 嵌入式软件任务调度方法 |
WO2019001320A1 (zh) * | 2017-06-27 | 2019-01-03 | 阿里巴巴集团控股有限公司 | 追踪方法、装置、设备和机器可读介质 |
CN109144844A (zh) * | 2017-06-27 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 追踪方法、装置、设备和机器可读介质 |
US11507413B2 (en) | 2017-06-27 | 2022-11-22 | Alibaba Group Holding Limited | Tracking method, apparatus, device, and machine-readable medium |
Also Published As
Publication number | Publication date |
---|---|
CN1577261B (zh) | 2010-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100337235C (zh) | 访问数据库的方法及装置 | |
CN1270239C (zh) | 处理系统或计算机系统的任务控制方法 | |
CN1910554A (zh) | 多处理器系统中处理器任务迁移的方法与装置 | |
CN100351788C (zh) | 嵌入式设备的驱动方法 | |
CN1394308A (zh) | 运算处理系统和控制方法,任务管理系统和方法 | |
CN1008484B (zh) | 处理机输入/输出和中断过滤器 | |
CN1645330A (zh) | 用于应用程序分布式管理的启用网格的虚拟机的方法和系统 | |
CN1310148C (zh) | 程序执行处理终端装置和程序执行处理方法 | |
Reusing | Comparison of operating systems tinyos and contiki | |
CN1245922A (zh) | 有时间片任务切换能力的前后关系控制器及其应用处理器 | |
CN1496516A (zh) | 宽带网络计算机体系结构的资源专用系统和方法 | |
CN101051301A (zh) | 用于操作计算机处理器阵列的方法和装置 | |
CN101051280A (zh) | 智能卡嵌入式操作系统及其控制方法 | |
CN100341281C (zh) | 一种在网络系统中实现任务管理的方法 | |
CN100346307C (zh) | Java操作系统中实时任务调度的实现方法 | |
CN1764183A (zh) | 一种基于计算机网络的QoS驱动的提供组合Web服务的计算机系统 | |
CN1916842A (zh) | 构件化软件系统中实现反射机制的构件封装方法 | |
CN1889048A (zh) | 组件的实现方法以及系统 | |
CN101038545A (zh) | 操作系统内核构件跨域运行的方法 | |
CN1591339A (zh) | 提供共享Web模块的系统和方法 | |
CN100345110C (zh) | 避免网格计算应用依赖底层开发工具箱的方法 | |
CN1889045A (zh) | 多任务软件系统中并发事件的处理装置和方法 | |
CN1945541A (zh) | 处理操作信息传送控制系统和方法 | |
CN1828543A (zh) | Java操作系统中实时任务调度方法 | |
CN1577261A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100428 |