??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美成人有码,精品成人在线观看,国产日本欧美视频http://www.shnenglu.com/yishanhante/category/13839.htmlzh-cnTue, 18 May 2010 15:36:26 GMTTue, 18 May 2010 15:36:26 GMT60配置参量http://www.shnenglu.com/yishanhante/articles/115721.htmljayjayTue, 18 May 2010 13:10:00 GMThttp://www.shnenglu.com/yishanhante/articles/115721.htmlhttp://www.shnenglu.com/yishanhante/comments/115721.htmlhttp://www.shnenglu.com/yishanhante/articles/115721.html#Feedback0http://www.shnenglu.com/yishanhante/comments/commentRss/115721.htmlhttp://www.shnenglu.com/yishanhante/services/trackbacks/115721.html配置参量(位于FreeRTOSConfig.h)
configUSE_PREEMPTION
讄?Q用抢先式内核Q设|ؓ0Qؓ合作轮{内核?

configUSE_IDLE_HOOK
讄?Q?使用I闲钩子Q设|ؓ0Q不使用I闲钩子,?

configUSE_TICK_HOOK
如果希望使用旉片钩? p|ؓ1Q设|ؓ0Q不使用

configCPU_CLOCK_HZ
内部处理器执行的频率。这个值需要正配|外围定时器?

configTICK_RATE_HZ
The frequency of the RTOS tick interrupt.

RTOS旉片中断的频率?

旉片中断用来测量时间。因此更高时间片频率意味着旉量可以有更高分辨率Q同时意味着内核占用更多的CPUQ效率很低)。演C程序都使用?000Hz的时间片频率。这是ؓ了测试内核,通常需要更高的频率?

多个d共有同一优先U。通过切换dQ在每一个RTOS旉片内Q内核将在同一优先U的d间分配处理器旉。高旉片频率意味着减给予每个Q务的旉份额?

configMAX_PRIORITIES
应用E序d中可用优先 的数? 

M数量的Q务,都可以分配同一优先U?d单独分配优先U。参考configMAX_CO_ROUTINE_PRIORITIES?内核分配的每个可用的优先U都消耗RAMQ因此这个g应该讄为高于实际应用程序中需要的?

configMINIMAL_STACK_SIZE
I闲d使用的堆栈大。通常q个g用少?FreeRTOSConfig.h file中演C程序提供的?

configTOTAL_HEAP_SIZE
内核d可用的RAM数量。如果程序中利用例子中内存分配方案(FreeRTOS 源代码提供的Q,q个g仅适用q些。参考内存管?部分获得更过l节.

configMAX_TASK_NAME_LEN
当创Z个Q务,能够l予描述d名称的最大容讔R度。这个长度指定符h目,包括NULLl止字节?

configUSE_TRACE_FACILITY
讄?Q用可视化q踪功能。设|ؓ0Q就不用。如果用可视化q踪Q必L供追t缓冲区?

configUSE_16_BIT_TICKS
旉片(内核开始执行后Q时间片中断的次敎ͼ来测量时间。时间片计数器定义ؓ可用的portTickType.cd?/p>

定义configUSE_16_BIT_TICKS?Q将使portTickType定义?6位无W号cd。定义ؓ0Q将?2位无W号cd?使用16位类型,?6位或8位单片机大幅度提高性能。但是,q样限制了最大指定可用时间周期(65535旉片)。然而,假定旉片频率ؓ250HzQ一个Q务在16位上Q最大g时或中断旉?62U,?2位ؓ17179869U?/p>

configIDLE_SHOULD_YIELD
q个参数控制d与空闲Q务优先相同时的行ؓ。仅仅有以下影响Q?/p>

1.使用优先U调?
2.用户E序创徏的Q务,q行在空闲Q务一L优先U?
d在时间片轮{中,使用同一优先U。假定没有更高优先的Q务,q样每一个Q务,在空闲优先下,被分配相同数量的处理时间。如果,他们的优先高于I闲d的优先Q那么这U情冉|是如此?当Q务处于空闲优先下的行ؓQ会有稍怸同。当configIDLE_SHOULD_YIELD讄?Ӟ当其他在I闲优先U的d准备q行ӞI闲d立刻让出CPU。当E序的Q务调度可用时Q要保I闲d能够执行的最时间以上。这个行为,产生了不好的影响Q根据应用程序的需要)Q如下描qͼ


上述图表表明Q四个在I闲优先U的d执行模型。Q务A, B,和CQ是应用E序d。Q?I是空闲Q务。上下文切换在T0, T1....T6规律的周期间发生。当I闲d执行ӞdA准备执行Q但是空闲Q务已l占M当前旉片的部分旉。结果是QQ务I 和Q务A共同分n一个时间片。Q务B 和Q务C比Q务A获得更多的执行时间?

q些可以通过如下避免Q?

1.如果合适,可以使用I闲钩子代替在空闲优先的分开d。创建程序Q务的优先U高于空闲优先?
2.讄configIDLE_SHOULD_YIELD?
讄configIDLE_SHOULD_YIELD?Q将LI闲d让出执行旉直到它的旉片用完。这q保了所有在I闲优先U的d分配了相同数量的执行旉。这是以分配l空闲Q务更高比例的执行旉Z仗?/p>

configUSE_MUTEXES
讄?Q将使用互斥功能Q设|ؓ0Q将不用。读者应该明白FreeRTOS.org 功能中互斥型和二q制型信号量之间的不同?

configUSE_RECURSIVE_MUTEXES
讄?Q将使用递归互斥功能Q设|ؓ0Q将不用?

configUSE_COUNTING_SEMAPHORES
讄?Q将使用计数器型信号量功能;讄?Q将不用?

configUSE_ALTERNATIVE_API
讄?Q将包含替代队列函数Q设|ؓ0Q将不包含。替代API在queue.h头文件中有详l的描述?

configCHECK_FOR_STACK_OVERFLOW
The 堆栈溢出?q页中有详细的细节描q?

configQUEUE_REGISTRY_SIZE
队列记录有两个功能,都这涉及到内核相关的调试Q?/p>

1.允许一个队列相关的名称Q可以在GUI调试中容易定义?
2.包含了调试器所需的信息,来定位每个记录的队列和信号量?
队列记录除了q行内核相关的调试外Q没有什么目的?configQUEUE_REGISTRY_SIZE定义了可以记录的队列和信号量的最大数目。这些仅能够在用内核相兌试时需要记录的。查看API中vQueueAddToRegistry() ?vQueueUnregisterQueue()参考文,获得更多信息?/p>

configUSE_CO_ROUTINES
讄?Q将使用Q协同例E)合作轮{式程序;讄?Q将不用。当使用Ӟ必须把Croutine.c包含q去目中?

configMAX_CO_ROUTINE_PRIORITIES
合作式应用程序中可用的优先数目?M合作式程序可使用同一优先U。Q务分别设|优先——参考configMAX_CO_ROUTINE_PRIORITIES.

 

 

Cortex M3 使用着h意部分结别说明的地方?


configKERNEL_INTERRUPT_PRIORITY应该讄为最低优先?

注意如下讨论中,?FromISR" l尾的API函数仅能够在中断服务函数中调用?

那些仅仅讄configKERNEL_INTERRUPT_PRIORITY的接?

内核本n?configKERNEL_INTERRUPT_PRIORITY讄优先U。调用API函数的中断,也必Mq个优先U执行。没有调用API函数的中断,可以有更高的优先U,因此内核调动Q他们执行从不gӞ在他们硬仉制的范围内)?那些在这两种情况下:

configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY执行的接口?

内核本n为configKERNEL_INTERRUPT_PRIORITY讄优先U。可以设|configMAX_SYSCALL_INTERRUPT_PRIORITYZ调用FreeRTOS.org API 函数的中断设|更高的优先U?

可以讄configMAX_SYSCALL_INTERRUPT_PRIORITY高于 Q一个很高优先的水qIconfigKERNEL_INTERRUPT_PRIORITY来获?中断全嵌套模式。没有调用API函数的中断可以在高于configMAX_SYSCALL_INTERRUPT_PRIORITY 优先U下执行Q因此是不会被内核执行g时。例如,假定一个微控制器,?U中断优先水^—?是最低优先Q?为最高(参考Cortex M3用户在这部分的结别注意的地方Q。如下图片,描述了在每一个优先下什么可以和什么不可以Q两个常量被讄???


中断优先U配|例?
q些参数配置允许很灵zȝ中断处理Q?

•中断处理的Q务,像系l里其他d一P书写和分配优先。这些Q务都是被一个中断激zRISR本n~写的应该尽可能的短——仅仅ؓ了唤醒更高优先的Q务而占用RAM。ISRq回Q直接进入要唤醒的Q务——因此中断处理是及时的好像所有是中断本n做的一栗这L好处是:执行处理的Q务时Q所有的中断都允许?
执行 configMAX_SYSCALL_INTERRUPT_PRIORITY的接口提供更多——在内核中断和configMAX_SYSCALL_INTERRUPT_PRIORITY 之间允许全嵌套模式嵌套和E序调用API函数。中断优先在configMAX_SYSCALL_INTERRUPT_PRIORITY执行从不延时?

•q行在高于系l调用最大优先的ISRQ从不会被内核本w屏蔽,所以他们的响应性不被内核功能所影响。对于那些需要瞬间高_ֺ的中断来说是个好Ҏ——例如:执行发动机换向的中断。然而,q样的ISR不能够用FreeRTOS.org API函数
Z利用q个ҎQ应用程序必遵守如下原则:M使用FreeRTOS.org API的中断必设|ؓ同一优先U,像内核(configKERNEL_INTERRUPT_PRIORITY配置的一PQ或者处于或低于configMAX_SYSCALL_INTERRUPT_PRIORITYQؓ了接口包含了q个功能Q?

Cortex M3 用和特别要注意的地方Q?C,Cortex M3 核心数g使用低优先来代曉K优先U的中断Q这Lh反常规和Ҏ忘记Q。如果希望分配够中断一个低优先U,不要分配?优先U(或其他低数|Q因样实际上在系l中q个中断为最高优先——如果设|优先在configMAX_SYSCALL_INTERRUPT_PRIORITY可能使系l崩溃?在Cortex M3核心 最低优先实际上是255——然而不同于 Cortex M3 卖主说明的不同数目的优先U位和支持库函数Q期待优先使用不同Ҏ指定Q。例如在STM32 Q在ST驱动库中能够指定的最低优先?5——最高优先可以指定?。configKERNEL_INTERRUPT_PRIORITY and configMAX_SYSCALL_INTERRUPT_PRIORITY

configKERNEL_INTERRUPT_PRIORITY一般适用于Cortex-M3, PIC24, dsPIC and PIC32 接口?configMAX_SYSCALL_INTERRUPT_PRIORITY一般PIC32和Cortex M3 接口中可用。其他接口将很快更新?



jay 2010-05-18 21:10 发表评论
]]>
뾫Ʒþþþ| þù| ޾Ʒþ| þZYZԴվĶ| ݺɫþۺ| þ99Ʒ | Ʒþþþþ| ޹˾Ʒþþùһ | þþŷղAV | 97þþƷҹһ| þAAAAƬһ| þþƷ99Ʒ | Ưޱ˾þþƷ| þþžžþƷ| һɫۺþ| ձþĻ| þþƷӰԺ| ޾Ʒһ߾þ| ۺϳ˾þôƬ91| þavרavһ| ˾ҹվھƷþþþþþþ | Ʒþþþ9999| Ʒ99þþþƷ| ձþþþƷĻ| þþѾƷre6| ҹþþþþ| þ99žŹѿС˵| þav߳avav紵| ŮһaëƬþw| þer99ȾƷһ| պƷþþþþþõӰ| ŷպƷþþþ| Ʒþþþþþþþ | Ʒþ¶| ĻþӰԺ| ѾþþƷ99reѾy| ޾Ʒþþþþò| þþþþžžƷӰԺ| þĻԴվ| þþþþþþþѾƷ| þøƬ|