Собственно проблема с портированием uCOS II на ARM1176, а именно с FPU
отталкивался от порта Порт от Micrium for the ARM1176JZ(F)-S Processor Использую IAR.

Проблема в том что в вышеописаном порте отсутсвует работа с FPU как таковая.
Пробывал брать с другого порта uCOS работу с ФПУ, но похоже что-то забываю.
Делал так:
1. дописываю в os_cpu_a.s:
Код
        EXPORT OS_CPU_FP_Restore
OS_CPU_FP_Restore
        FLDMIAS R0!, {S0-S31}        ; Restore the VFP registers from pblk
        BX      LR                ; Return to calling function


        EXPORT OS_CPU_FP_Save
OS_CPU_FP_Save

        FSTMIAS R0!, {S0-S31}        ; Save the VFP registers in pblk      
        BX      LR                ; Return to calling function


2. в добавляю os_cpu_c.c

Код
void  OSTaskCreateHook (OS_TCB *ptcb)
{
#if OS_CPU_FPU_EN > 0
    INT8U  err;
    void  *pblk=(void*)1;
#endif


#if OS_CPU_FPU_EN > 0
    if (ptcb->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {  
        pblk = malloc(33*4);
        if (pblk != (void *)0) {
            ptcb->OSTCBExtPtr = pblk;
            OS_CPU_FP_Save(pblk);    
        }
    }
#endif

Код
void  OSTaskDelHook (OS_TCB *ptcb)
[code]{
#if OS_CPU_FPU_EN > 0
    if (ptcb->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {            /* See if task had FP support               */
        if (ptcb->OSTCBExtPtr != (void *)0) {              /* Yes, OSTCBExtPtr must not be NULL        */
            free(ptcb->OSTCBExtPtr);//OSMemPut(OSFPPartPtr, ptcb->OSTCBExtPtr);      /*      Return memory block to free pool    */
        }
    }
#endif

Код
void  OSTaskSwHook (void)
{
#if OS_CPU_FPU_EN > 0
    void  *pblk;
#endif

#if OS_CPU_FPU_EN > 0                                      
    
    if (OSRunning == OS_TRUE) {                                  
        if (OSTCBCur->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {          
            pblk = OSTCBCur->OSTCBExtPtr;            
            if (pblk != (void *)0) {                                  
                OS_CPU_FP_Save(pblk);                
            }
        }
    }
                                                
    if (OSTCBHighRdy->OSTCBOpt & OS_TASK_OPT_SAVE_FP) {
        pblk = OSTCBHighRdy->OSTCBExtPtr;                
        if (pblk != (void *)0) {                        
            OS_CPU_FP_Restore(pblk);                                
        }
    }
#endif


но помоему чтото забыл... так как даже простое:

Код
com_print("%lf\n", 0.1234);

вызваное в любой задаче выводит: 0,00000

зато есл вызвать это же перед инициализацией оси:
Код
int main(){
uart_init();
com_print("%lf\n", 0.1234);
...
...
}

все работает шикарно...

Может будут у кого какие идеи, или способы решения данной проблемы, посоветуйте - подскажите.
Очень надо.
заранее спс