OSTickISR()

在9.03.05节中,我们已经提到过实时系统中时钟节拍发生频率的问题,应该在10到100Hz之间。但由于PC环境的特殊性,时钟节拍由硬件产生,间隔54.93ms (18.20648Hz)。我们将时钟节拍频率设为200Hz。PC时钟节拍的中断向量为0x08,µC/OS-II将此向量截取,指向了µC/...

2017-05-19 09:03:15

阅读数 870

评论数 0

OSIntCtxSw()

在µC/OS-II中,由于中断的产生可能会引起任务切换,在中断服务程序的最后会调用OSIntExit()函数检查任务就绪状态,如果需要进行任务切换,将调用OSIntCtxSw()。所以OSIntCtxSw()又称为中断级的任务切换函数。由于在调用OSIntCtxSw()之前已经发生了中断,OSIn...

2017-05-17 09:12:15

阅读数 322

评论数 0

OSCtxSw()

OSCtxSw()是一个任务级的任务切换函数(在任务中调用,区别于在中断程序中调用的OSIntCtxSw())。在80x86系统上,它通过执行一条软中断的指令来实现任务切换。软中断向量指向OSCtxSw()。在µC/OS-II中,如果任务调用了某个函数,而该函数的执行结果可能造成系统任务重新调度(...

2017-05-16 09:51:06

阅读数 932

评论数 0

OSStartHighRdy()

µC/OS-II 的移植需要用户改写OS_CPU_A.ASM中的四个函数: OSStartHighRdy() OSCtxSw() OSIntCtxSw() OSTickISR()该函数由SStart()函数调用,功能是运行优先级最高的就绪任务,在调用OSStart()之前,用户必须先调用OSIni...

2017-05-15 18:39:20

阅读数 2380

评论数 0

OS_CPU.H

数据类型 由于不同的处理器有不同的字长,µC/OS-II的移植需要重新定义一系列的数据结构。使用Borland C/C++编译器,整数(int)类型数据为16位,长整形(long)为32位。为了读者方便起见,尽管µC/OS-II中没有用到浮点类型的数,在源代码中笔者还是提供了浮点类型的定义。 由于...

2017-05-13 08:42:15

阅读数 236

评论数 0

OS_CPU.H文件

OS_CPU.H 文件中包含与处理器相关的常量,宏和结构体的定义。程序清单L9.2是为80x86编写的OS_CPU.H文件的内容。 程序清单L 9.2 OS_CPU.H. #ifdef OS_CPU_GLOBALS #define OS_CPU_EXT #else #define OS_CPU...

2017-05-11 21:10:16

阅读数 291

评论数 0

µC/OS-II在80x86上的移植

本章将介绍如何将µC/OS-II移植到Intel 80x86系列CPU上,本章所介绍的移植和代码都是针对80x86的实模式的,且编译器在大模式下编译和连接。本章的内容同样适用于下述CPU: 80186 80286 80386 80486 Pentium Pentium II 实际上,将要介绍的移植...

2017-05-09 16:17:33

阅读数 307

评论数 0

OSTimeTickHook()

void OSTimeTickHook(void) File Called from Code enabled by OS_CPU_C.C OSTimeTick() OS_CPU_HOOKS_EN 只要发生时钟节拍,该函数就会被OSTimeTick()调用。一旦进入OSTimeTick()就...

2017-05-08 18:02:08

阅读数 519

评论数 0

OSTaskStatHook()

void OSTaskStatHook(void) File Called from Code enabled by OS_CPU_C.C OSTaskStat() OS_CPU_HOOKS_EN 该函数每秒钟都会被µC/OS-Ⅱ的统计任务调用。OSTaskStatHook()允许用户加入自...

2017-05-07 08:45:49

阅读数 281

评论数 0

OSTaskDelHook()

void OSTaskDelHook(OS_TCB *ptcb) File Called from Code enabled by OS_CPU_C.C OSTaskDel() OS_CPU_HOOKS_EN 当用户通过调用OSTaskDel()来删除任务时都会调用该函数。这样用户就可以处理...

2017-05-05 15:45:27

阅读数 173

评论数 0

OSTaskCreateHook()

void OSTaskCreateHook(OS_TCB *ptcb) File Called from Code enabled by OS_CPU_C.C OSTaskCreate() and OSTaskCreateExt() OS_CPU_HOOKS_EN 无论何时建立任务,在分配...

2017-05-04 20:58:43

阅读数 413

评论数 0

OSTaskCreateHook(),OSTaskDelHook(),OSTaskSwHook(),OSTaskStatHook(),OSTimeTickHook()

当用OSTaskCreate()或OSTaskCreateExt()建立任务的时候就会调用OSTaskCreateHook()。该函数允许用户或使用用户的移植实例的用户扩展µC/OS-Ⅱ的功能。当µC/OS-Ⅱ设置完了自己的内部结构后,会在调用任务调度程序之前调用OSTaskCreateHook(...

2017-05-02 09:09:15

阅读数 337

评论数 0

OS_CPU_C.C

µC/OS-Ⅱ的移植实例要求用户编写六个简单的C函数: OSTaskStkInit() OSTaskCreateHook() OSTaskDelHook() OSTaskSwHook() OSTaskStatHook() OSTimeTickHook() 唯一必要的函数是...

2017-05-01 09:04:25

阅读数 385

评论数 0

OS_CPU_A.ASM

µC/OS-Ⅱ的移植实例要求用户编写四个简单的汇编语言函数: OSStartHighRdy() OSCtxSw() OSIntCtxSw() OSTickISR() 如果用户的编译器支持插入汇编语言代码的话,用户就可以将所有与处理器相关的代码放到OS_CPU_C.C文件中,而不必...

2017-04-30 08:46:09

阅读数 411

评论数 0

OS_CPU.H

OS_CPU.H包括了用#defines定义的与处理器相关的常量,宏和类型定义。OS_CPU.H的大体结构如程序清单 L8.1所示。 程序清单 L 8.1 OS_CPU.H. #ifdef OS_CPU_GLOBALS #define OS_CPU_EXT #else #define OS_CP...

2017-04-28 15:43:12

阅读数 221

评论数 0

移植µC/OS-Ⅱ

这一章介绍如何将µC/OS-Ⅱ移植到不同的处理器上。所谓移植,就是使一个实时内核能在某个微处理器或微控制器上运行。为了方便移植,大部分的µC/OS-Ⅱ代码是用C语言写的;但仍需要用C和汇编语言写一些与处理器相关的代码,这是因为µC/OS-Ⅱ在读写处理器寄存器时只能通过汇编语言来实现。由于µC/OS...

2017-04-27 09:21:03

阅读数 441

评论数 0

等待一个内存块

有时候,在内存分区暂时没有可用的空闲内存块的情况下,让一个申请内存块的任务等待也是有用的。但是,µC/OS-II本身在内存管理上并不支持这项功能。如果确实需要,则可以通过为特定内存分区增加信号量的方法,实现这种功能(见6.05节,信号量)。应用程序为了申请分配内存块,首先要得到一个相应的信号量,然...

2017-04-26 10:11:37

阅读数 134

评论数 0

Using Memory Partitions

图 F7.5是一个演示如何使用µC/OS-II中的动态分配内存功能,以及利用它进行消息传递[见第6章]的例子。程序清单 L7.8是这个例子中两个任务的示意代码,其中一些重要代码的标号和图 F7.5中括号内用数字标识的动作是相对应的。 第一个任务读取并检查模拟输入量的值(如气压、温度、电压等),如果...

2017-04-25 09:11:31

阅读数 161

评论数 0

查询一个内存分区的状态,OSMemQuery()

在µC/OS-II 中,可以使用OSMemQuery()函数来查询一个特定内存分区的有关消息。通过该函数可以知道特定内存分区中内存块的大小、可用内存块数和正在使用的内存块数等信息。所有这些信息都放在一个叫OS_MEM_DATA的数据结构中,如程序清单 L7.6。 程序清单 L7.6 OS_MEM...

2017-04-24 15:43:53

阅读数 542

评论数 0

释放一个内存块,OSMemPut()

当用户应用程序不再使用一个内存块时,必须及时地把它释放并放回到相应的内存分区中。这个操作由OSMemPut()函数完成。必须注意的是,OSMemPut()并不知道一个内存块是属于哪个内存分区的。例如,用户任务从一个包含32字节内存块的分区中分配了一个内存块,用完后,把它返还给了一个包含120字节内...

2017-04-23 20:44:10

阅读数 899

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭