~~NOTOC~~ ======= OSA : History ======= ==== 110306 ==== 2011, mar, 6 {{osa:history:osa_110306.zip|download}} - Bug fixed for WinAVR: local variables were not saved properly on WAIT services - Bug fixed for mikroC PRO (pic18): inline assembler in _OS_JumpToTask did not compiled when case sensitivity option enabled ==== 101226 ==== 2010, dec, 26 - _OS_RETURN_NOSAVE corrected for PIC18: CCS, MCC18, mikroC PRO (NOP added after call to _OS_ReturnNoSave) ==== 101208 ==== 2010, dec, 8 {{osa:history:osa_101208.zip|download}} - _OS_RETURN_NOSAVE corrected for HT-PICC18 (NOP added after call to _OS_ReturnNoSave) ==== 101122 ==== 2010, nov, 22 {{osa:history:osa_101122.zip|download}} - Fixed bug in IAR's AVR port: * 2 bytes stack pointer saving/restoring * saving Y on context switch * jumping to task when ROM > 64K ---- ==== 101030 ==== 2010, oct, 30 {{osa:history:osa_101030.zip|download}} - Another bug in qtimers fixed (error with force updating already run timer with zero time value) ---- ==== 101025 ==== 2010, oct, 25 {{osa:history:osa_101025.zip|download}} - Qtimer's services corrected: OS_Qtimer_Run and OS_Qtimer_Break ---- ==== 101007 ==== 2010, oct, 7 {{osa:history:osa_101007.zip|download}} - Port for STM8 (IAR and Raisonance) added; - Extended priority mode corrected (in some cases low-priority tasks did not get control if high-priority task was allway ready) ---- ==== 101000 ==== 2010, oct {{osa:history:osa_101000.zip|download}} - Port for STM8 (Cosmic) added; - New extended priority mode added (refer to [[en:osa:ref:description:events_and_priority|Events and priority]] chapter) - osacfg_tool.exe upgraded (see below) - source files were remounted - structer of folders was recombined. (It is required, but not nessesary, to remove previous version of OSA before installing new one) ---- ==== 100621 ==== 2010, jun, 21 {{osa:history:osa_100621.zip|download}} * Service OS_Qtimer_Create() did not cleared Timeout bit. Now it does. ---- ==== 100612 ==== 2010, jun, 12 {{osa:history:osa_100612.zip|download}} * Removed services OS_xxx_IsFree and OS_xxx_IsEmpty (xxx = [Queue, Squeue]). Use inversion of OS_xxx_IsFull and OS_xxx_Check instead. ---- ==== 100531 ==== 2010, may, 31 {{osa:history:osa_100531.zip|download}} * Removed limitation for WinAVR: any optimization level can be used now * Bug fixed for MCC18: queues with buffer size greater than 128 elements worked incorrectly (see _OS_Queue_Send) * OS_Csem_Check returns boolean value now * Types %%__%%osa_xxx renamed to OST_XXX (old names still avialable) ---- ==== 100510 ==== 2010, may, 10 {{osa:history:osa_100510.zip|download}} * Bug fixed for mikroC for PIC16: All OS_xxx_Wait_TO services did not exited by timeout. ---- ==== 100426 ==== 2010, apr, 26 {{osa:history:osa_100426.zip|download}} * Bug fixed (appeared in 100420): OS_Task_Create worked incorrectly for PIC18 and AVR controllers (the task's starting address was zero after creating) ---- ==== 100420 ==== 2010, apr, 20 {{osa:history:osa_100420.zip|download}} * **PICC18**: Macro _OS_SetIndfWord corrected (for code size > 0x10000) * Type of variable temp in _OS_XXX_Send changed OST_WORD -> %%__%%osa_int16 (Otherwise there was troubles with queue size greater than 128) * **PICCPRO16E, mikroC, CCS16, CCS18**: Bug fixed in _OS_ClrReadySetClrCanContinue: * OS_ENABLE_TTIMER->OS_ENABLE_TTIMERS * **MikroC16**: macros for context switching updated (see osa_mikorc16.h) * **CCS16**: OS_SchedRepPoint corrected: _OS_bTaskCanContinue has never been set ---- ==== 100317 ==== 2010, mar, 17 {{osa:history:osa_100317.zip|download}} - OS_FLAG_ATOMIC_WRITE_A corrected (in file osa_flags.h): * %%__%%OS_FLAG_DI_A->%%__%%OS_FLAG_DI * %%__%%OS_FLAG_RI_A->%%__%%OS_FLAG_RI ---- ==== 100316 ==== 2010, mar, 16 {{osa:history:osa_100316.zip|download}} * Bug fixed under IAR for AVR: register Y saved incorrectly ==== 100314 ==== 2010, mar, 14 {{osa:history:osa_100314.zip|download}} - Added atomic flags writing - Flags services renamed: * 1->Set * 0->Clear * 1x->On * 0x->Off * 11->AllOn * 0x->AllOff - WinAVR code written with assembler. - Due to WinAVR internal error it is possible to use OSA with -o0 optimization only - Functions for queues, tasks, csems and system were moved to their own files - Type OS_MSG_CB is volatile now - OS_BSem is volatile now - Added OS_ENABLE_INT_FLAG - [[en:osa:ref:appendix:resources|Memory usage]] statistic updated ==== 100311 ==== 2010, mar, 11 {{osa:history:osa_100311.zip|download}} - Port for PIC16 enhanced added (PICC PRO 9.70 or higher) - Port for WinAVR added - Port for IAR (AVR) added - Sevice OS_Task_Create_M added (for future purposes) - Sevice OS_Task_Replace_P added: MCC18, MCC30, mikroC16, mikroC18, CCS16, CCS18 - Clearing "priority" removed from OS_Init - _OS_Stimers is volatile now - OST_TASK_STATE, OST_QTIMER_FLAGS and OST_DTIMER_FLAGS are volatile now - Dtimers and Qtimers are disabled now when OS_ENABLE_ALL defined. They should be enabled manualy in osacfg.h - OS_EnterInt() and OS_LeaveInt() now are empty marcos for all except PICC and PICC18 - OS_Task_GetCur() service added (same as OS_Task_GetCur()) - OST_WORD - OS_Task_GetCreated() service added ---- ==== 100210 ==== 2010, feb, 10 {{osa:history:osa_100210.zip|download}} - New type of timers added - Qtimers (queue of timers). New services: * OS_Qtimer_Create * OS_Qtimer_Delete * OS_Qtimer_Run * OS_Qtimer_Break * OS_Qtimer_Delay * OS_Qtimer_Wait * OS_Qtimer_Get * OS_Qtimer_IsRun * OS_Qtimer_Check - Added services for assignement static timers in run-time. New services: * OS_Stimer_Alloc * OS_Stimer_Found * OS_Stimer_Free * New constant: OS_STIMERS_ENABLE_ALLOCATION - Added services for working with task timers (see osa_tasks.h). New services: * OS_Ttimer_Run * OS_Ttimer_Break * OS_Ttimer_Delay * OS_Ttimer_Wait * OS_Ttimer_Get * OS_Ttimer_IsRun * OS_Ttimer_Check * OS_Ttimer_Pause * OS_Ttimer_Continue - OS_Init(): _OS_Dtimers.Next = 0 replaced with _OS_Dtimers.Flags.bNextEnable = 0 - Dtimer's functions moved to osa_dtimer.c file - OS_(x)timer_Break services added. (x) = T, S, Q, D - Bug fixed in common OS_DtimersWork: postfix ++ replaced with prefix ++ - Now it is possible to optimize code of work with static timers and task timers by speed (default) or by size. New constants: * OS_STIMERS_OPTIMIZE_SIZE * OS_TTIMERS_OPTIMIZE_SIZE - Bug fixed: qualifier OS_BANK mover after '*' in OS_Dtimers declaration - Bug fixed in OS_Init: variable for cycle counter was formed incorrectly - OS_Task_Create now saves position of new task's descriptor in _OS_temp - Error #21 added (bad qtimer's size); Error #22 added (qtimers not supported with 12-bit PICs) ---- ==== 91219 ==== 2009, dec, 19 {{osa:history:osa_91219.zip|download}} * Bug fixed: _OS_Return replaced with OS_Yield in service OS_Task_Pause (the return address did not stored on exit task) ---- ==== 91218 ==== 2009, dec, 18 {{osa:history:osa_91218.zip|download}} * OS_Task_Pause and OS_Task_Delete were corrected: these services made a comparison of _OS_CurTask's and service argument's addresses, instead of comparing their values ---- ==== 91210 ==== 2009, dec, 10 {{osa:history:osa_91210.zip|download}} * Services for work inside interrupt were corrected. Now is is allowed to use in ISR services with suffix "_I" only * Added services: * OS_Bsem_Check_I * OS_Bsem_Reset_I * OS_Bsem_Set_I * OS_Bsem_Signal_I * OS_Bsem_Switch_I * OS_Csem_Accept_I * OS_Csem_Check_I * OS_Csem_Reset_I * OS_Csem_Set_I * OS_Csem_SetValue_I * OS_Csem_Signal_I * OS_Flag_Check_AllOff_I * OS_Flag_Check_Off_I * OS_Flag_Check_AllOn_I * OS_Flag_Check_On_I * OS_Flag_Init_I * OS_Flag_Clear_I * OS_Flag_Set_I * OS_Msg_Accept_I * OS_Msg_Check_I * OS_Msg_Send_I * OS_Queue_Check_I * OS_Queue_IsEmpty_I * OS_Queue_IsFull_I * OS_Queue_Send_I * OS_Smsg_Accept_I * OS_Smsg_Check_I * OS_Smsg_Send_I * OS_Squeue_Check_I * OS_Squeue_IsEmpty_I * OS_Squeue_IsFull_I * OS_Squeue_Send_I * Added OS_ENABLE_INT_BSEM constant * Added empty service OS_Task_Reserve for different compilers compabitily * OS_Csem_Signal now waits if counting semaphore is already atmaximum. Alternate service added: OS_Csem_Signal_Now ---- ==== 91109 ==== 2009, nov, 9 {{osa:history:osa_91109.zip|download}} * Limitation for MCC30 removed: now OSA allows to allocate OSA code at high addresses of ROM (>0x10000) * Corrected OS_Wait and OS_Wait_TO macro redefinitions for mikroC PRO ---- ==== 91103 ==== 2009, nov, 3 {{osa:history:osa_91103.zip|download}} * Bug fixed: OS_Wait(expr) service did not work when low byte of 'expr' was zeroed. Same about OS_Flag_Wait for 16- and 32-bit flags when waiting higher than 7-th bits. * OS_Task_Replace_P was added for PICC and PICC18. (Other compilers not support this service yet) * Bug fixed for PIC12, PIC18, PIC24, dsPIC: OS_Yield executed after timeout in OS_xxx_Wait_TO could break the task (leave it forever). * Increased speed of scheduler for non-priority mode ---- ==== 91029 ==== 2009, oct, 29 {{osa:history:osa_91029.zip|download}} * Type 'bit' replaced with '__osa_bool' for internal functions _OS_CheckSmsg and _OS_CheckEvent * osa.h: added braces to OS_SET_TASK_IRP and OS_CLEAR_IRP macors ---- ==== 91027 ==== 2009, oct, 28 {{osa:history:osa_91028.zip|download}} * License added (BSD) * Bug fixed: Compiler exited with error on OS_Queue_Clear() service * mikroC PRO for PIC16: Added fast routines for IRP setting when OS_ADDRESS_TASK defined ---- ==== 91007 ==== 2009, oct, 7 {{osa:history:osa_91007.zip|download}} * mikroC PRO for PIC16 update: task descriptors can be allocated in bank2 or bank3 using OS_ADDESS_TASK constant in osacgh.h * CCS files bug fixed: services with timeouts did not wait event while timeout not expired ---- ==== 90722 ==== 2009, jul, 22 {{osa:history:osa_90722_.zip|download}} * Service OS_Task_Define was added for CCS compilers * Corrected osacfg.h in "test_speed" (ifndef replaced with ifdef) ---- ==== 90716 ==== 2009, jul, 16 {{osa:history:osa_90716_.zip|download}} * Bug fixed for CCS18: OS_Delay worked incorrectly * Added example for MCC18 ---- ==== 90707 ==== 2009, jul, 07 {{osa:history:osa_90707.zip|download}} * Bug fixed: OS_EI was defined incorrectly for MCC18 * Macros for work with tasks did not work with CCS (now braces around parameter pTask are removed) ---- ==== 90701 ==== 2009, jul, 01 {{osa:history:osa_90701.zip|download}} * **OSA ported to CCS compiler for PIC16 and PIC18 chips**. * Bug fixed: OS_Task_Create did not return OS_IsError when all descriptors are busy. * Internal arrays renamed: OS_BSems -> OS_Bsem, OS_STimers -> OS_STimer. ---- ==== 90700 ==== 2009, jun, 25 {{osa:history:osa_90700.zip|download}} * ** OSA ported to mikroC PRO (version 2.15 or grater) for PIC18.** * Some cosmetic modifications: - OS_RI and OS_DI removed from common function _OS_Csem_Signal, since they are already present in macro OS_Csem_Signal. - Field cTempFSR1 removed from TCB for PICC18. - In common _OS_Task_Create function (in osa.c) added "OS_state = priority" when _OS_Cur_Task points to new task. - _OS_Task_Create removed from osa_picc16.c and osa_picc18.h, since it is identical to common. - Dtimer's functions moved from osa_picc18.c and osa_mcc18.c into osa.c. - Internal services renamed: * _OS_GetRetPoint -> _OS_RETURN_SAVE * _OS_ReturnNoSave -> _OS_RETURN_NO_SAVE - Functions _OS_EnterCritical and _OS_LeaveCritical moved from osa_picc18.c and osa_mcc18.c into osa.c ==== 90406 ==== 2009, apr, 6 {{osa:history:osa_90406.zip|download}} * Internal service OS_IsSMsgFree() declaration corrected (it was declared incorrectly when sizeof(OST_SMSG) != 1). * Bug fixed in OSAcfg_Tool: when file opened by "Browse..." button all fields became default. ---- ==== 90402 ==== 2009, apr, 2 {{osa:history:osa_90402.zip|download}} * Fixed bug for MCC18: project did not build under MCC18 when simple messages used. ---- ==== 90321 ==== 2009, mar, 21 {{osa:history:osa_90321.zip|download}} * Fixed bug for MCC30: there was a possibility of blocking task after OS_xxx_Wait_TO timeout occured. * Fixed bug for PICC18 and MCC18: interrupts were disabled after OS_Dtimer_Delete execution. * Some code modifications for called from interrupt services * OSAcfg_Tool updated ---- ==== 90303 ==== 2009, mar, 3 {{osa:history:osa_90303.zip|download}} * OSAcfg_Tool bug corrected: enabling critical section had no effect. (Constant name saved incorrectly) ---- ==== 90226 ==== 2009, february, 26 {{osa:history:osa_90226.zip|download}} * Bug fixed: OS_Task_Replace did not tell to linker that created task will be called indirectly. At this reason call-tree was built incorrectly. ---- ==== 90200 ==== 2009, january, 22 {{osa:history:osa_90200.zip|download}} Most services and some constants and types are renamed. New naming scheme is: ##OS___##, where: {| class = "fpl" |##object## |is an object name (like Csem, Bsem, Msg, Queue, Dtimer ect.); |- |##action## |what do we do with object (Set, Clear, Wait ect.) |- |##suffix## |additional info (##I## - works in interrupt, ##TO## - check timeout, ect.) |} - This modification was made to simplify membering all services and to simplify programming when using context substituting editor. - To view all names replacements see file "osa\service\osa_oldnames.h" - Renaming in OSA: * Object names: * SMsg -> Smsg * QMsg -> Queue * QSMsg -> SQueue * CSem -> Csem * BSem -> Bsem * DTimer -> Dtimer * STimer -> Stimer * Constants: * OS_ENABLE_QMSG -> OS_ENABLE_QUEUE * OS_ENABLE_QSMSG -> OS_ENABLE_SQUEUE * OS_ENABLE_INT_QMSG -> OS_ENABLE_INT_QUEUE * Types: * OST_MSG_CB -> OST_MSG_CB * OST_QUEUE -> OST_QUEUE * OST_SQUEUE -> OST_SQUEUE - Types of MSG and SMSG now can be changed only througth OS_MSG_TYPE and OS_SMSG_TYPE constants. - Source code was formatted to be most friendly to programmer - New OSAcfg_Tool aviable to work with old- and new-styled names. OSA 90200 is compatibile to all projects written with older versions. There is only one exception: types of MSG and SMSG can not be modified directly in OSAcfg.h. If they will, compiler will exit with "OSA error #14" or "OSA error #15" (see [[en:osa:ref:appendix:errorlist|error list]]. This problem is fixed by changing in SAcfg.h OST_MSG->OS_MSG_TYPE and OST_SMSG->OS_SMSG_TYPE. ---- ==== 90115 ==== 2009, january, 15 {{osa:history:osa_90115.zip|download}} * Bug fixed: HT-PICC have a bug with assembler optimization when inline assembler used. In rare cases due to this bug, situation with incorrect RP1:RP0 settings could occure when returning to task after context switching. This bug has been worked arround by replacing assembler MACRO with C-MACRO (see MACRO _goto_OS_SchedRetPoint and _OS_GetReturnPoint in osa_picc16.h) ---- ==== 90109 ==== 2009, january, 9 {{osa:history:osa_90109.zip|download}} * Bug fixed: since 81227 non-priority mode did not work properly. * Corrected macros fr STimers in osa_picc16.h (specifier OS_STIMERS_BANK was skipped) ---- ==== 81227 ==== 2008, december, 27 {{osa:history:osa_81227.zip|download}} * Constant OS_ENABLE_INT_SEVICE was renamed to OS_ENABLE_INT_ALL (old name kept too) * It is possible now to define ENABLE_INT for each type of services: * OS_ENABLE_INT_CSEM * OS_ENABLE_INT_MSG * OS_ENABLE_INT_SMSG * OS_ENABLE_INT_QMSG (Constant OS_ENABLE_ALL does not include OS_ENEBALE_INT_xxx!) * Services for work in interrupts can be used with same services from task (i.e. OS_Csem_Signal_I and OS_Csem_Signal can be used in one program now) * It is possible now to pause, continue and delete (or stop) task from external tasks. Services added: * OS_Task_GetCur() * OS_Task_Delete(pTask) * OS_Task_Pause(pTask) * OS_Task_Continue(pTask) Added macro "this_task" wich means pointer to task being executed at now. * Task priority can be changed outside task. * OS_Task_SetPriority - **(NEW PARAMETERS!!!)** * OS_Task_GetPriority - **(NEW PARAMETERS!!!)** * All task services were replaced into "tasks.h" ---- ==== 81206 ==== 2008, december, 6 {{osa:history:osa_81206.zip|download}} * Bug fixed: project unabled to built when defined old style constant OS_DTIMER_SIZE. * Bug fixed: OS_Dtimer_Get was not defined properly. ---- ==== 81126 ==== 2008, november, 6 {{osa:history:osa_81126.zip|download}} * All dynamic timers services OS_xxxDTimer renamed to OS_xxxDTimer. Old names are still supported for compability. ---- ==== 81025 ==== 2008, october, 25 {{osa:history:osa_81025.zip|download}} * All comments are translated in english. ---- **[[en:osa:ref:download:history|Old versions in russian]]**