NEWS - Noteworthy changes


* Major changes in Chopstx 0.09

  Released 2015-09-10

** New board support: Nitrokey-Start
It is contributed by Mateusz Zalega.

** Thread cancellation
Add new API: chopstx_setcancelstate.


* Major changes in Chopstx 0.08

  Released 2015-07-31

** New board support: ST Nucleo F103
It is contributed by Kenji Rikitake.

** New board support: ST Dongle
It is contributed by Kenji Rikitake.
It's the ST-Link/V2-1 part of ST Nucleo F103.


* Major changes in Chopstx 0.07

  Released 2015-07-15

** New Board macro definitions
Each board-*.h should have BOARD_ID and BOARD_NAME now.
FLASH_PAGE_SIZE and NEUG_ADC_SETTING2_* are deprecated.

** New sys.c (2.1)
Flash memory size is probed at runtime now.  System
service flash pages now include sys_board_id and sys_board_name.


* Major changes in Chopstx 0.06

  Released 2015-07-08

** New file: clk_gpio_init.c
To avoid duplication of code, clock and GPIO initialization code
is now in this file.

** New board support: STM32 Primer2
It is contributed by Kaz Kojima.

** New board support: CQ STARM
The old board which was "published" by CQ Publishing in 2008 is added.


* Major changes in Chopstx 0.05

  Released 2015-04-20, by NIIBE Yutaka

** New function: chopstx_main_init
chopstx_main_init is the function to change the schedule priority of
main thread.  This is useful to enter main loop after initialization
of other threads.

** The use of CHX_PRIO_MAIN
CHX_PRIO_MAIN is deprecated.  Instead, please use the function
chopstx_main_init.

** Cortex-M0 support
Cortex-M0 support has been added.

** New board support: Maple mini
It is contributed by Aidan Thornton.

** New board support: FSM-55 and STM32F0 Discovery
Those boards with STM32F0 (Cortex-M0) are now supported.


* Major changes in Chopstx 0.04

  Released 2014-12-10, by NIIBE Yutaka

** new board.h macros and sys.c in example
In board.h, RCC_APB2ENR_IOP_EN was renamed to RCC_ENR_IOP_EN and
RCC_APB2RSTR_IOP_RST was renamed to RCC_RSTR_IOP_RST.  Example sys.c
was changed accordingly.

** Bug fix of chopstx_wakeup_usec_wait
chopstx_usec_wait_var/chopstx_usec_wait won't be woken up
by chopstx_wakeup_usec_wait.  This is now fixed in 0.04.

** Board support STBee and STBee Mini
The board STBee and STBee Mini are now supported.


* Major changes in Chopstx 0.03

  Released 2013-11-08, by NIIBE Yutaka

** Bug fix of preemption
In the implementation of preemption, there was a bug which might cause
not to schedule proper thread.  This is because the routine preepmt
itself might be interrupted.  This is now fixed in 0.03.


* Major changes in Chopstx 0.02

  Released 2013-11-08, by NIIBE Yutaka

** Bug fix of priority
There was a severe bug about the configuraion of priority setting of
exceptions.  As we don't use any inter-lock between interrupts hander
and timer expiration handler, these priorities should be equal.  If
not, timer expiration handler might interrupt the execution of
interrupts handers.


* Major changes in Chopstx 0.01

  Released 2013-11-03, by NIIBE Yutaka

** Interrupt handling change
There was a bug in 0.00, which caused spurious interrupts.  Every
interrupt event caused two events.  Specifically, after valid
interrupt event (for the caller of chopstx_intr_wait), another
spurious event was always occurred.  This was fixed.

In the design of Chopstx, interrupt handling is done by a thread.
Lower level interrupt handler just accepts interrupt, disabling the
interrupt, and switchs the control to the thread.  It is the thread to
check the cause of interrupt, to process it, and to clear the cause.
Next call to chopstx_intr_wait will enable the interrupt again.

The bug was related to pending interrupt flag.  Pending interrupt flag
for a specific interrupt is set, on return from handler mode if the
cause is still active.  With traditional interrupt handling, lower
level interrupt handler processes it and clears the cause.  Thus,
pending interrupt flag is not set on return.

In Chopstx, pending interrupt flag was always set, because the control
goes from lower level interrupt handler (in handler mode) to a
interrupt handling thread which processes the interrupt.  In 0.01, new
internal routine chx_clr_intr is introduced, and pending interrupt
flag is cleared within chopstx_intr_wait after waked up.

For detail of interrupt operation, see the section B.3.4, Nested
Vectored Interrupt Controller (NVIC), in the ARM v7-M Architecture
Reference Manual.  The subsection, B3.4.1, Theory of operation,
explains how it works.


** gpio_init change
Now, gpi_init support AFIO mapping and another GPIO (GPIO_OTHER)
settings.

Local Variables:
mode: outline
End: