forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
455 lines
14 KiB
455 lines
14 KiB
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:
|
|
|