随笔分类 -  UC/OS II

摘要:先把ucosii中的原文写在这,然后再说一下我的具体理解。μC/OS-Ⅱ有一个提供运行时间统计的任务。这个任务叫做OS_TaskStat(),如果用户将系统定义常数OS_TASK_STAT_EN(见文件OS_CFG.H)设为1,这个任务就会建立。一旦得到了允许,OS_TaskStat()每秒钟运行一次(见文件OS_CORE.C),计算当前的CPU利用率。换句话说,OS_TaskStat()告诉用户应用程序使用了多少CPU时间,用百分比表示,这个值放在一个有符号8位整数OSCPUsage中,精读度是1个百分点。如果用户应用程序打算使用统计任务,用户必须在初始化时建立一个唯一的任务,在这个任务中调 阅读全文
posted @ 2013-06-04 15:55 cronus象牙塔 阅读(954) 评论(0) 推荐(0)
摘要:1、弄个包含中文的字体,在这里我借用大多数例子里的 “C:/windows/Font/simhei.ttf”文件。把这个文件拷贝到Datafiles文件夹的Font文件夹里。2、随便照着一个 .Font文件,自己写一个simhei.font文件。可以用TXT写,然后保存,有的朋友说需要保存为utf8编码格式,实际上是不需要的。3、同时注意修改你加载到程序里的scheme文件,将里面的字体文件设置成simhei.ttf。你也可以继续使用FirstWindow这个例子,这样的话直接修改源代码里的字体为simhei.tff。4、现在在程序里进行字符编码转换,我拿代码说明问题:std::wstring 阅读全文
posted @ 2013-06-03 21:26 cronus象牙塔 阅读(901) 评论(0) 推荐(0)
摘要:uc/os-II的启动流程:1 在程序中分配工作堆栈:分配工作堆栈的主要目的是为工作执行时的参数,堆栈提供存放和访问空间。我们可以通过定义数组 unsigned int StackX[STACKSIZE],并在工作启动时传送该数组完成工作堆栈的初始化。 eg :unsigned int StackX【STACKSIZE】;2 建立工作函数体:函数体中包含的内容有参数的定义以及初始化;功能函数或者是指令语句;设定工作挂起时间间隔。 eg :void Task4(void *Id) { 变量的定义以及初始化 功能函数或者指令语句 OSTimerDly(100);//任务挂起时间间隔 }3 描述启动 阅读全文
posted @ 2013-05-30 21:33 cronus象牙塔 阅读(366) 评论(0) 推荐(0)
摘要:系统时钟 系统时钟节拍 时钟节拍是特定的周期性中断(时钟中断),这个中断可以看作是系统心脏的脉动。操作系统通过时钟中断来确定时间间隔,实现时间的延时及确定任务超时。中断之间的时间间隔取决于不同的应用,一般在10~200 ms之间。时钟的节拍式中断使得内核可以将任务延时若干个整数时钟节拍,以及当任务等待事件发生时提供等待超时的依据。时钟节拍频率越快,系统的额外开销就越大。系统定义了32位无符号整数OSTime来记录系统启动后时钟滴答的数目。用户必须在多任务系统启动以后再开启时钟节拍器,也就是在调用 OSStart()之后。μC/OSII中的时钟节拍服务是通过在中断服务子程序中调用OSTime.. 阅读全文
posted @ 2013-05-30 11:42 cronus象牙塔 阅读(474) 评论(0) 推荐(0)
摘要:uCos中的时钟节拍可以基于软中断实现或者基于时钟节拍任务(但是这个任务要给予很高的优先级)对于STM32(Cortex-M3)来说这个就是SysTick中断0x0000003C当中断发生时调用OS_CPU_SysTickHandler函数,这样就提供了系统的时钟节拍uCos中扩展的应用都是在HOOK函数中实现的,程序关于Time的调用,首先都是基于OSTime的,其次由于在OSTimeTick函数中预留了OSTimeTickHook()函数这样可以方便我们在OSTimeTickHook()函数中添加我们自己的代码实现在系统中的调用由于OSTimeTickHook()函数在OSTimeTick 阅读全文
posted @ 2013-05-30 11:00 cronus象牙塔 阅读(700) 评论(0) 推荐(1)
摘要:ean J. Labrosse所著《MicroC / OS-II: The Real Time Kernel (Second Edition)》(一下简称“宝书”)是基于1999年发布的2.00版本,目前uC/OS-II发展到了2.90版(2010年发布),其自身已经发生了很大的变化。当移植新版本uC/OS-II时,会发现很多需要移植的声明、定义、函数等等已经不符合书中介绍的情况和方法了。在这里尝试做一个简单的比较和说明,以便能进一步简化和了解uC/OS-II的移植。本文只阐述涉及移植方面的变化,其它关于新功能、新函数以及各类优化的描述见另文。1.uC/OS-II中断使能状态的保存除了宝书中定 阅读全文
posted @ 2013-05-30 10:56 cronus象牙塔 阅读(518) 评论(0) 推荐(0)
摘要:uC/OS-II的任务调度机制(在文件OS_CORE.C中) uC/OS-II有两种任务调度器:任务级的调度器和中断级的调度器。任务级的调度器由函数OSSched()来实现;中断级的调度器由函数OSIntExit()来实现。 调度器OSSched()的前半部分叫调度部分,其职责就是寻找优先级别最高的就绪任务作为待运行任务。if ((OSLockNesting | OSIntNesting) == 0)在中断服务程序中不允许进行任务调度,所以每当进入中断服务程序就要把变量OSIntNesting加1,而当中断返回前则要把OSIntNesting减1,这样调度器就不会在中断服务程序中进行调度工作了 阅读全文
posted @ 2013-05-30 08:22 cronus象牙塔 阅读(488) 评论(0) 推荐(0)