Available Languages?:

OSA : History


2011, mar, 6 download

  1. Bug fixed for WinAVR: local variables were not saved properly on WAIT services
  2. Bug fixed for mikroC PRO (pic18): inline assembler in _OS_JumpToTask did not compiled when case sensitivity option enabled


2010, dec, 26

  1. _OS_RETURN_NOSAVE corrected for PIC18: CCS, MCC18, mikroC PRO (NOP added after call to _OS_ReturnNoSave)


2010, dec, 8 download

  1. _OS_RETURN_NOSAVE corrected for HT-PICC18 (NOP added after call to _OS_ReturnNoSave)


2010, nov, 22 download

  1. Fixed bug in IAR's AVR port:
    • 2 bytes stack pointer saving/restoring
    • saving Y on context switch
    • jumping to task when ROM > 64K


2010, oct, 30 download

  1. Another bug in qtimers fixed (error with force updating already run timer with zero time value)


2010, oct, 25 download

  1. Qtimer's services corrected: OS_Qtimer_Run and OS_Qtimer_Break


2010, oct, 7 download

  1. Port for STM8 (IAR and Raisonance) added;
  2. Extended priority mode corrected (in some cases low-priority tasks did not get control if high-priority task was allway ready)


2010, oct download

  1. Port for STM8 (Cosmic) added;
  2. New extended priority mode added (refer to Events and priority chapter)
  3. osacfg_tool.exe upgraded (see below)
  4. source files were remounted
  5. structer of folders was recombined. (It is required, but not nessesary, to remove previous version of OSA before installing new one)


2010, jun, 21 download

  • Service OS_Qtimer_Create() did not cleared Timeout bit. Now it does.


2010, jun, 12 download

  • Removed services OS_xxx_IsFree and OS_xxx_IsEmpty (xxx = [Queue, Squeue]). Use inversion of OS_xxx_IsFull and OS_xxx_Check instead.


2010, may, 31 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)


2010, may, 10 download

  • Bug fixed for mikroC for PIC16: All OS_xxx_Wait_TO services did not exited by timeout.


2010, apr, 26 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)


2010, apr, 20 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:
  • MikroC16: macros for context switching updated (see osa_mikorc16.h)
  • CCS16: OS_SchedRepPoint corrected: _OS_bTaskCanContinue has never been set


2010, mar, 17 download

  1. OS_FLAG_ATOMIC_WRITE_A corrected (in file osa_flags.h):


2010, mar, 16 download

  • Bug fixed under IAR for AVR: register Y saved incorrectly


2010, mar, 14 download

  1. Added atomic flags writing
  2. Flags services renamed:
    • 1→Set
    • 0→Clear
    • 1x→On
    • 0x→Off
    • 11→AllOn
    • 0x→AllOff
  3. WinAVR code written with assembler.
  4. Due to WinAVR internal error it is possible to use OSA with -o0 optimization only
  5. Functions for queues, tasks, csems and system were moved to their own files
  6. Type OS_MSG_CB is volatile now
  7. OS_BSem is volatile now
  9. Memory usage statistic updated


2010, mar, 11 download

  1. Port for PIC16 enhanced added (PICC PRO 9.70 or higher)
  2. Port for WinAVR added
  3. Port for IAR (AVR) added
  4. Sevice OS_Task_Create_M added (for future purposes)
  5. Sevice OS_Task_Replace_P added: MCC18, MCC30, mikroC16, mikroC18, CCS16, CCS18
  6. Clearing "priority" removed from OS_Init
  7. _OS_Stimers is volatile now
  9. Dtimers and Qtimers are disabled now when OS_ENABLE_ALL defined. They should be enabled manualy in osacfg.h
  10. OS_EnterInt() and OS_LeaveInt() now are empty marcos for all except PICC and PICC18
  11. OS_Task_GetCur() service added (same as OS_Task_GetCur())
  12. OST_WORD
  13. OS_Task_GetCreated() service added


2010, feb, 10 download

  1. 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
  2. Added services for assignement static timers in run-time. New services:
    • OS_Stimer_Alloc
    • OS_Stimer_Found
    • OS_Stimer_Free
  3. 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
  4. OS_Init(): _OS_Dtimers.Next = 0 replaced with _OS_Dtimers.Flags.bNextEnable = 0
  5. Dtimer's functions moved to osa_dtimer.c file
  6. OS_(x)timer_Break services added. (x) = T, S, Q, D
  7. Bug fixed in common OS_DtimersWork: postfix ++ replaced with prefix ++
  8. Now it is possible to optimize code of work with static timers and task timers by speed (default) or by size. New constants:
  9. Bug fixed: qualifier OS_BANK mover after '*' in OS_Dtimers declaration
  10. Bug fixed in OS_Init: variable for cycle counter was formed incorrectly
  11. OS_Task_Create now saves position of new task's descriptor in _OS_temp
  12. Error #21 added (bad qtimer's size); Error #22 added (qtimers not supported with 12-bit PICs)


2009, dec, 19 download

  • Bug fixed: _OS_Return replaced with OS_Yield in service OS_Task_Pause (the return address did not stored on exit task)


2009, dec, 18 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


2009, dec, 10 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


2009, nov, 9 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


2009, nov, 3 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


2009, oct, 29 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


2009, oct, 28 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


2009, oct, 7 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


2009, jul, 22 download

  • Service OS_Task_Define was added for CCS compilers
  • Corrected osacfg.h in "test_speed" (ifndef replaced with ifdef)


2009, jul, 16 download

  • Bug fixed for CCS18: OS_Delay worked incorrectly
  • Added example for MCC18


2009, jul, 07 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)


2009, jul, 01 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.


2009, jun, 25 download

  • OSA ported to mikroC PRO (version 2.15 or grater) for PIC18.
  • Some cosmetic modifications:
    1. OS_RI and OS_DI removed from common function _OS_Csem_Signal, since they are already present in macro OS_Csem_Signal.
    2. Field cTempFSR1 removed from TCB for PICC18.
    3. In common _OS_Task_Create function (in osa.c) added "OS_state = priority" when _OS_Cur_Task points to new task.
    4. _OS_Task_Create removed from osa_picc16.c and osa_picc18.h, since it is identical to common.
    5. Dtimer's functions moved from osa_picc18.c and osa_mcc18.c into osa.c.
    6. Internal services renamed:
      • _OS_GetRetPoint → _OS_RETURN_SAVE
      • _OS_ReturnNoSave → _OS_RETURN_NO_SAVE
    7. Functions _OS_EnterCritical and _OS_LeaveCritical moved from osa_picc18.c and osa_mcc18.c into osa.c


2009, apr, 6 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.


2009, apr, 2 download

  • Fixed bug for MCC18: project did not build under MCC18 when simple messages used.


2009, mar, 21 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


2009, mar, 3 download

  • OSAcfg_Tool bug corrected: enabling critical section had no effect. (Constant name saved incorrectly)


2009, february, 26 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.


2009, january, 22 download

Most services and some constants and types are renamed. New naming scheme is: OS_<object>_<action>_<suffix>, where:

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.)
  1. This modification was made to simplify membering all services and to simplify programming when using context substituting editor.
  2. To view all names replacements see file "osa\service\osa_oldnames.h"
  3. Renaming in OSA:
    • Object names:
      • SMsg → Smsg
      • QMsg → Queue
      • QSMsg → SQueue
      • CSem → Csem
      • BSem → Bsem
      • DTimer → Dtimer
      • STimer → Stimer
    • Constants:
    • Types:
  4. Types of MSG and SMSG now can be changed only througth OS_MSG_TYPE and OS_SMSG_TYPE constants.
  5. Source code was formatted to be most friendly to programmer
  6. 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 error list. This problem is fixed by changing in SAcfg.h OST_MSG→OS_MSG_TYPE and OST_SMSG→OS_SMSG_TYPE.


2009, january, 15 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)


2009, january, 9 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)


2008, december, 27 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:

(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"


2008, december, 6 download

  • Bug fixed: project unabled to built when defined old style constant OS_DTIMER_SIZE.
  • Bug fixed: OS_Dtimer_Get was not defined properly.


2008, november, 6 download

  • All dynamic timers services OS_xxxDTimer renamed to OS_xxxDTimer. Old names are still supported for compability.


2008, october, 25 download

  • All comments are translated in english.

Old versions in russian

en/osa/ref/download/history.txt · Last modified: 07.03.2011 13:05 by osa_chief
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki