2007-09-21 16:44:36 +00:00
|
|
|
*****************************************************************************
|
|
|
|
*** Directories structure ***
|
|
|
|
*****************************************************************************
|
2007-09-18 12:24:10 +00:00
|
|
|
|
2007-10-03 18:18:58 +00:00
|
|
|
./readme.txt - This file.
|
|
|
|
./license.txt - GPL3 license file.
|
|
|
|
./src/ - ChibiOS/RT portable kernel source files.
|
|
|
|
./src/include/ - ChibiOS/RT include files.
|
2007-10-06 08:58:52 +00:00
|
|
|
./src/lib/ - ChibiOS/RT library code that can be included into
|
|
|
|
user applications but is not part of the core system.
|
|
|
|
The code in this directory is meant to be portable,
|
|
|
|
generic and architecture indipendent.
|
2007-10-03 18:18:58 +00:00
|
|
|
./src/templates/ - ChibiOS/RT non portable source templates, new ports
|
|
|
|
are started by copying the templates into a new
|
|
|
|
directory under ./demos/.
|
|
|
|
./ports/ - Architecture/compiler specific portable files.
|
|
|
|
./demos/ - Demo programs for specific archtectures/boards.
|
|
|
|
./test/ - Test code, used by some demos.
|
|
|
|
./docs/Doxifile - Doxigen project file.
|
|
|
|
./docs/html/index.html - ChibiOS/RT documentation (after running doxigen).
|
|
|
|
The documentation is also available on the project
|
|
|
|
web page: http://chibios.sourceforge.net/
|
2007-09-18 12:24:10 +00:00
|
|
|
|
2008-02-22 15:23:32 +00:00
|
|
|
*****************************************************************************
|
|
|
|
*** Current ports/demos ***
|
|
|
|
*****************************************************************************
|
2007-09-18 12:24:10 +00:00
|
|
|
Current ports under ./demos:
|
|
|
|
|
2007-11-29 09:16:53 +00:00
|
|
|
ARM7-LPC214x-GCC - ChibiOS/RT port for ARM7 LPC2148, the demo targets
|
|
|
|
the Olimex LPC-P2148 board. This port can be easily
|
|
|
|
modified for any processor into the LPC2000 family or
|
|
|
|
other boards. The demo can be compiled using YAGARTO
|
|
|
|
or any other GCC-based ARM toolchain. Full demo.
|
|
|
|
ARM7-LPC214x-GCC-min - Minimal demo for LPC214X.
|
2008-02-19 16:29:25 +00:00
|
|
|
ARM7-AT91SAM7X-GCC - Port for Atmel AT91SAM7X256. The demo program targets
|
|
|
|
the Olimex SAM7-EX256 board.
|
2008-03-13 14:41:17 +00:00
|
|
|
ARMCM3-ST32F103-GCC - ARM Cortex-M3 port, work in progress, not complete
|
|
|
|
yet. The demo will target the Olimex STM32-P103
|
|
|
|
board.
|
2008-03-14 16:08:11 +00:00
|
|
|
AVR-AVRmega128-GCC - Port on AVRmega128. A special thanks to Vladimir for
|
|
|
|
the work done on the AVR port. The demo program
|
|
|
|
targets the Olimex AVR-MT-128 mini terminal board.
|
2008-03-06 11:38:11 +00:00
|
|
|
AVR-AT90CANx-GCC - Port on AVR AT90CAN128, not tested on hardware yet.
|
2008-03-14 16:08:11 +00:00
|
|
|
Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
|
|
|
|
MinGW version.
|
2007-09-21 16:44:36 +00:00
|
|
|
|
2008-02-22 11:09:02 +00:00
|
|
|
*****************************************************************************
|
|
|
|
*** Plans ***
|
|
|
|
*****************************************************************************
|
|
|
|
|
2008-02-27 15:53:49 +00:00
|
|
|
- Look into importing *or* implementing a TCP/IP stack and a File System.
|
|
|
|
- Evaluate other architectures for a possible ChibiOS/RT port. An important
|
2008-03-08 07:26:36 +00:00
|
|
|
selection parameter will be the availability of FOSS toolchains. Currently
|
|
|
|
we are evaluating the Cortex-M3 and the MSP430.
|
2008-02-27 15:53:49 +00:00
|
|
|
- Creation of a reduced ChibiOS/RT kernel targeted to lesser 8bit micros and
|
|
|
|
educational purposes, the name will probably be ChibiOS/SX, we are still
|
|
|
|
discussing it.
|
2008-02-22 11:09:02 +00:00
|
|
|
|
2007-09-21 16:44:36 +00:00
|
|
|
*****************************************************************************
|
|
|
|
*** Releases ***
|
|
|
|
*****************************************************************************
|
|
|
|
|
2008-03-17 15:43:03 +00:00
|
|
|
*** 0.6.2 ***
|
2008-03-18 16:31:24 +00:00
|
|
|
- Fixed a minor problem in the ARM7 port, the extctx structure definition was
|
|
|
|
missing one field, the effect was to allocate stacks 4 bytes shorter than
|
|
|
|
the declared size.
|
|
|
|
- More work on the ARM-CM3 port but it is still not complete.
|
2008-03-17 15:43:03 +00:00
|
|
|
|
2008-03-11 14:32:04 +00:00
|
|
|
*** 0.6.1 ***
|
|
|
|
- Removed some redundant checks from the scheduler code: improved threads
|
2008-03-12 15:23:10 +00:00
|
|
|
flyback time, reduced interrupts service time.
|
|
|
|
- Nice scheduler speed improvement obtained by removing the 2nd parameter to
|
2008-03-12 11:24:24 +00:00
|
|
|
the chSchReadyI() API and manually assigning the message value only where
|
|
|
|
is really needed (very few points in the code).
|
2008-03-12 21:22:42 +00:00
|
|
|
- More space savings and speed improvements obtained by removing the
|
2008-03-12 21:05:13 +00:00
|
|
|
-fno-strict-aliasing option from the makefiles, now the kernel compiles
|
2008-03-12 21:22:42 +00:00
|
|
|
without any warning even without this option.
|
2008-03-11 14:32:04 +00:00
|
|
|
- Removed the -falign-functions=16 option from the AT91SAM7X demo makefiles,
|
|
|
|
the Atmel chip does not require it, the option is still present on the
|
2008-03-12 21:22:42 +00:00
|
|
|
LPC21xx demos. This saves significant program space.
|
2008-03-15 08:49:15 +00:00
|
|
|
- Started work on ARM Cortex-M3 architecture. The target chip is the STM32F103
|
2008-03-13 14:41:17 +00:00
|
|
|
on a Olimex STM32-P103 board.
|
2008-03-14 16:08:11 +00:00
|
|
|
- Added a threads state diagram to the documentation.
|
2008-03-13 14:41:17 +00:00
|
|
|
- Various fixes to the doxigen documentation.
|
2008-03-11 14:32:04 +00:00
|
|
|
|
2008-03-05 10:59:11 +00:00
|
|
|
*** 0.6.0 ***
|
2008-03-03 15:52:55 +00:00
|
|
|
- Code refactory, all the old sized-integer definitions like LONG32, UWORD16
|
|
|
|
etc are now replaced by the proper definitions provided by the compiler
|
2008-03-05 10:59:11 +00:00
|
|
|
into stdint.h.
|
|
|
|
- Code refactory, the previous system types style using a t_ in front of the
|
|
|
|
name has been replaced with the standard trailing _t. The system now uses
|
|
|
|
the size_t type defined into stddef.h. Some type names were modified in
|
|
|
|
order to not match commonly used type names.
|
|
|
|
- The above changes have an impact on some API prototypes but we can't help
|
2008-03-06 16:05:42 +00:00
|
|
|
it, the changes were required because the type names were a concern for
|
2008-03-05 10:59:11 +00:00
|
|
|
some users.
|
|
|
|
- Implemented a serial driver in the AVR port.
|
2008-03-07 15:24:00 +00:00
|
|
|
- Implemented a simple HD44780 LCD driver into the AVRmega128 demo.
|
2008-03-06 11:38:11 +00:00
|
|
|
- Reworked the AVR AT90CAN128 port to share the common AVR code.
|
2008-03-05 15:56:12 +00:00
|
|
|
- Modified the test suite to be compatible with 8 bit micros.
|
2008-03-04 10:33:38 +00:00
|
|
|
- MSVC demo dropped, it is still possible to use the MinGW demo as simulator
|
|
|
|
in Win32.
|
2008-03-04 16:08:22 +00:00
|
|
|
- Fixed a minor error in sam7x_serial.h and lpc214x_serial.h.
|
2008-03-05 15:56:12 +00:00
|
|
|
- The kernel is *unchanged* compared to version 0.5.3 except for the type
|
|
|
|
names but the change is important enough to make this a recommended update.
|
2008-03-03 15:52:55 +00:00
|
|
|
|
2008-02-22 11:09:02 +00:00
|
|
|
*** 0.5.5 ***
|
2008-03-01 09:54:08 +00:00
|
|
|
- Added an AVRmega128 port. The previous AT90CANx port is still present but
|
|
|
|
it will be redone after the AVRmega128 port is complete because it will
|
2008-03-01 09:55:14 +00:00
|
|
|
share most of it. The demo is very simple, it will be expanded in next
|
|
|
|
releases.
|
2008-02-22 11:09:02 +00:00
|
|
|
- Reorganized the code of the two ARM7 ports, now all the common ARM7 code
|
2008-02-27 15:53:49 +00:00
|
|
|
is in ./ports/ARM7. This will make maintenance and new ARM7 ports much much
|
2008-02-22 11:09:02 +00:00
|
|
|
easier.
|
2008-02-22 15:23:32 +00:00
|
|
|
- Simplified the directory structure under ./ports.
|
|
|
|
- Added to the readme a section with our future plans/ideas.
|
2008-02-27 15:53:49 +00:00
|
|
|
- The kernel is *unchanged* compared to version 0.5.3, just the new port and
|
|
|
|
the new demo were added.
|
2008-02-22 11:09:02 +00:00
|
|
|
|
2008-02-06 14:41:28 +00:00
|
|
|
*** 0.5.4 ***
|
2008-02-19 16:29:25 +00:00
|
|
|
- Port for Atmel AT91SAM7X256 introduced, the port should be useable also on
|
|
|
|
SAM7S and SAM7XC but no tests were performed. Other SAM7 processors should
|
|
|
|
also be useable with limited changes.
|
|
|
|
The demo currently just performs basic operations, will be enhanced in next
|
2008-02-21 13:31:30 +00:00
|
|
|
ChibiOS/RT releases, see the demo readme.txt file.
|
2008-02-21 15:10:49 +00:00
|
|
|
- Small fix to the thumb mode IRQ code on the LPC214x port, removed some extra
|
|
|
|
code.
|
2008-02-27 15:53:49 +00:00
|
|
|
- The kernel is *unchanged* compared to version 0.5.3, just the new port and
|
|
|
|
the new demo were added.
|
2008-02-06 14:41:28 +00:00
|
|
|
|
2008-01-23 14:50:42 +00:00
|
|
|
*** 0.5.3 ***
|
2008-01-25 10:07:18 +00:00
|
|
|
- Removed the chMsgSendTimeout() API, it was conceptually flawed because,
|
2008-01-23 14:50:42 +00:00
|
|
|
after sending a message, the sender *has* to wait for the answer or
|
|
|
|
the next sender in queue would receive it instead (the messages server has
|
|
|
|
no way to know that the sender is gone because a timeout).
|
|
|
|
A workaround would make the messages subsystem much heavier and this is
|
2008-01-25 10:11:55 +00:00
|
|
|
not acceptable.
|
2008-01-23 14:50:42 +00:00
|
|
|
- Removed the test case for chMsgSendTimeout() from the test suite.
|
|
|
|
- Space saved by reorganizing the timeout code into a single scheduler
|
2008-01-25 10:43:05 +00:00
|
|
|
function chSchGoSleepTimeoutS().
|
2008-01-25 10:07:18 +00:00
|
|
|
- Space optimizations in the semaphores code.
|
2008-01-23 14:50:42 +00:00
|
|
|
- The API chThdSleepUntil() become a macro saving some more code space.
|
2008-01-25 10:07:18 +00:00
|
|
|
- Because all the above changes the kernel code (ARM) is over 700 bytes
|
2008-01-23 14:50:42 +00:00
|
|
|
smaller.
|
|
|
|
|
2008-01-10 13:52:44 +00:00
|
|
|
*** 0.5.2 ***
|
2008-01-17 09:34:46 +00:00
|
|
|
- Fixed a small problem in the main header file ch.h.
|
2008-01-10 13:52:44 +00:00
|
|
|
- Small reordering in the fields of the Thread structure in order to optimize
|
|
|
|
the space when messages are not used.
|
|
|
|
|
2008-01-01 17:45:25 +00:00
|
|
|
*** 0.5.1 ***
|
2008-01-07 14:06:46 +00:00
|
|
|
- NEW: Priority enqueing for messages can be optionally enabled by specifying
|
2008-01-08 13:41:04 +00:00
|
|
|
the P_MSGBYPRIO option when creating a message server thread.
|
2008-01-07 14:06:46 +00:00
|
|
|
This change allows the implementation of a priority ceiling protocol into
|
|
|
|
message servers threads. Threads serving messages by priority and threads
|
|
|
|
serving messages in FIFO orded can exist at the same time in the system.
|
2008-01-07 14:16:06 +00:00
|
|
|
This feature can be enabled or disabled by toggling the option
|
|
|
|
CH_USE_MESSAGES_PRIORITY into the chconf.h file (disabled by default, old
|
|
|
|
behavior).
|
2008-01-07 14:06:46 +00:00
|
|
|
Note: This option brings a small overhead when sending a message regardless
|
|
|
|
if in FIFO or priority order, if you dont need priority ordering for your
|
2008-02-25 16:29:25 +00:00
|
|
|
messages it is better to keep the feature disabled in chconf.h.
|
2008-01-01 17:45:25 +00:00
|
|
|
- Added to the ARM demos load scripts the capability to load code in RAM
|
|
|
|
instead flash, the function must be marked as:
|
|
|
|
__attribute__((section(".ramtext")))
|
2008-01-07 10:49:59 +00:00
|
|
|
The option -mlong-calls should be specified in the makefile too or the
|
|
|
|
function declared with the "long-call" attribute.
|
|
|
|
- Fixed the MSVC demo project files.
|
|
|
|
- Fixed some syntax incompatibilites between GCC and MSVC into chmtx.c.
|
2008-01-01 17:45:25 +00:00
|
|
|
|
2007-12-16 19:01:30 +00:00
|
|
|
*** 0.5.0 ***
|
2007-12-19 11:23:56 +00:00
|
|
|
- NEW: Mutexes, the new mechanism provides a complete implementation of the
|
|
|
|
"priority inheritance" algorithm as a tool for work around the priority
|
|
|
|
inversion problem.
|
2007-12-17 14:57:44 +00:00
|
|
|
The Mutexes are not meant to replace the Semaphores that still are the best
|
|
|
|
synchronization mechanism between interrupt handlers and high level
|
|
|
|
code, something that Mutexes cannot do.
|
2007-12-16 19:01:30 +00:00
|
|
|
Soon an article will be added to the wiki describing pro and cons of the
|
|
|
|
various mechanisms and the correct use cases.
|
|
|
|
- RT Semaphores subsystem removed, the Mutexes implements a better solution
|
|
|
|
for the same problem.
|
2007-12-22 11:34:39 +00:00
|
|
|
- Fixed a bug in the round robin scheduling mode, see the bug tracker for
|
|
|
|
details and a fix for previous versions.
|
2007-12-22 12:43:37 +00:00
|
|
|
- More performance improvements to the scheduler. The ready list insertion
|
|
|
|
sequence is now reversed, it is scanned starting from the highest priority
|
|
|
|
end. This has an important side effect into the chSchWakeupS() that makes
|
|
|
|
most of the ready list insertions happen in constant time (extraction is
|
|
|
|
done always in constant time).
|
2007-12-22 11:34:39 +00:00
|
|
|
The worst case is always proportional to the number of threads in the ready
|
|
|
|
list but the normal case is much more often constant than linear. See the
|
|
|
|
new benchmarks added to the test suite.
|
2007-12-21 15:27:59 +00:00
|
|
|
- Added mutexes test cases and new benchmarks to the test suite.
|
2007-12-17 14:57:44 +00:00
|
|
|
- Modified the test suite in order to have each test case to have the same
|
|
|
|
alignment enforced on functions. This is done to reduce MAM/Cache alignment
|
|
|
|
effects on the measurement.
|
|
|
|
- IRQ entry/exit code is now encapsulated into two new macros, see chcore.h
|
|
|
|
for details.
|
2007-12-18 10:46:23 +00:00
|
|
|
- All the asm code previously in chcore2.s is now inline asm code in chcore.c
|
2007-12-18 14:00:01 +00:00
|
|
|
(ARM port), chcore2.s removed.
|
2007-12-18 09:41:28 +00:00
|
|
|
- Moved all the board specific definitions/code into two new files: board.c
|
|
|
|
and board.h. Moved all the files no more board-dependent under ports/
|
|
|
|
(ARM port).
|
2007-12-18 14:00:01 +00:00
|
|
|
- Improved the kernel performance in THUMB mode by better exploiting MAM
|
2007-12-18 16:26:42 +00:00
|
|
|
locality in some critical functions. The context switch benchmark shows
|
|
|
|
5% improved speed.
|
2007-12-16 19:01:30 +00:00
|
|
|
|
2007-12-09 09:16:33 +00:00
|
|
|
*** 0.4.5 ***
|
|
|
|
- Moved the serial IRQ handlers and VIC vectors initialization inside the
|
|
|
|
serial drivers. Now the serial-related code is all inside the driver.
|
|
|
|
- Moved all the other interrupt handlers from chcore2.s into chcore.c as
|
|
|
|
inline asm code. The interrupt code now is faster because one less call
|
|
|
|
level.
|
2007-12-11 12:01:24 +00:00
|
|
|
- Fixed a minor problem in chSysHalt() now it disables FIQ too and makes sure
|
|
|
|
to keep the processor in the state it had when it was halted.
|
|
|
|
Note: This is not a kernel bug but something specific with the ARM port, the
|
|
|
|
other ports are not affected.
|
2007-12-13 14:05:37 +00:00
|
|
|
- Fixed the macro chThdResumeI(), it had a regression.
|
2007-12-09 09:16:33 +00:00
|
|
|
|
2007-12-03 14:54:05 +00:00
|
|
|
*** 0.4.4 ***
|
2007-12-08 12:05:22 +00:00
|
|
|
- Fixed a very important bug in the preemption ARM code, important enough to
|
|
|
|
make this update *mandatory*.
|
|
|
|
Note: This is not a kernel bug but something specific with the ARM port, the
|
|
|
|
other ports are not affected.
|
2007-12-07 13:29:14 +00:00
|
|
|
- Fixed a nasty bug in the pure THUMB mode threads trampoline code (chcore2.s,
|
|
|
|
threadstart), it failed on THUMB threads returning with a "bx" instruction.
|
|
|
|
The bug did not affect ARM mode or THUMB with interworking mode.
|
2007-12-08 12:05:22 +00:00
|
|
|
Note: This is not a kernel bug but something specific with the ARM port, the
|
|
|
|
other ports are not affected.
|
2007-12-07 13:29:14 +00:00
|
|
|
- Fixed a bug in chIQGetTimeout(), interrupts were not re-enabled when exiting
|
|
|
|
the function because a timeout. The problem affected that API only.
|
2007-12-07 15:56:04 +00:00
|
|
|
- Fixed a potential problem in chSysInit(), it should not affect any past
|
|
|
|
application.
|
2007-12-03 14:54:05 +00:00
|
|
|
- Added a chDbgAssert() API to the debug subsystem.
|
|
|
|
- Cleaned up the kernel source code using chDbgAssert() instead of a lot of
|
|
|
|
"#ifdef CH_USE_DEBUG", it is much more readable now.
|
|
|
|
- Now the threads working area is filled with a 0x55 when in debug mode, this
|
|
|
|
will make easier to track stack usage using a JTAG probe.
|
2007-12-03 16:19:47 +00:00
|
|
|
- Added an I/O Queues benchmark to the test suite.
|
2007-12-04 14:48:41 +00:00
|
|
|
- Removed the chSchTimerHandlerI() routine from chschd.c and moved it into
|
|
|
|
chinit.c renaming it chSysTimerHandlerI() because it is not part of the
|
|
|
|
scheduler.
|
2007-12-03 14:54:05 +00:00
|
|
|
|
2007-11-26 16:00:25 +00:00
|
|
|
*** 0.4.3 ***
|
|
|
|
- Size optimization in the events code, now the chEvtWait() reuses the
|
|
|
|
chEvtWaitTimeout() code if it is enabled.
|
|
|
|
- Size optimization in the semaphores code, now the chSemWaitTimeout() just
|
2007-11-30 09:00:50 +00:00
|
|
|
invokes the chSemWaitTimeoutS() inside its system mutex zone. Same thing
|
|
|
|
done with chSemWait() and chSemWaitS().
|
|
|
|
- Size optimization in the queues code.
|
2007-12-01 10:29:09 +00:00
|
|
|
- Modified the return type of chSemWait() and chSemWaitS() from void to t_msg,
|
|
|
|
this allows to understand if the semaphore was signaled or reset without
|
|
|
|
have to access the Thread structure.
|
2007-11-29 09:16:53 +00:00
|
|
|
- Added a threads create/exit/wait benchmark to the test suite, the system
|
|
|
|
is capable of 81712 threads started/terminated per second on the reference
|
|
|
|
LPC2148 board. The figure is inclusive of two context switch operations
|
|
|
|
for each thread.
|
2007-11-27 16:02:12 +00:00
|
|
|
- Minor improvement in the LPC214x serial driver, unneeded events were
|
|
|
|
generated in some rare cases.
|
2007-11-26 16:00:25 +00:00
|
|
|
- Fixed a chSysInit() documentation error.
|
2007-11-29 16:31:44 +00:00
|
|
|
- Fixed a chEvtWaitTimeout() documentation error.
|
2007-11-27 16:02:12 +00:00
|
|
|
- Added a new debug switch: CH_USE_TRACE, previously the trace functionality
|
|
|
|
was associated to the CH_USE_DEBUG switch.
|
2007-11-26 16:00:25 +00:00
|
|
|
|
2007-11-21 16:42:13 +00:00
|
|
|
*** 0.4.2 ***
|
2007-11-24 09:50:09 +00:00
|
|
|
- Added a minimal ARM7-LPC demo, you can use this one as template in order to
|
2007-11-22 15:24:50 +00:00
|
|
|
create your application. It is easier to add subsystems back to the small
|
|
|
|
demo than remove stuff from the large one.
|
2007-11-22 11:29:17 +00:00
|
|
|
- Introduced support for "pure" THUMB mode, it is activated when all the
|
|
|
|
source files are compiled in THUMB mode, the option -mthumb-interworking is
|
2007-11-22 15:24:50 +00:00
|
|
|
not used in this scenario and this greatly improves both code size and
|
|
|
|
speed.
|
2007-11-21 16:42:13 +00:00
|
|
|
It is recommended to either use ARM mode or THUMB mode and not mix them
|
2007-11-23 16:09:11 +00:00
|
|
|
unless you know exactly what you are doing. Mixing modes is still supported
|
|
|
|
anyway.
|
2007-11-24 09:50:09 +00:00
|
|
|
- More optimizations in the scheduler, updated the performance spreadsheet.
|
2007-11-22 15:24:50 +00:00
|
|
|
- Fixed a problem with the thread working area declarations, the alignment to
|
|
|
|
4 bytes boundary was not enforced. Now it is defined a new macro
|
|
|
|
WorkingArea(name, length) that takes care of both the allocation and the
|
|
|
|
alignment.
|
|
|
|
Example:
|
|
|
|
static WorkingArea(waThread1, 32);
|
|
|
|
It is expanded as:
|
|
|
|
ULONG32 waThread1[UserStackSpace(32) >> 2];
|
|
|
|
Now the demos use the new declaration style.
|
2007-11-23 13:53:53 +00:00
|
|
|
- Fixed a small problem in sleep functions introduced in 0.4.1.
|
2007-11-21 16:42:13 +00:00
|
|
|
|
2007-11-16 13:14:30 +00:00
|
|
|
*** 0.4.1 ***
|
2007-11-18 09:45:45 +00:00
|
|
|
- Modified the initialization code in order to have a dedicated idle thread in
|
|
|
|
the system, now the main() function behaves like a normal thread after
|
|
|
|
executing chSysInit() and can use all the ChibiOS/RT APIs (it was required
|
|
|
|
to run the idle loop in previous versions).
|
|
|
|
Now it is also possible to use ChibiOS/RT with a single main() thread and
|
2007-11-19 11:09:33 +00:00
|
|
|
just use it for the I/O capabilities, Virtual Timers and events. Now you
|
2007-11-18 09:52:31 +00:00
|
|
|
don't have to use multiple threads if you don't really need to.
|
2007-11-16 13:14:30 +00:00
|
|
|
- Added a spreadsheet in the documentation that describes the advantages
|
|
|
|
and disadvantages of the various optimization options (both GCC options and
|
2007-11-19 11:09:33 +00:00
|
|
|
ChibiOS/RT options), very interesting read IMO.
|
2007-11-16 13:14:30 +00:00
|
|
|
- The GCC option +falign-functions=16 is now default in the Makefile, it is
|
|
|
|
required because of the MAM unit into the LPC chips, without this option
|
|
|
|
the code performance is less predictable and can change of some % points
|
2007-11-16 16:15:47 +00:00
|
|
|
depending on how the code is aligned in the flash memory, unpredictability
|
2007-11-16 13:14:30 +00:00
|
|
|
is bad for a RTOS. This option however increases the code size slightly
|
2007-11-16 16:15:47 +00:00
|
|
|
because of the alignment gaps.
|
|
|
|
- Fine tuning in the scheduler code for improved performance, deeper
|
2007-11-19 11:09:33 +00:00
|
|
|
inlining and other small changes, about 5% better scheduler performance.
|
2007-11-16 16:15:47 +00:00
|
|
|
- Increased the default system-mode stack size from 128 to 256 bytes because
|
2007-11-19 11:09:33 +00:00
|
|
|
some optimizations and the THUMB mode seem to eat more stack space.
|
2007-11-16 16:15:47 +00:00
|
|
|
- Included a Makefile in the LPC2148 demo that builds in THUMB mode.
|
|
|
|
- Const-ified a parameter in the chEvtWait() and chEvtWaitTimeout() APIs.
|
2007-11-19 11:09:33 +00:00
|
|
|
- Removed the CPU register clearing on thread start, it was not really useful,
|
|
|
|
it is better to maximize performance instead.
|
|
|
|
- Cleaned up the ARM port code. Now it is easier to understand.
|
|
|
|
- Cleaned up the LPC2148 demo in main.c, it is now well documented and
|
|
|
|
explains everything, I assumed too much stuff to be "obvious".
|
2007-11-16 13:14:30 +00:00
|
|
|
|
2007-11-12 15:02:23 +00:00
|
|
|
*** 0.4.0 ***
|
2007-11-13 16:38:23 +00:00
|
|
|
- NEW, added a benchmark functionality to the test suite. The benchmark
|
|
|
|
measures the kernel throughput as messages per second and context switches
|
|
|
|
per second. The benchmark will be useful for fine tuning the compiler
|
|
|
|
options and the kernel itself.
|
|
|
|
- NEW, implemented a debug subsystem, it supports debug messages and a context
|
2007-11-12 15:02:23 +00:00
|
|
|
switch circular trace buffer. The debug code can be enabled/disabled by
|
|
|
|
using the CH_USE_DEBUG in chconf.h.
|
|
|
|
The trace buffer is meant to be fetched and decoded by an external tool
|
|
|
|
(coming soon, it can be accessed using JTAG in the meanwhile).
|
2007-11-14 16:32:41 +00:00
|
|
|
- Added new API chThdGetPriority() as a macro.
|
2007-11-12 15:02:23 +00:00
|
|
|
- Implemented panic messages when CH_USE_DEBUG is enabled.
|
|
|
|
- Added a thread identifier field to the Thread structure, it is used only
|
|
|
|
for debug.
|
2007-11-13 16:38:23 +00:00
|
|
|
- Global variable stime modified as volatile.
|
|
|
|
- API chSysGetTime() reimplemented as a macro.
|
|
|
|
- Fixed a regression with the CH_CURRP_REGISTER_CACHE option.
|
|
|
|
- Fixed a problem in the LPC2148 interrupt handling code, a spurious
|
|
|
|
interrupts fix recommended on the NXP data sheet proved to be a very bad
|
|
|
|
idea and not about real spurious interrupts also...
|
2007-11-12 15:02:23 +00:00
|
|
|
- Fixed an harmless warning message in buzzer.c.
|
|
|
|
|
2007-10-30 10:46:57 +00:00
|
|
|
*** 0.3.6 ***
|
2007-11-02 15:34:52 +00:00
|
|
|
- Added SSP (SPI1) and ext.interrupts definitions to the lpc214x.h file.
|
2007-11-01 11:56:10 +00:00
|
|
|
- Added SSP driver for the LPC2148.
|
2007-11-02 15:34:52 +00:00
|
|
|
- Added experimental MMC/SD block driver to the LPC2148 demo in order to
|
2007-11-03 16:25:52 +00:00
|
|
|
support file systems. The driver features also events generation on card
|
|
|
|
insert/remove, hot plugging supported.
|
2007-10-30 16:32:55 +00:00
|
|
|
- Added missing chThdSuspend() declararion in threads.h.
|
2007-10-30 10:46:57 +00:00
|
|
|
|
2007-10-19 08:25:15 +00:00
|
|
|
*** 0.3.5 ***
|
|
|
|
- Space optimization in events code.
|
2007-10-19 13:00:24 +00:00
|
|
|
- Changed the behavior of chEvtWaitTimeout() when the timeout parameter is
|
|
|
|
set to zero, now it is consistent with all the other syscalls that have a
|
|
|
|
timeout option.
|
2007-10-23 18:43:39 +00:00
|
|
|
- Reorganized all the kernel inline definitions into a single file (inline.h).
|
|
|
|
- Fixed a minor problem in the interrupt initialization code for the LPC214x
|
2007-10-24 15:05:24 +00:00
|
|
|
demo, regrouped the VIC-specific code into vic.c/vic.h.
|
2007-10-23 19:50:46 +00:00
|
|
|
- Fixed a bug into the LPC2148 serial driver (limited to the serial port 2).
|
2007-11-13 16:38:23 +00:00
|
|
|
- Implemented HW transmit FIFO preloading in the LPC2148 serial driver in
|
2007-10-24 12:12:43 +00:00
|
|
|
order to minimize the number of interrupts generated, it is possible to
|
|
|
|
disable the feature and return to the old code which is a bit smaller, see
|
|
|
|
the configuration parameters in ./ARM7-LPC214x/GCC/lpc214x_serial.h.
|
2007-10-27 07:37:32 +00:00
|
|
|
- Some more work done on the AVR port, it is almost complete but not tested
|
|
|
|
yet because my JTAG probe broke...
|
2007-10-19 08:25:15 +00:00
|
|
|
|
2007-10-14 07:07:54 +00:00
|
|
|
*** 0.3.4 ***
|
|
|
|
- Fixed a problem in chVTSetI().
|
2007-10-15 14:52:56 +00:00
|
|
|
- New API, chVTIsArmedI(), it is a macro in delta.h.
|
|
|
|
- New API, chThdResumeI(), it is a macro in threads.h. This function is just
|
|
|
|
an alias for chSchReadyI() but makes the code more readable.
|
|
|
|
- New API, chThdSuspend(). New switch CH_USE_SUSPEND added to chconf.h.
|
|
|
|
|
2007-10-13 06:59:54 +00:00
|
|
|
*** 0.3.3 ***
|
|
|
|
- Modified the chVTSetI(), now for the "time" parameter can have value zero
|
2007-10-13 11:04:26 +00:00
|
|
|
with meaning "infinite". This allows all the APIs with timeout parameters
|
|
|
|
to be invoked with no timeout.
|
2007-10-13 06:59:54 +00:00
|
|
|
- Fixes in the documentation.
|
|
|
|
- Renamed some APIs in the "Sch" group to have an S suffix instead of I.
|
|
|
|
|
2007-10-04 17:40:45 +00:00
|
|
|
*** 0.3.2 ***
|
2007-10-06 09:53:07 +00:00
|
|
|
- Modified the chSysInit() to give the idle thread absolute priority, the
|
|
|
|
priority is then lowered to the minimum value into the chSysPause(). This
|
|
|
|
is done in order to ensure that the initializations performed into the
|
2007-10-15 14:52:56 +00:00
|
|
|
main() procedure are finished before any thread starts.
|
2007-10-06 09:53:07 +00:00
|
|
|
- Added chThdSetPriority() new API.
|
2007-10-13 06:59:54 +00:00
|
|
|
- Added a generic events generator timer modulee to the library code.
|
2007-10-06 17:01:14 +00:00
|
|
|
- Modified the ARM7-LPC214x-GCC demo to show the use of the event timer.
|
2007-10-06 08:58:52 +00:00
|
|
|
- Added the "#ifdef __cplusplus" stuff to the header files.
|
|
|
|
- Removed an obsolete definition in ./src/templates/chtypes.h.
|
2007-10-04 17:40:45 +00:00
|
|
|
|
2007-10-01 17:42:47 +00:00
|
|
|
*** 0.3.1 ***
|
2007-10-03 18:18:58 +00:00
|
|
|
- Test program added to the demos. Telnet the MinGW and MSVS demos and type
|
|
|
|
"test" at the "ch>" prompt. On the LPC214x demo the test is activated by
|
2007-10-03 18:19:49 +00:00
|
|
|
pressing both the board buttons. The test performs tests on the ChibiOS/RT
|
|
|
|
functionalities.
|
2007-10-03 17:14:03 +00:00
|
|
|
The test code is also a good example of APIs usage and ChibiOS/RT behavior.
|
|
|
|
- Fixed bug in chEvtWaitTimeout(), the timeout code performed an useless
|
|
|
|
dequeue operation.
|
|
|
|
- Fixed a bug in chSemWaitTimeoutS() and chSemWaitTimeout(), the semaphore
|
|
|
|
counter was not atomically updated on a timeout condition.
|
|
|
|
- Fixed bug on RT semaphores, the priority queuing was broken.
|
|
|
|
- Fixed a bug in the MinGW demo, the chThdExit() code was not correctly
|
|
|
|
reported to the thread waiting in chThdWait().
|
|
|
|
- Fixed a function declaration in semaphores.h.
|
2007-10-02 16:52:18 +00:00
|
|
|
- Lists code moved into chlists.c from various other places optimized and
|
|
|
|
reorganized.
|
2007-10-01 17:42:47 +00:00
|
|
|
- The list of the threads waiting in chThdWait() is now a single link list,
|
|
|
|
this saves some space.
|
|
|
|
- Cleaned the template files code, the files contained some obsolete
|
|
|
|
declarations.
|
2007-10-03 17:14:03 +00:00
|
|
|
- Code optimization in chSemWaitTimeoutS(), chSemWaitTimeout() and
|
|
|
|
chSemSignalWait().
|
2007-10-01 17:42:47 +00:00
|
|
|
- Code optimization in chEvtSend().
|
2007-10-03 17:14:03 +00:00
|
|
|
- Code optimization in chVTDoTickI().
|
2007-10-01 17:42:47 +00:00
|
|
|
- Added a Semaphore pointer to the Thread structure, this allows to know on
|
|
|
|
which semaphore a thread is waiting on. It takes no space because it is
|
|
|
|
located in the union inside the Thread structure. This also allowed a minor
|
|
|
|
optimization inside chSemWaitTimeout() and chSemWaitTimeoutS().
|
2007-10-01 17:44:01 +00:00
|
|
|
- Changed the priority type to unsigned in order to make it compatible
|
|
|
|
with a byte value, this is very important for 8 bits architectures.
|
2007-10-03 17:14:03 +00:00
|
|
|
- Modified the MinGW and MSVS demos to use 1ms ticks instead of 10ms as
|
|
|
|
before.
|
2007-10-01 17:42:47 +00:00
|
|
|
|
2007-09-28 18:42:04 +00:00
|
|
|
*** 0.3.0 ***
|
|
|
|
- ChibiOS/RT goes beta.
|
|
|
|
- Diet for the threads code, some simple APIs become macros.
|
|
|
|
- Thread Local Storage implemented as a single API: chThdLS().
|
|
|
|
The API simply returns a pointer into the thread working area, see the
|
|
|
|
documentation on the web site.
|
|
|
|
- Moved some documentation and images from the web site into the Doxigen
|
|
|
|
generated HTMLs.
|
|
|
|
|
2007-09-25 18:41:39 +00:00
|
|
|
*** 0.2.1 ***
|
|
|
|
- Optimizations in the RT semaphores subsystem. The support for this
|
|
|
|
subsystem should still be considered experimental and further changes may
|
|
|
|
happen in future versions.
|
|
|
|
- Bug fix in the virtual timers handling code, now the timers can be re-armed
|
|
|
|
from within the callback code in order to create periodic virtual timers.
|
|
|
|
- Modified the t_prio type in the demos to be 32bits wide instead of 16bits,
|
|
|
|
this results in a better code in critical sections of the kernel.
|
|
|
|
|
2007-09-22 14:10:02 +00:00
|
|
|
*** 0.2.0 ***
|
|
|
|
- Introduced support for ARM in thumb mode.
|
2007-09-22 14:12:10 +00:00
|
|
|
- Optimized context switching when thumb-interworking is not required, one
|
|
|
|
less instruction.
|
2007-09-22 14:10:02 +00:00
|
|
|
- Minor fixes to the ARM demo.
|
|
|
|
|
2007-09-21 16:44:36 +00:00
|
|
|
*** 0.1.1 ***
|
|
|
|
- Some fixes into the documentation
|
2007-11-22 15:24:50 +00:00
|
|
|
- Renamed the makefiles to Makefile, upper case M.
|
2007-09-21 16:44:36 +00:00
|
|
|
|
|
|
|
*** 0.1.0 ***
|
2007-09-25 18:41:39 +00:00
|
|
|
- First alpha release
|