Menu

Commit [r212]  Maximize  Restore  History

Major changes on the R1 codeline that have been pending for a long time.

- Added a bunch of "how-to" examples based on flAVR
- Fixed up the GUI library and built-in control code, added a GUI example (using flAVR, again)
- Ported idle-function support to all current AVR targets
- Got rid of some old examples that were more confusing than helpful
- Moved profiling and sanity tests into the unit-test directory, and refactored to support the unit-test APIs
- unit-test APIs now moved out of the "middleware libraries" section, and now get built into the UT platform directly
- Added thread-state tracking to Thread object. APIs allow a user to see if threads are ready, blocked, stopped, or exit'd.
- Fixed a bunch of instrumentation code that breaks now that g_pstNext is volatile
- Changed stacks in UT code to K_WORD from K_UCHAR (portability issues)
- Fixed logic in semaphore/mutex/event-flag objects to determine when a Yield() is required.
- Previous implementation did not handle priority inheritence properly
- Fixed bug preventing round-robin scheduling from being applied to static threads (those created before the kernel starts)
- Fixed a bug in Thread::Exit() that could hang the kernel in a variety of circumstances
- Fixed a similar bug in Thread::Stop()
- Change to remove pending timer callbacks from threads when Thread::Stop() is called, which could cause trouble.
- Fixed a bug in Timers where erratic behavior could be observed due to the m_ulTimerTolerance flag not being initialized
- Fixed a bug in Round-Robin scheduling where unblocking multiple threads in a given priority level can result in the wrong thread being scheduled.
- New approach ensures that threads get added to the *tail* of the threadlist, not the *head*

Summary:
- Dynamic threading is much more reliable (Stop & Exit behavior)
- Round-robin scheduling is much more reliable
- Timers are more reliable
- Priority inheritence works correctly
- Idle function works on all supported AVRs.

m0slevin 2015-05-28

1 2 3 .. 5 > >> (Page 1 of 5)
changed /branch/release/R1/embedded/build/avr/atmega1284p/gcc/platform.mak
changed /branch/release/R1/embedded/build/avr/atxmega256a3/gcc/platform.mak
changed /branch/release/R1/embedded/docs/refman.pdf
changed /branch/release/R1/embedded/drivers/common/slip_hid/slip_hid.cpp
removed /branch/release/R1/embedded/examples/avr/avr_platform
changed /branch/release/R1/embedded/examples/avr/brickbreak/makefile
added /branch/release/R1/embedded/examples/avr/gui_example
added /branch/release/R1/embedded/examples/avr/gui_example/.map
added /branch/release/R1/embedded/examples/avr/gui_example/main.cpp
added /branch/release/R1/embedded/examples/avr/gui_example/makefile
added /branch/release/R1/embedded/examples/avr/gui_example/obj
changed /branch/release/R1/embedded/examples/avr/lab1_kernel_setup/main.cpp
changed /branch/release/R1/embedded/examples/avr/lab2_idle_function/main.cpp
changed /branch/release/R1/embedded/examples/avr/lab3_round_robin/main.cpp
changed /branch/release/R1/embedded/examples/avr/lab4_semaphores/main.cpp
changed /branch/release/R1/embedded/examples/avr/lab5_mutexes/main.cpp
changed /branch/release/R1/embedded/examples/avr/lab6_timers/main.cpp
changed /branch/release/R1/embedded/examples/avr/lab7_events/main.cpp
changed /branch/release/R1/embedded/examples/avr/lab8_messages/main.cpp
changed /branch/release/R1/embedded/examples/avr/lab9_dynamic_threads/main.cpp
renamed /branch/release/R1/embedded/examples/avr/markade2 -> /branch/release/R1/embedded/examples/avr/brickbreak
removed /branch/release/R1/embedded/examples/avr/my_first_app
removed /branch/release/R1/embedded/examples/avr/timer_accuracy
removed /branch/release/R1/embedded/examples/avr/uoled
/branch/release/R1/embedded/build/avr/atmega1284p/gcc/platform.mak Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/build/avr/atxmega256a3/gcc/platform.mak Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/drivers/common/slip_hid/slip_hid.cpp Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/brickbreak/makefile Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/gui_example/.map Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/gui_example/main.cpp Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/gui_example/makefile Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/lab1_kernel_setup/main.cpp Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/lab2_idle_function/main.cpp Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/lab3_round_robin/main.cpp Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/lab4_semaphores/main.cpp Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/lab5_mutexes/main.cpp Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/lab6_timers/main.cpp Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/lab7_events/main.cpp Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/lab8_messages/main.cpp Diff Switch to side-by-side view
Loading...
/branch/release/R1/embedded/examples/avr/lab9_dynamic_threads/main.cpp Diff Switch to side-by-side view
Loading...
1 2 3 .. 5 > >> (Page 1 of 5)
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.