ucosIII OS_TYPE.H /OS_CFG_APP.H 解释

ucosIII User's Manual.pdf 文档,μC/OS-III Configuration Manual章节B-2 B-3 翻译,以进一步了解ucosIII 的移植及裁剪。

B-2 DATA TYPES (OS_TYPE.H)

os_type.h包含μC/OS-III所用到的数据类型,这些数据类型只应在μC/OS-III的移植时被修改。
修改os_type.h的原因是处理器针对特定字长可能会运行的更好。例如一个16位处理器在处理16位值时可能更有效率,而32位处理器对32位值更合适,即便会有额外的RAM开销。换言之,用户可能需要在处理器性能和内存开销上作出选择。


B-3 μC/OS-III STACKS, POOLS AND OTHER (OS_CFG_APP.H)

μC/OS-III允许用户配置空闲任务堆栈的大小、统计任务堆栈、消息池、时钟节拍轮盘、定时器轮盘、调试表等。这是通过os_cfg_app.h进行完成的。
OS_CFG_TASK_STK_LIMIT_PCT_EMPTY:
这个#define为空闲任务,统计任务,节拍任务,中断队列处理任务和定时器任务的任务堆栈 设置堆栈溢出检测限位(以空余百分比的形式)。换句话说,设置值是堆栈剩余的空间比例。
例如,如果堆栈的大小为1000个CPU_STK单元,而用户声明的OS_CFG_TASK_STK_LIMIT_PCT_EMPTY为10,则堆栈溢出检测限位将在堆栈%90满或在%10空的时候被置位。
如果处理器的堆栈是从高地址向低地址的增长,那么检测限位应该靠近堆栈的“基地址”,即接近堆栈的0单元。
如果处理器不支持自动堆栈限位检测,则应该将这个#define设置为0.


OS_CFG_IDLE_TASK_STK_SIZE:
设置空闲任务的堆栈大小(以CPU_STK为单位),注意,设置的任务堆栈大小至少要大于OS_CFG_STK_SIZE_MIN值(见os_cfg.h)


OS_CFG_INT_Q_SIZE:
如果OS_CFG_ISR_POST_DEFERRED_EN设置为1(见os_cfg.h),则这个#define指定了中断队列可以容纳的项目数。此队列的大小取决于 ISR处理程序期间,可能发生多少此中断?其大小还取决于是否允许中断嵌套。一个很好的初始值大约是10.


OS_CFG_INT_Q_TASK_STK_SIZE:
如果OS_CFG_ISR_POST_DEFERRED_EN设置为1(见os_cfg.h),则#define设置的ISR处理任务(ISR handler task’s stack)的堆栈大小(以CPU_STK为单位)


OS_CFG_ISR_STK_SIZE:
此项设置了μC/OS-III的中断堆栈大小(以CPU_STK为单位),注意,次堆栈的大小需要满足中断嵌套的最坏情况,假设处理器支持中断嵌套。该堆栈的声明在os_cfg_app.c中,形式如下:
CPU_STK OSCfg_ISRStk[OS_CFG_ISR_STK_SIZE];


OS_CFG_MSG_POOL_SIZE:
此项指定了OS_MSGs消息池中可用的OS_MSGs数量。其值以OS_MSG单元的数量表示。消息池在os_cfg_app.c中声明,形式如下:
OS_MSG OSCfg_MsgPool[OS_CFG_MSG_POOL_SIZE];


OS_CFG_STAT_TASK_PRIO:


OS_CFG_STAT_TASK_RATE_HZ:

设置统计任务的执行频率,HZ为单位。建议该值是节拍频率的偶数分之一


OS_CFG_STAT_TASK_STK_SIZE:


OS_CFG_TICK_RATE_HZ:


OS_CFG_TICK_TASK_PRIO:

节拍任务的优先级。建议将此任务设置在一个相当高的优先级上,但并不是最高的。分配给该任务的优先级必须大于0并且小于OS_CFG_PRIO_MAX-1.


OS_CFG_TICK_TASK_STK_SIZE:

OS_CFG_TICK_WHEEL_SIZE:

这个#define定义了OSTickWheel[]表中的项目数。“轮盘”的作用,是可以减少节拍任务每次需要检查更新的任务数量。轮盘的大小应该是应用程序的预期总任务数的几分之一。
其值应该是4~1024之间的数。任务管理的开销在某种程度上决定了轮盘的大小。较大的轮盘尺寸将会减小节拍管理的负荷,但会需要更多地RAM。轮盘的每个项目都包含一个指针、一个计数器,计数器记录了在轮盘的这一条“轮辐”上等待的任务数。这个计数器通常16位的。建议不要将OS_CFG_TICK_WHEEL_SIZE设置为与节拍频率成倍数的关系。如果应用程序有很多任务,建议设置一个较大的轮盘尺寸。作为初始值,建议使用一个质数(3,5,7,11,13,17,19,23…)。


OS_CFG_TMR_TASK_PRIO:
指定μC/OS-III定时器任务优先级。建议设置在一个中等偏低的优先级上。
应遵守如下规则:

OS_CFG_TMR_TASK_RATE_HZ
定时器任务的频率。一般默认设置为10Hz。当然定时器可以以更高的速度运行,代价是更高的处理器开销。
注:OS_CFG_TMR_TASK_RATE_HZ必须是OS_CFG_TICK_TASK_RATE_HZ的整数分之一。换句话说,如果设置OS_CFG_TICK_TASK_RATE_HZ==1000Hz,请不要设置OS_CFG_TMR_TASK_RATE_HZ为11,因为那样子每次定时器更新都将需要90.91时钟节拍,不是整数。


OS_CFG_TMR_TASK_STK_SIZE:
定时器任务的堆栈大小。


OS_CFG_TMR_WHEEL_SIZE:
定时器的更新采用了轮转的轮盘机制。“轮盘”的作用,是可以减少定时器管理任务每次需要检查更新的任务数量。轮盘的大小用该时应用程序的总定时器数目的几分之一。
其值应该是4~1024之间的数。定时器管理的开销在某种程度上决定了轮盘的大小。较大的轮盘尺寸将会减小定时器管理的负荷,但会需要更多地RAM。轮盘的每个项目都包含一个指针、一个计数器,计数器记录了在轮盘的这一条“轮辐”上等待的任务数。这个计数器通常16位的。建议不要将此值设置为与节拍频率成倍数的关系。如果应用程序有很多定时器,建议设置一个较大的轮盘尺寸。作为初始值,建议使用一个质数(3,5,7,11,13,17,19,23…)。

如有出入,以英文原版为主。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
~/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool ~/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp Traceback (most recent call last): File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/oem/oem_quick_build.py", line 9, in <module> oem_main.main(['', 'build', 'oem/quick_build_config.json']) File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/oem/oem_main.py", line 115, in main build(cfg_file=argv[2]) File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/oem/oem_main.py", line 16, in build from oem_build import OemAreaBuilder, OemImageBuilder File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/oem/tool/oem_build.py", line 15, in <module> from common.area_tool import PublicKey, AreaTool File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/common/area_tool.py", line 9, in <module> import security as sec File "/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/common/security.py", line 351, in <module> from Crypto.PublicKey import RSA ModuleNotFoundError: No module named 'Crypto' ~/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp cp /home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/image/oem/boot_image.bin /home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/pub/hi3519dv500_emmc_image_glibc/boot_image.bin; cp: cannot stat '/home/lkuser/SDK/Hi3519DV500_SDK_V2.0.0.2/smp/a55_linux/source/bsp/tools/pc/image_tool/image/oem/boot_image.bin': No such file or directory make: *** [Makefile:505: gslboot_build] Error 1
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值