~~NOTOC~~ ====== OSA : Error list ====== ==== #1 : Unknown compiler! ==== OSA can only be built with the following compilers: * HI-TECH PICC STD * HI-TECH PICC PRO * HI-TECH PICC18 STD * Microchip C18 * Microchip C30 * CCS PICC * microC PRO for PIC * WinAVR * IAR Other compilers are not yet supported. ---- ==== #2 : Constants OS_xxx_BANK are not allowed now (use OS_BANK_xxx instead) ==== This means that you defined old-style constants for allocating OSA variables in file ##[[en:osa:ref:appendix:configuration|OSAcfg.h.]]## New-style names are prefixed by "##[[en:osa:ref:appendix:configuration|OS_BANK_]]##". See [[en:osa:ref:appendix:configuration#Data allocation for PIC10, PIC12, PIC16 and PIC18|configuration]]. ---- ==== #3 .. #12 : Incorrect OS_BANK_xxx value (should be 0, 1, 2 or 3) ==== You define one or more ##[[en:osa:ref:appendix:configuration|OS_BANK_xxx]]## constants in ##[[en:osa:ref:appendix:configuration|OSAcfg.h]]## with incorrect value(s). Allowed values are 0, 1, 2 and 3 only. ---- ==== #13 : OST_TIMER is not supported! Use OS_TIMER_SIZE instead ==== This means that you defined an old-style constant. ##[[en:osa:ref:description:data_types#OST_TIMER|OST_TIMER]]## is no longer supported. In older OSA versions this constant could be used to redefine type of timers, where type was given directly (e.g. **char**, **unsigned long**). Now you can redefine the timer's type by setting its size. For example: #define OS_TIMER_SIZE 4 // Timer's type will be unsigned long ---- ==== #14 .. #15 : Can't redefine name OST_xxx in 'OSAcfg.h'. Use OS_xxx_TYPE instead. ==== Since OSA version 90200, types of ##[[en:osa:ref:description:data_types#OST_MSG|OST_MSG]]## and ##[[en:osa:ref:description:data_types#OST_SMSG|OST_SMSG]]## can be redefined only via the new constants ##[[en:osa:ref:appendix:configuration|OS_MSG_TYPE]]## and ##[[en:osa:ref:appendix:configuration|OS_SMSG_TYPE.]]## The reason is below: ##[[en:osa:ref:description:data_types#OST_MSG|OST_MSG]]## was defined as: #define OST_MSG void * When you define several variables of this type: OST_MSG msg1, msg2, msg3; the compiler makes the substitution: void * msg1, msg2, msg3; As you see, only **msg1** will be pointer to void, while **msg2** and **msg3** will be just void. This situation could be corrected by replacing the type definition by: typedef void * OST_MSG; But in this case the user can't redefine this type. For this reason, the type of MSG is not redefined in ##[[en:osa:ref:appendix:configuration|OSAcfg.h]]## directly, but through a constant: #define OS_MSG_TYPE int * and then ##[[en:osa:ref:description:data_types#OST_MSG|OST_MSG]]## is defined in osa.h: typedef OS_MSG_TYPE OST_MSG; ---- ==== #16 : Incorrect OS_CSEM_SIZE value (m.b. only 1, 2 or 4)! (see OSAcfg.h) ==== You entered an incorrect size for variables of counting semaphore type. Allowed values: * 1 - for unsigned char * 2 - for unsigned int * 4 - for unsigned long ---- ==== #17 .. #21 : Bad OS_xxx size (must be 1, 2 or 4) ==== You entered an incorrect size for timer variables. Allowed values: * 1 - for unsigned char * 2 - for unsigned int * 4 - for unsigned long ---- ==== #22: Qtimers are not supported under 12-bit controllers (PIC10 and PIC12) ==== Qtimers are not supported for 12-bit controllers. In practice, there is no need to use them on 12-bit PICs, since they are only beneficial when using a large number of timers. ---- ~~UP~~