forked from Qortal/Brooklyn
456 lines
14 KiB
Plaintext
456 lines
14 KiB
Plaintext
NEWS - Noteworthy changes
|
|
|
|
|
|
* Major changes in Chopstx 1.14
|
|
|
|
Released 2019-03-02
|
|
|
|
** Enhancement of driver: USART for STM32
|
|
Now, it supports smartcard communication.
|
|
|
|
|
|
* Major changes in Chopstx 1.13
|
|
|
|
Released 2018-12-19
|
|
|
|
** API fix (redefinition): chopstx_poll
|
|
In old implementations, when chopstx_poll returns by non-timeout
|
|
event, *USEC_P is not updated. Now, it is updated.
|
|
|
|
|
|
* Major changes in Chopstx 1.12
|
|
|
|
Released 2018-11-12
|
|
|
|
** Enhance API of eventflag
|
|
New function eventflag_set_mask is added, so that we can only handle
|
|
specified events. See Gnuk 1.2.12 for an example (while USB Tx is
|
|
busy, the USB thread only accepts EV_TX_FINISHED event, leaving
|
|
other events).
|
|
|
|
** Acknowledge button support for FST-01 and FST-01G
|
|
While FST-01 and FST-01G don't have any button in the original design,
|
|
it may be PA2 when user put a hall sensor or a switch.
|
|
|
|
|
|
* Major changes in Chopstx 1.11
|
|
|
|
Released 2018-10-02
|
|
|
|
** Support calling chopstx_poll with intr->ready==1
|
|
In version <= 1.10, it assumed that all events should be handled after
|
|
chopstx_poll, before calling chopstx_poll again. With having
|
|
chopstx_intr_done, it's OK now that chopstx_poll can be called again
|
|
not examining/handling all poll descriptors, but only parts of them.
|
|
|
|
** Acknowledge button change
|
|
In 1.10, the action was able to be "memorized" by the edge detector.
|
|
Now, the edge detector is disabled by ackbtn_disable, and it is
|
|
enabled by ackbtn_enable. So, the status is cleared correctly.
|
|
|
|
** New board support: FST-01SZ
|
|
It's still under development. Programming-wise, it will be kept same.
|
|
|
|
|
|
* Major changes in Chopstx 1.10
|
|
|
|
Released 2018-09-29
|
|
|
|
** Function chopstx_intr_wait is not deprecated, now
|
|
Once, it was said that it's deprecated, but it's active again
|
|
to match the new function of chopstx_intr_done.
|
|
|
|
** API change: chopstx_poll, chopstx_intr_wait, chopstx_intr_done
|
|
To avoid spurious interrupt, we introduce new function
|
|
chopstx_intr_done, which should be called after interrupt handling.
|
|
|
|
** New driver: Acknowledge button for FST-01SZ
|
|
The use case is waiting user's acknowledge. We use EXTI interrupt
|
|
feature of STM32.
|
|
|
|
|
|
* Major changes in Chopstx 1.9
|
|
|
|
Released 2018-05-09
|
|
|
|
** GD32F103 support
|
|
GD32F103 is an alternative implementation of STM32F103 by Giga Device,
|
|
which can run at 96MHz.
|
|
|
|
** Minor USB driver fix for STM32F103/GD32F103
|
|
BTABLE setting should be done at initialization, not at USB RESET.
|
|
|
|
** Minor SYS driver fix for GD32F103
|
|
flash_protect should check FLASH_CR_OPTWRE.
|
|
|
|
** Minor ADC driver change for GD32F103
|
|
ADC on GD32F103 is another implementation and its behavior is somewhat
|
|
different. It requires waits after enabling. So, we use continuous
|
|
sampling, instead of start and stop for each sample. Still, we
|
|
observe enough noise (> 4.7 bit/byte) for each ADC sampling.
|
|
|
|
|
|
* Major changes in Chopstx 1.8
|
|
|
|
Released 2018-01-19
|
|
|
|
** Minor driver API fix
|
|
In version 1.6, part of mcu/stm32f103.h was moved into mcu/cortex-m.h
|
|
and mcu/stm32.h. Now, mcu/stm32f103.h automatically includes
|
|
mcu/cortex-m.h and mcu/stm32.h, so that it doesn't break existing
|
|
applications.
|
|
|
|
|
|
* Major changes in Chopstx 1.7
|
|
|
|
Released 2017-12-19
|
|
|
|
** Fix: timer wakeup
|
|
Timer expiration had a bug. When it is waken up, the wake up doesn't
|
|
handle as a timer expiration when there are multiple threads on same
|
|
timing of expire. It confuses as if it were forced wakeup.
|
|
|
|
** New driver: USART for STM32
|
|
USART driver for STM32 is added.
|
|
|
|
|
|
* Major changes in Chopstx 1.6
|
|
|
|
Released 2017-11-24
|
|
|
|
** Fix cancellation
|
|
In Chopstx 1.4 and 1.5, cancellation doesn't work for real MCU. This
|
|
is due to the change of chx_sched interface, introduced for GNU/Linux
|
|
emulation. This bug is fixed.
|
|
|
|
** New feature: sleep mode
|
|
New function chopstx_conf_idle is added to support sleep. Note that
|
|
use of sleep by this feature requires careful preparation. For
|
|
example, enabling sleep, a board with no RESET pin cannot be debugged
|
|
by JTAG/SWD. Setting of DBGMCU_CR (0xE0042004) is required beforehand
|
|
(hardware default is zero).
|
|
|
|
** API change: chopstx_poll
|
|
This is a kind of clarification. The third argument is now an array
|
|
of constant pointers. We don't touch the array itself, just use it.
|
|
This allows having the array in read-only memory and can contribute
|
|
less use of RAM.
|
|
|
|
** USB API changes
|
|
INTR_REQ_USB is now defined by usb_lld.h. Enumeration type of
|
|
DEVICE_STATE now has USB_DEVICE_STATE_ prefix.
|
|
|
|
** USB driver change
|
|
USB suspend and wakeup events are supported for STM32F103.
|
|
|
|
|
|
* Major changes in Chopstx 1.5
|
|
|
|
Released 2017-10-10
|
|
|
|
** Stack size definition by stack-def.h
|
|
Stack size of each thread was used to be defined in ldscript.
|
|
While emulation on GNU/Linux doesn't use ldscript, it is better
|
|
to put those definitions in independent header file. Please see
|
|
example-cdc/stack-def.h and example-cdc/sample.ld.
|
|
|
|
** More support for emulation on GNU/Linux
|
|
We have SYS driver for emulation on GNU/Linux. It has flash ROM
|
|
emulation.
|
|
|
|
|
|
* Major changes in Chopstx 1.4
|
|
|
|
Released 2017-08-11
|
|
|
|
** New port: Emulation on GNU/Linux
|
|
Now, user can run Chopstx application on GNU/Linux. Its USB driver is
|
|
by USBIP. Its ADC driver is dummy with random(3).
|
|
|
|
|
|
* Major changes in Chopstx 1.3
|
|
|
|
Released 2017-02-02
|
|
|
|
** New board support: Blue Pill
|
|
It is contributed by Paul Fertser.
|
|
|
|
|
|
* Major changes in Chopstx 1.2
|
|
|
|
Released 2016-10-13
|
|
|
|
** Fix: chopstx_join
|
|
chopstx_join is now cancellation point.
|
|
|
|
|
|
* Major changes in Chopstx 1.1
|
|
|
|
Released 2016-07-01
|
|
|
|
** API change: chopstx_poll
|
|
In version 1.0, chopstx_poll has variable arguments. It found that
|
|
it's challenging for ffi or lower level C implementation, if C
|
|
compiler is new for the specific MCU target. Another example is that
|
|
a program touches FPU registers for varargs, even if no argument is
|
|
float. So, we decided to avoid use of varargs in Chopstx.
|
|
|
|
** API change: chopstx_setpriority
|
|
In version 1.0, chopstx_setpriority does not return value. It is
|
|
changed to return old value of the priority.
|
|
|
|
|
|
* Major changes in Chopstx 1.0
|
|
|
|
Released 2016-06-16
|
|
|
|
** New USB API
|
|
Now, USB driver is included in Chopstx. So, it should be good one.
|
|
It used to be the code which was derived from interrupt driven API
|
|
with callbacks. It's changed to event driven API, so that a user can
|
|
do as wish, beyond the restriction of callbacks.
|
|
|
|
** New board support: FST-01G
|
|
FST-01G is a new revision of original FST-01 with fixed pull-up of
|
|
D+ line.
|
|
|
|
|
|
* Major changes in Chopstx 0.12
|
|
|
|
Released 2016-05-31
|
|
|
|
** Provide drivers of SYS, USB and ADC
|
|
Those were only offered as examples, but now, Chopstx provides drivers
|
|
of SYS, USB, and ADC. Please note that the ADC driver is not for
|
|
general use (it's specific to NeuG to get noise). To use them, enable
|
|
variables in Makefile, like following.
|
|
------------
|
|
CHIP=stm32f103
|
|
USE_ADC = yes
|
|
USE_USB = yes
|
|
USE_SYS = yes
|
|
DEFS = -DUSE_SYS3
|
|
------------
|
|
|
|
** Removal of chopstx_usec_wait_var chopstx_wakeup_usec_wait
|
|
This API was used when we need to wait something with timeout.
|
|
Now, we have better API with chopstx_poll. Please use chopstx_poll
|
|
and chopstx_cond_signal.
|
|
|
|
|
|
* Major changes in Chopstx 0.11
|
|
|
|
Released 2016-05-19
|
|
|
|
** New feature: polling
|
|
New function chopstx_poll is added to watch multiple condition
|
|
variables, threads' exit, or IRQ, simultaneously with timeout.
|
|
|
|
** Change API of eventflag
|
|
The initialization function eventflag_init only has an argument of EV.
|
|
An eventflag can be waited with timeout or can be waited with no
|
|
timeout, as caller like. It is not determined at initialization time
|
|
now. Besides, the eventflag can be waited by any threads. Functions
|
|
to poll eventflag together with other events (cond, join, and IRQ) are
|
|
provided.
|
|
|
|
** Removal of the function chopstx_release_irq
|
|
IRQ is enabled only when a thread is blocked in polling. When it (the
|
|
thread in polling) is canceled, IRQ is disabled.
|
|
|
|
** Removal of the function chopstx_main_init
|
|
It is removed because it's too special. Please use
|
|
chopstx_setpriority instead.
|
|
|
|
** New function: chopstx_setpriority
|
|
This function is not recommended in general. It is only added to
|
|
support the usage when main thread wants to change the schedule
|
|
priority after creating other threads.
|
|
|
|
** Function chopstx_intr_wait is deprecated
|
|
Use of chopstx_poll is recommended.
|
|
|
|
** FS-BB48: Kinetis L MCU
|
|
Support for FS-BB48 board with Kinetis L MCU is added.
|
|
|
|
** No HardFault at context switch on Cortex-M0
|
|
By its design, Chopstx does context switch holding the scheduler lock.
|
|
This is implemented with the feature of BASEPRI on Cortex-M3. Because
|
|
Cortex-M0 doesn't have support of BASEPRI, the context switch (before
|
|
version 0.11) always caused HardFault exception. Since Cortex-M0
|
|
doesn't have complex exception mechism of ICI/IT (which is supported
|
|
on Cortex-M3), it is actually possible to implement the context switch
|
|
in user mode. This is done.
|
|
|
|
** New sys.c (3.0)
|
|
Don't touch NVIC in usb_lld_sys_init.
|
|
|
|
|
|
* Major changes in Chopstx 0.10
|
|
|
|
Released 2015-09-15
|
|
|
|
** Thread cancellation bug fix
|
|
Thread cancellation didn't work well with 0.09 because
|
|
of initial configuration mistake. It's fixed.
|
|
|
|
** Interrupt handler bug fix
|
|
Interrupt handler wasn't unregistered on exit well.
|
|
It's fixed.
|
|
|
|
|
|
* 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:
|