📄 history.txt
字号:
The previous definitions prevented V2.3.0 operating if the iom323.h
header file was included in portmacro.s90.
Changes between V2.2.0 and V2.3.0 - Released June 19, 2004
+ Added an AVR port that uses the IAR compiler.
+ Explicit use of 'signed' qualifier on plain char types.
+ Modified the Open Watcom project files to use 'signed' as the
default char type.
+ Changed odd calculation of initial pxTopOfStack value when
portSTACK_GROWTH < 0.
+ Added inline qualifier to context switch functions within task.c.
Ports that do not support the (non ANSI) inline keyword have the
inline #define'd away in their respective portmacro.h files.
Changes between V2.1.1 and V2.2.0 - Released May 18, 2004
+ Added Cygnal 8051 port.
+ PCLATU and PCLATH are now saved as part of the PIC18 context. This
allows function pointers to be used within tasks. Thanks to Javier
Espeche for the enhancement.
+ Minor changes to demo application files to reduce stack usage.
+ Minor changes to prevent compiler warnings when compiling the new port.
Changes between V2.1.0 and V2.1.1 - Released March 12, 2004
+ Bug fix - pxCurrentTCB is now initialised before the call to
prvInitialiseTaskLists(). Previously pxCurrentTCB could be accessed
while null during the initialisation sequence. Thanks to Giuseppe
Franco for the correction.
Changes between V2.0.0 and V2.1.0 - Released Feb 29, 2004
V2.1.0 has significant reworks that greatly reduce the amount of time
the kernel has interrupts disabled. The first section of modifications
listed here must be taken into account by users. The second section
are related to the kernel implementation and as such are transparent.
Section1 :
+ The typedef portTickType has been introduced. All delay times should
now use a variable of type portTickType in place of the unsigned long's
used previously. API function prototypes have been updated
appropriately.
+ The configuration macro USE_16_BIT_TICKS has been introduced. If set
to 1 portTickType is defined as an unsigned short. If set to 0
portTickType is defined as an unsigned long. See the configuration
section of the API documentation for more details.
+ The configuration macro INCLUDE_vTaskSuspendAll is now obsolete.
+ vTaskResumeAll() has been renamed cTaskResumeAll() as it now returns a
value (see the API documentation).
+ ulTaskGetTickCount() has been renamed xTaskGetTickCount() as the type
it returns now depends on the USE_16_BIT_TICKS definition.
+ cQueueReceive() must now >never< be used from within an ISR. Use the new
cQueueReceiveFromISR() function instead.
Section 2:
+ A mechanism has been introduced that allows a queue to be accessed by
a task and ISR simultaneously.
+ A "pending ready" queue has been introduced that enables interrupts to
be processed when the scheduler is suspended.
+ The list implementation has been improved to provide faster item
removal.
+ The scheduler now makes use of the scheduler suspend mechanism in places
where previously interrupts were disabled.
Changes between V1.2.6 and V2.0.0 - Released Jan 31, 2004
+ Introduced new API functions:
vTaskPriorityGet ()
vTaskPrioritySet ()
vTaskSuspend ()
vTaskResume ()
vTaskSuspendAll ()
vTaskResumeAll ()
+ Added conditional compilation options that allow the components of the
kernel that are unused by an application to be excluded from the build.
See the Configuration section on the WEB site for more information (on
the API pages). The macros have been added to each portmacro.h file (
sometimes called prtmacro.h).
+ Rearranged tasks.c.
+ Added demo application file dynamic.c.
+ Updated the PC demo application to make use of dynamic.c.
+ Updated the documentation contained in the kernel header files.
+ Creating a task now causes a context switch if the task being created
has a higher priority than the calling task - assuming the kernel is
running.
+ vTaskDelete() now only causes a context switch if the calling task is
the task being deleted.
Changes between V1.2.5 and V1.2.6 - Released December 31, 2003
Barring the change to the interrupt vector (PIC port) these are minor
enhancements.
+ The interrupt vector used for the PIC master ISR has been changed from
0x18 to 0x08 - where it should have always been. The incorrect address
still works but probably executes a number of NOP's before getting to the
ISR.
+ Changed the baud rate used by the AVR demo application to 38400. This
has an error percentage of less than one percent with an 8MHz clock.
+ Raised the priority of the Rx task in demo\full\comtest.c. This only
affects the Flashlite and PC ports. This was done to prevent the Rx
buffer becoming full.
+ Reverted the Flashlite COM port driver back so it does not use the DMA.
The DMA appears to miss characters under stress. The Borland Flashlite
port was also calculating a register value incorrectly resulting in the
wrong DMA source address being used. The same code worked fine when
compiling with Open Watcom. Other minor enhancements were made to the
interrupt handling.
+ Modified the PIC serial Rx ISR to check for and clear overrun errors.
Overrun errors seem to prevent any further characters being received.
+ The PIC demo projects now have some optimisation switched on.
Changes between V1.2.4 and V1.2.5
Small fix made to the PIC specific port.c file described below.
+ Introduced portGLOBAL_INTERRUPT_FLAG definition to test the global
interrupt flag setting. Using the two bits defined within
portINITAL_INTERRUPT_STATE was causing the w register to get clobbered
before the test was performed.
Changes between V1.2.3 and V1.2.4
V1.2.4 contains a release version of the PIC18 port.
An optional exception has been included with the GPL. See the licensing
section of www.FreeRTOS.org for details.
+ The function xPortInitMinimal() has been renamed to
xSerialPortInitMinimal() and the function xPortInit() has been renamed
to xSerialPortInit().
+ The function sSerialPutChar() has been renamed cSerialPutChar() and
the function return type chaned to portCHAR.
+ The integer and flop tasks now include calls to tskYIELD(), allowing
them to be used with the cooperative scheduler.
+ All the demo applications now use the integer and comtest tasks when the
cooperative scheduler is being used. Previously they were only used with
the preemptive scheduler.
+ Minor changes made to operation of minimal versions of comtest.c and
integer.c.
+ The ATMega port definition of portCPU_CLOSK_HZ definition changed to
8MHz base 10, previously it base 16.
Changes between V1.2.2a and V1.2.3
The only change of any significance is to the license, which has changed
from the Open Software License to the GNU GPL.
The zip file also contains a pre-release version of the PIC18 port. This
has not yet completed testing and as such does not constitute part of the
V1.2.3 release. It is still however covered by the GNU GPL.
There are minor source code changes to accommodate the PIC C compiler.
These mainly involve more explicit casting.
+ sTaskCreate() has been modified slightly to make use of the
portSTACK_GROWTH macro. This is required for the PIC port where the
stack grows in the opposite direction to the other existing ports.
+ prvCheckTasksWaitingTermination() has been modified slightly to bring
the decrementing of usCurrentNumberOfTasks within the critical section,
where it should have been since the creation of an eight bit port.
Changes between V1.2.2 and V1.2.2a
The makefile and buildcoff.bat files included with the AVR demo application
have been modified for use with the September 2003 build of WinAVR. No
source files have changed.
Changes between V1.2.1 and V1.2.2
There are only minor changes here to allow the PC and Flashlite 186 ports
to use the Borland V4.52 compiler, as supplied with the Flashlite 186
development kit.
+ Introduced a BCC directory under source\portable. This contains all the
files specific to the Borland compiler port.
+ Corrected the macro naming of portMS_PER_TICK to portTICKS_PER_MS.
+ Modified comtest.c to increase the rate at which the string is
transmitted and received on the serial port. The Flashlite 186 demo
app baud rate has also been increased.
+ The values of the constants used in both integer.c files have been
increased to force the Borland compiler to use 32 bit values. The
Borland optimiser placed the previous values in 16 bit registers, and in
So doing invalidated the test.
Changes between V1.2.0 and V1.2.1
This version includes some minor changes to the list implementation aimed
at improving the context switch time - with is now approximately 10% faster.
Changes include the removal of some null pointer assignment checks. These
were redundant where the scheduler uses the list functions, but means any
user application choosing to use the same list functions must now check
that no NULL pointers are passed as a parameter.
The Flashlite 186 serial port driver has also been modified to use a DMA
channel for transmissions. The serial driver is fully functional but still
under development. Flashlite users may prefer to use V1.2.0 for now.
Details:
+ Changed the baud rate for the ATMega323 serial test from 19200 to 57600.
+ Use vSerialPutString() instead of single character puts in
Demo\Full\Comtest.c. This allows the use of the flashlite DMA serial
driver. Also the check variable only stops incrementing after two
consecutive failures.
+ semtest.c creates four tasks, two of which operate at the idle priority.
The tasks that operate at the idle priority now use a lower expected
count than those running at a higher priority. This prevents the low
priority tasks from signalling an error because they have not been
scheduled enough time for each of them to count the shared variable to
the higher original value.
+ The flashlite 186 serial driver now uses a DMA channel for transmissions.
+ Removed the volatile modifier from the list function parameters. This was
only ever included to prevent compiler warnings. Now warnings are
removed by casting parameters where the calls are made.
+ prvListGetOwnerOfNextEntry() and prvListGetOwnerOfHeadEntry() have been
removed from list.c and added as macros in list.h.
+ usNumberOfItems has been added to the list structure. This removes the
need for a pointer comparison when checking if a list is empty, and so
is slightly faster.
+ Removed the NULL check in vListRemove(). This makes the call faster but
necessitates any application code utilising the list implementation to
ensure NULL pointers are not passed.
+ Renamed portTICKS_PER_MS definition to portMS_PER_TICK (milli seconds
per tick). This is what it always should have been.
Changes between V1.01 and V1.2.0
The majority of these changes were made to accommodate the 8bit AVR port.
The scheduler workings have not changed, but some of the data types used
have been made more friendly to an eight bit environment.
Details:
+ Changed the version numbering format.
+ Added AVR port.
+ Split the directory demo\common into demo\common\minimal and
demo\common\full. The files in the full directory are for systems with
a display (currently PC and Flashlite 186 demo's). The files in the
minimal directory are for systems with limited RAM and no display
(currently MegaAVR).
+ Minor changes to demo application function prototypes to make more use
of 8bit data types.
+ Within the scheduler itself the following functions have slightly
modified declarations to make use of 8bit data types where possible:
xQueueCreate(),
sQueueReceive(),
sQUeueReceive(),
usQueueMessageWaiting(),
sQueueSendFromISR(),
sSemaphoreTake(),
sSemaphoreGive(),
sSemaphoreGiveFromISR(),
sTaskCreate(),
sTaskMoveFromEventList().
Where the return type has changed the function name has also changed in
accordance with the naming convention. For example
usQueueMessageWaiting() has become ucQueueMessageWaiting().
+ The definition tskMAX_PRIORITIES has been moved from task.h to
portmacro.h and renamed portMAX_PRIORITIES. This allows different
ports to allocate a different maximum number of priorities.
+ By default the trace facility is off, previously USE_TRACE_FACILITY
was defined.
+ comtest.c now uses a psuedo random delay between sends. This allows for
better testing as the interrupts do not arrive at regular intervals.
+ Minor change to the Flashlite serial port driver. The driver is written
to demonstrate the scheduler and is not written to be efficient.
Changes between V1.00 and V1.01
These changes improve the ports. The scheduler itself has not changed.
Improved context switch mechanism used when performing a context
switch from an ISR (both the tick ISR and the serial comms ISR's within
the demo application). The new mechanism is faster and uses less stack.
The assembler file portasm.asm has been replaced by a header file
portasm.h. This includes a few assembler macro definitions.
All saving and restoring of registers onto/off of the stack is now handled
by the compiler. This means the initial stack setup for a task has to
mimic the stack used by the compiler, which is different for debug and
release builds.
Slightly changed the operation of the demo application, details below.
Details:
+ portSWITCH_CONTEXT() replaced by vPortFirstContext().
+ pxPortInitialiseStack() modified to replicate the stack used by the
compiler.
+ portasm.asm file removed.
+ portasm.h introduced. This contains macro definitions for
portSWITCH_CONTEXT() and portFIRST_CONTEXT().
+ Context switch from ISR now uses the compiler generated interrupt
mechanism. This is done simply by calling portSWITCH_CONTEXT and leaving
the save/restore to compiler generated code.
+ Calls to taskYIELD() during ISR's have been replaced by calling the
simpler and faster portSWITCH_CONTEXT().
+ The Flashlite 186 port now uses 186 instruction set (used to use 80x86
instructions only).
+ The blocking queue tasks within the demo application did not operate
quite as described. This has been corrected.
+ The priority of the comtest Rx task within the demo application has been
lowered. Received characters are now processed (read from the queue) at
the idle priority, allowing low priority tasks to run evenly at times of
a high communications overhead.
+ Prevent the call to kbhit() in main.c for debug builds as the debugger
seems to have problems stepping over the call. This if for the PC port
only.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -