从其官方网站下载下来的UCOSII针对Cortex M3的移植存在问题。 //NVIC_SYSPRI2 EQU 0xE000ED20 ; System priority register ( 2 ). NVIC_SYSPRI2 EQU 0xE000ED22 ; System priority register (yan). //NVIC_PENDSV_PRI EQU 0x00 ; PendSV priority value (highest). NVIC_PENDSV_PRI EQU 0xFF ; PendSV priority value (LOWEST yan). 问题一:PSV异常地址错误,其二将任务调度的异常设置为最高优先级,这样存在问题。若一个 低优先级任务中要求任务调度,PSV异常会立马执行 ,执行完毕后不是回到原异常处理 ,而是执行用户任务。这在<definitive guide of cortex m3>中有详细的描述,很基本的问题。不详细是移植者的水平问题,而且从其注释和变量定义来看,估计是有意为之。 我认为应将PSV的优先级设置为最低,当然现有代码还要做相应调整。若有异议,请拍砖。
|