资源说明:Mirror of the ChibiOS/RT SVN Repo (stable and trunk branches only)
***************************************************************************** *** Files Organization *** ***************************************************************************** --{root} - ChibiOS/RT directory. +--readme.txt - This file. +--documentation.html - Shortcut to the web documentation page. +--todo.txt - Current plan (development/unstable versions only). +--license.txt - GPL license text. +--exception.txt - GPL exception text (stable releases only). +--boards/ - Board support files. +--demos/ - Demo projects. +--docs/ - Documentation. | +--html/ - Local HTML documentation (after rebuild). | +--reports/ - Test reports. | +--src/ - Documentation source files (required for rebuild). | +--rsc/ - Documentation resource files (required for rebuild). | +--Doxyfile - Doxygen project file (required for rebuild). | +--index.html - Local documentation access (after rebuild). +--ext/ - External libraries, not part of ChibiOS/RT. +--os/ - ChibiOS/RT files. | +--hal/ - Hardware Abstraction Layer. | | +--include/ - HAL high level headers. | | +--src/ - HAL high level source. | | +--platforms/ - HAL low level drivers implementations. | | | +--AT91SAM7/ - Drivers for AT91SAM7 platform. | | | +--AVR/ - Drivers for AVR platform. | | | +--LPC11Uxx/ - Drivers for LPC11Uxx platform. | | | +--LPC11xx/ - Drivers for LPC11xx platform. | | | +--LPC13xx/ - Drivers for LPC13xx platform. | | | +--LPC214x/ - Drivers for LPC214x platform. | | | +--MSP430/ - Drivers for MSP430 platform. | | | +--SPC56x/ - Drivers for SPC56x/MPC563xx platforms. | | | +--STM32/ - Drivers for STM32 platform (common). | | | +--STM32F0xx/- Drivers for STM32F0xx platform. | | | +--STM32F1xx/- Drivers for STM32F1xx platform. | | | +--STM32F4xx/- Drivers for STM32F4xx/STM32F2xx platforms. | | | +--STM32L1xx/- Drivers for STM32L1xx platform. | | | +--STM8L/ - Drivers for STM8L platform. | | | +--STM8S/ - Drivers for STM8S platform. | | | +--Posix/ - Drivers for x86 Linux/OSX simulator platform. | | | +--Win32/ - Drivers for x86 Win32 simulator platform. | | +--templates/ - Driver template files. | | +--meta/ - Driver meta templates. | +--ports/ - Port files for the various architectures. | | +--GCC/ - Ports for the GCC compiler. | | | +--ARM/ - Port files for ARM7 and ARM9 architectures. | | | +--ARMCMx/ - Port files for ARMCMx architectures (ARMv6/7-M). | | | +--PPC/ - Port files for PowerPC architecture. | | | +--AVR/ - Port files for AVR architecture. | | | +--MSP430/ - Port files for MSP430 architecture. | | | +--SIMIA32/ - Port files for SIMIA32 simulator architecture. | | +--IAR/ - Ports for the IAR compiler. | | | +--ARMCMx/ - Port files for ARMCMx architectures (ARMv6/7-M). | | | +--STM8/ - Port files for STM8 architecture. | | +--RVCT/ - Ports for the Keil RVCT compiler. | | | +--ARMCMx/ - Port files for ARMCMx architectures (ARMv6/7-M). | | +--cosmic/ - Ports for the Cosmic compiler. | | | +--STM8/ - Port files for STM8 architecture. | | +--RC/ - Ports for the Raisonance compiler. | | +--STM8/ - Port files for STM8 architecture. | +--kernel/ - Kernel portable files. | | +--include/ - Kernel headers. | | +--src/ - Kernel source. | | +--templates/ - Kernel port template files. | +--various/ - Various portable support files. +--test/ - Kernel test suite source code. | +--coverage/ - Code coverage project. +--testhal/ - HAL integration test demos. | +--LPC11xx/ - LPC11xx HAL demos. | +--LPC13xx/ - LPC11xx HAL demos. | +--STM32F1xx/ - STM32F1xx HAL demos. | +--STM32F4xx/ - STM32F4xx HAL demos (valid for STM32F2xx too). | +--STM32L1xx/ - STM32L1xx HAL demos. | +--STM8S/ - STM8S HAL demos. +--tools - Various tools. +--eclipse - Eclipse enhancements. +--gencfg - Configurations generator tool. ***************************************************************************** *** Releases *** ***************************************************************************** *** 2.5.1 *** - FIX: Fixed missing ; in testmbox.c (bug 3585979)(backported to 2.4.3). - FIX: Fixed STM32F4xx: Wrong CAN1 SCE interrupt number definition (bug 3581571). - FIX: Fixed STM32_P407: implement mmc_lld_is_card_inserted (bug 3581929) (backported to 2.4.3). - FIX: Fixed double chSysInit() call in MSP430F1611 demo (bug 3581304) (backported to 2.2.10 and 2.4.3). - FIX: Fixed patch for various demos (bug 3579734). - FIX: Fixed bug in abstract file interface (bug 3579660)(backported to 2.2.10 and 2.4.3). - FIX: Fixed wrong type for UART config registers (bug 3579434). - FIX: Fixed various typos and wrong limits in the STM32F4/F2 HAL driver (bug 3578944)(backported to 2.4.3). - FIX: Fixed ARM CMx crt0.c fails at low optimization levels (bug 3578927) (backported to 2.4.3). - FIX: Fixed compilation issue in chregistry.c (bug 3576776). - FIX: Fixed compilation issue in syscalls.c (bug 3576771)(backported to 2.4.3). - FIX: Fixed Typos in STM32F0xx EXT driver (bug 3576193). - FIX: Fixed STM32F10X_CL: Wrong CAN1 interrupt number definitions (bug 3575766). - FIX: Fixed superfluous pack #defines cause nasty warning (bug 3575662) (backported to 2.4.3). - FIX: Fixed mac.c won't compile due to misplaced declarations (bug 3575657) (backported to 2.4.3). - FIX: Fixed STM32F4 ADC prescaler incorrectly initialized (bug 3575297) (backported to 2.4.3). - FIX: Fixed RCC_APB2ENR_IOPEEN undeclared on STM32F10X_LD_VL devices (bug 3575098)(backported to 2.4.3). - FIX: Fixed misplaced declarations in lwip_bindings sys_arch.c (bug 3571053) (backported to 2.4.3). - FIX: Fixed double definition of sd1fel and sd2fel breaks Posix simulator (bug 3570532). - FIX: Fixed Ethernet PHY power down scheme prevents using LAN8720A (bug 3570335). - FIX: Fixed FatFS won't compile with _FS_REENTRANT enabled (bug 3570135) (backported to 2.4.3). - FIX: Fixed mmc_spi.c won't compile due to misplaced declaration (bug 3570035)(backported to 2.4.3). - FIX: Fixed problem in STM32F1xx USB driver after revision 4598 (bug 3569374). - FIX: Fixed GPIO glitch during PAL initialization (bug 3569347)(backported to 2.4.3). - FIX: Fixed FatFS timestamp incorrect (bug 3568626). - FIX: Fixed Data available event not generated in serial_usb driver (bug 3567992). - FIX: Fixed STM32F1x rtc_lld_init glitches rtc on hard reset (bug 3567597) (backported to 2.4.3). - FIX: Fixed STM8L, cosmic compiler: c_lreg not saved (bug 3566342)(backported to 2.2.10 and 2.4.3). - NEW: AT91SAM7A3 basic support. - NEW: Unified the STM32F4xx and STM32F2xx platform code. The STM32F2xx now is only supported as an STM32F4xx variant and not tested separately. - NEW: Updated STM32F1, F2, F4, L1 ADC drivers to allow HW triggering. - NEW: Added a new option STM32_ETH1_CHANGE_PHY_STATE to the STM32 MAC driver, this change is connected to bug 3570335. - NEW: Modified the CAN drivers to use the new event flags mechanism, the previous flags handling has been removed. - NEW: Modified serial and serial_usb drivers to use the new event flags mechanism, the previous flags handling in BaseAsynchronousChannel has been removed. - NEW: Improved the kernel events subsystem, now event sources can associate source-specific flags to the listener, the flags can then be retrieved using the new APIs chEvtGetAndClearFlags() and chEvtGetAndClearFlagsI(). Some old APIs have been renamed to increase consistency of the module. - NEW: Added VLE support to the Power Architecture GCC port. - NEW: Reorganized the Power Architecture GCC port along the lines of the ARMCMx port, now it can support multiple core types. - NEW: Updated the Power Architecture rules.mk file to put object and listing files into a ./build directory like ARM ports already do. *** 2.5.0 *** - FIX: Fixed anomaly in USB enumeration (bug 3565325)(backported to 2.4.3). - FIX: Fixed problem with lwIP statistics (bug 3564134)(backported to 2.4.3). - FIX: Fixed packed structures macros not functional in IAR and RVCT port (bug 3561279)(backported to 2.4.3 and 2.2.10). - FIX: Fixed Problem in FatFs demos related to LFN (bug 3560980)(backported to 2.4.3 and 2.2.10). - FIX: Fixed problem in STM32 DMA1 stream1 IRQ handler (bug 3538468) (backported to 2.4.2). - FIX: Fixed TIM8 not working in STM32 GPT driver (bug 3536523)( - FIX: Fixed wrong priority assigned to TIM8 in STM32 ICU driver (bug 3536950) (backported to 2.4.2). - FIX: Fixed TIM8 not working in STM32 GPT driver (bug 3536523)(backported to 2.4.2). - FIX: Fixed timer overflow not working in STM32 ICU driver for TIM1/TIM8 (bug 3536522)(backported to 2.4.2). - FIX: Fixed wrong DMA channels on USART2 in STM32F10X_MD_VL devices (bug 3536070)(backported to 2.4.2). - FIX: Fixed issue with DMA channel init in STM32 ADC and SPI drivers (bug 3535938)(backported to 2.2.10 and 2.4.2). - FIX: Fixed issue debugging mmc_spi (bug 3535887)(trunk only). - FIX: Fixed unreliable PHY initialization (bug 3534819)(backported to 2.4.2). - FIX: Fixed wrong ADC callback buffer pointer in ADC driver (bug 3534767) (backported to 2.2.10 and 2.4.2). - FIX: Fixed STM32F2 RTC subseconds (bug 3533414)(trunk only). - FIX: Fixed problem with arm-v6m and state checker (bug 3532591)(backported to 2.4.2). - FIX: Fixed wrong MAC divider setting in STM32 MAC driver (bug 3531290) (backported to 2.4.2). - FIX: Fixed wrong MCO1 divider in STM32F2/F4 HAL (bug 3531289)(backported to 2.4.2). - FIX: Fixed missing "break" in AVR PAL driver (bug 3530924)(backported to 2.4.2). - FIX: Fixed timeout related race condition in STM32 I2C driver (bug 3530043) (backported to 2.4.2). - FIX: Fixed wrong macro check in STM32 MAC driver (bug 3527179)(backported to 2.4.2). - FIX: Fixed error in STM32L-Discovery board.h file (bug 3526918)(backported to 2.4.2). - FIX: Fixed inconsistent LPCxxx Internal RC oscillator names (bug 3524138) (backported to 2.2.10 and 2.4.1). - FIX: Fixed wrong frequency limit checks vs VDD in STM32F2xx HAL (bug 3524094) (backported to 2.4.1). - FIX: Fixed STM32 I2C1 wrong alternate TX DMA setting (bug 3524088) (backported to 2.4.1). - FIX: Fixed system state check problem related to FatFS (bug 3523769). - FIX: Fixed three testhal builds fail (bug 3523322)(backported to 2.4.1). - FIX: Fixed MAC driver functions with invalid name (bug 3522808)(backported to 2.2.10 and 2.4.1). - FIX: Fixed code coverage crashes with Linux/gcc-4.4.5 (bug 3522301) (backported to 2.4.1). - FIX: Fixed macro dmaWaitCompletion() fails to compile in STM32 HAL (bug 3519202)(backported to 2.4.1). - FIX: Fixed ARM addresses generated in vectors table (bug 3519037)(backported to 2.2.10 and 2.4.1). - FIX: Fixed missing serial driver functionality for SAM7S64, SAM7S128 and SAM7S512 (bug 3517648)(backported to 2.2.10 and 2.4.1). - FIX: Fixed a few more spelling fixes (bug 3515531)(backported to 2.4.1). - FIX: Fixed spurious ) char in STM32 serial_lld.h (bug 3514138)(backported to 2.2.10 and 2.4.1). - FIX: Fixed problem with FPU initialization in GCC Cortex-M4 port (bug 3513897)(backported to 2.4.1). - FIX: Spelling fixes (bug 3510812)(backported to 2.4.1). - FIX: Fixed STM32 ICUD8 not functional because wrong initialization (bug 3508758)(backported to 2.4.1). - FIX: Fixed chMBFetchI does not decrement mb_fullsem (bug 3504450)(backported to 2.2.9 and 2.4.1). - FIX: Fixed STM32 PLLI2S initialization error (bug 3503490)(backported to 2.4.1). - FIX: Fixed USART3 not working on STM32F2/F4 UART driver (bug 3496981) (backported to 2.4.1). - FIX: Fixed stack misalignment on Posix-MacOSX (bug 3495487)(backported to 2.4.1). - FIX: Fixed STM8S HSI clock initialization error (bug 3489727)(backported to 2.2.9 and 2.4.1). - FIX: Fixed MMC over SPI driver performs an unnecessary SPI read (bug 3486930)(backported to 2.2.9 and 2.4.1). - FIX: Fixed Realtime counter initialization in STM32 HALs (bug 3485500) (backported to 2.4.1). - FIX: Fixed PPC port broken when CH_DBG_SYSTEM_STATE_CHECK is activated (bug 3485667)(backported to 2.4.1). - FIX: Fixed missing PLL3 check in STM32F107 HAL (bug 3485278)(backported to 2.4.1). - FIX: Fixed ADC maximum frequency limit in STM32F2/F4 ADC drivers (bug 3484947)(backported to 2.4.1). - FIX: Fixed various minor documentation errors (bug 3484942)(backported to 2.4.1). - NEW: Added Eclipse project files to most demos. The project are setup to have paths relative to a variable named CHIBIOS that must point to the ChibiOS/RT installation path. The variable must be defined under Window->Preferences->General->Workspace->Linked_Resources and must contain a path without the trailing slash character. - NEW: Added memory signature record to the registry in order to simplify the implementation of ad-hoc debuggers. - NEW: Small andjustment in chcore.h files under ./os/ports/GCC required by a difference in GCC 4.7.x. - NEW: Added another STM32F4-Discovery demo using the on-board MEMS, SPI and PWM. Removed MEMS handling from the old demo because code size limits on non-free compilers. - NEW: Added configuration wizard plugin under ./tools/eclipse/plugins. This first version is able to configure the board files for STM32F0xx, STM32F4xx and STM32L1xx. - NEW: Added USART6 support to the STM32 UARTv1 driver, contributed by Erik van der Zalm. - NEW: Added demo for Arduino Mega, contributed by Fabio Utzig. - NEW: Added support for ATmega1280, contributed by Fabio Utzig. - NEW: Added I2C driver for AVR, contributed by Fabio Utzig. - NEW: Added FatFs demo for the Olimex STM32-P107 board. - NEW: Added support for the Olimex STM32-E407 board. Added an integrated demo including USB-CDC, lwIP with web server, FatFs and shell, all running together. - NEW: Added an experimental and unsupported STM8 port for the IAR compiler, contributed by "king2". - NEW: Updated STM8 header files to latest versions from ST. - NEW: Reorganized the STM32 EXT driver to have a sub-platform specific part containing all the ISR related code, this has been necessary because the significant differences among the various sub-families. - NEW: Validated CAN driver on STM32F2/F4 (backported to 2.4.2). - NEW: USB implementation for STM32F105/F107/2xx/F4xx devices. - NEW: Improved SerialUSB driver using the new queued mode, much smaller than the previous driver. - NEW: Improved USB driver model supporting also queues for endpoint I/O, packet mode removed. - NEW: Added an application-defined field to I/O queues (a void pointer). - NEW: Added board files for Maple Mini STM32F103, contributed by Wagner Sartori Junior. - NEW: Added SSP1 capability to the LPC13xx SPI driver. - NEW: Updated vendor headers for LPC11xx and LPC13xx, the new headers support several new devices. - NEW: Demo for STM32F0-Discovery board. - NEW: Initial support for STM32F0xx devices, added a specific ADC driver. Validated EXT, GPT, ICU, PAL, PWM, Serial, SPI, UART drivers. - NEW: Added a common ancestor class to the SDC and MMC_SPI drivers. This allows to share code and definitions. - NEW: Modified the SDC driver to implement the new block devices abstract interface. - NEW: Added two new functions to the MMC_SPI driver: mmcSync() and mmcGetInfo(). Also implemented the new block devices abstract interface. Moved the configuration parameters from mmcObjectInit() to the configuration structure saving some RAM space. Updated demos. - NEW: Added an abstract interface for block devices in the HAL. This abstraction layer is meant to unify the access protocol to the SDC and MMC_SPI (and potentially others) device drivers. - NEW: Added an abstract interface for serial devices in the HAL. This interface is meant to replace the equivalent class already present in the kernel. access macros are similar except for the prefix, "chn" instead of "chIO". - NEW: Updated the MSP port to work with the latest MSPGCC compiler (4.6.3 LTS 20120406 unpatched), now the old MSPGCC 3.2.3 is no more supported (backported to 2.4.1). - NEW: EXT driver improved, now it is possible to reprogram channels at runtime without necessarily specifying a new configuration. TODO: Update AT91SAM7 EXT driver. - NEW: Integrated FatFS 0.9, now the FatFS integration files are centralized under ./os/various/fatfs_bindings and shared among all demos. The FatFS file ffconf.h is now application-specific like all the other configuration files. - NEW: Added an new option CORTEX_PRIGROUP_INIT to the Cortex-Mx ports in order to make priority organization configurable, the default is to assign all the available priority bits to preemption priority with no sub-priorities. - NEW: Added a new function chPoolLoadArray() to the Memory Pools subsystem, it allows to load an entire array element's into a pool with a single operation. - NEW: Addes support for .S patch in the GCC ARM ports, by Ayman El-Khashab. - NEW: Added a switch to the STM32F4 Makefile files in order to enable or disable the FPU support in a single place. - NEW: Added float support (optional) to chprintf(), by Fabio Utzig. - NEW: Added overflow handling in the ICU driver (contributed by Xo). - NEW: Updated debug plugin 1.0.8 (backported to 2.4.0). - NEW: Added more accurate UBRR calculation in AVR serial driver (backported to 2.4.0). - NEW: Revision of the round-robin scheduling, now threads do not lose their time slice when preempted. Each thread has its own time slices counter. TODO: Seek optimizations. - NEW: Modified the Virtual Timers management, now the callback is invoked not in lock mode. This change reduces the interrupt jitter caused by multiple timers used at same time. - NEW: Added board files and demo for Olimex LPC-P1343 (contributed by Johnny Halfmoon). - NEW: Added handling of input 2 to the STM32 ICU driver (contributed by Fabio). - NEW: STM32 Ethernet driver completed. Added STM32F107 and STM32F407 lwIP demos (backported to 2.4.1). - NEW: lwIP related code is not centralized into a single place, no need to duplicate the code in each application or demo (backported to 2.4.1). - CHANGE: Added two new methods to the BaseSequentialStream interface: chSequentialStreamPut() and chSequentialStreamGet(). - CHANGE: Removed the chioch.h header from the kernel, now channels interface is exported by the HAL. Removed functions chPutWouldBlock() and chGetWouldBlock(). - CHANGE: Removed macro chMsgGetS(), chMsgGet() is still available. - CHANGE: chprintf() now takes a BaseSequentialStream as parameter instead of a BaseChannel making it more generic. - CHANGE: Now the shell requires a BaseSequentialStream instead of a BaseChannel for communications making it more generic. - CHANGE: Kernel memory pools now do not check the alignment of the inserted objects, it is responsibility of the application to insert properly aligned objects. - CHANGE: The PORT_INT_REQUIRED_STACK parameter for the Cortex-Mx ports has been increased to 32 from 16 because the stack frame sizes are increased when compiling with optimizations disabled, which is common during debugging. In order to save RAM trim back this value when compiling with optimizations enabled (backported to 2.4.1). - CHANGE: Renamed Ethernet driver in AT91 HAL ETHD1 (backported to 2.4.1). - CHANGE: Macros icuGetWidthI() and icuGetPeriodI() renamed to icuGetWidth() and icuGetPeriod(). - Various documentation fixes and improvements. *** 2.3.5 *** - FIX: Fixed RTC compile problem on STM32F103 (bug 3468445). - FIX: Fixed PWM with TIM1 and TIM8 broken in STM32 HAL (bug 3458947). - FIX: Fixed SYSCFG clock not started in STM32L1/F4 HALs (bug 3449139). - FIX: Fixed wrong definitions in STM32L-Discovery board file (bug 3449076). - OPT: Improved the exception exit code in the GCC Cortex-Mx ports. - NEW: Added a DMA stress test application for the STM32F4 in order to assess robustness of the whole HAL. - NEW: Added a Time Measurement driver to the HAL, this generic driver uses the realtime counters abstracted in the HAL driver. - NEW: Improved the STM32F1xx HAL driver, it now has the same features and configuration options of the newer STM32s. - NEW: MMC over SPI driver improved to handle high capacity cards, by Matthias Blaicher. - NEW: Added PVD support to the HAL of all STM32s, by Barthess. - NEW: Added to the HAL driver the handling of an abstract realtime free running counter, added the capability to all the STM32 HALs. - NEW: Modified ARM and ARMCMx build rules to allow parallel build. Now the log outputs one dummy compilation command in order to allow paths discovery by Eclipse. - NEW: Added an utility module to access LIS302DL MEMS using a SPI. - NEW: Updated STM32F2xx support by inheriting the work done on the STM32F4xx, the whole thing is untested because lack of hardware. - NEW: Files nvic.c and nvic.h moved under ./os/ports/common/ARMCMx, removed the duplicated instances under the GCC, IAR and Keil ports. Function names prefixes changed from "NVIC" to "nvic" because style conventions. - NEW: Added voltage regulator initialization to the STM32F4xx HAL. - NEW: Added a linker script that demonstrates how to put stacks and other critical structures in the CCM RAM instead normal RAM. - NEW: Added experimental support for the Cortex-M4 FPU (default when the FPU is present but can be disabled). - NEW: Improved I2C driver model and STM32 implementation by Barthess. - CHANGE: Removed the option to change the stack alignment in the GCC Cortex-Mx ports, now alignment is always 64 bits. - CHANGE: Modified the function palSetGroupMode() to have an offset parameter in order to make it similar to other functions operating on groups. - CHANGE: Increased main and process default stack sizes from 0x100 to 0x200 in LPC1114 and LPC1343 linker scripts. *** 2.3.4 *** - FIX: Fixed Extra initialization in STM32 SPI driver (bug 3436127) (backported to 2.2.8). - FIX: Fixed DMA priority setting error in STM32 UART driver (bug 3436125) (backported to 2.2.8). - FIX: Fixed DMA priority setting error in STM32 SPI driver (bug 3436124) (backported to 2.2.8). - FIX: Fixed broken support for UART5 in STM32 serial driver (bug 3434094) (backported to 2.2.8). - FIX: Fixed broken TIM8 support in STM32 PWM driver (bug 3418620). - FIX: Fixed halconf.h file corrupted in some STM32 demos (bug 3418626). - NEW: Added an unified registers file for STM32: stm32.h. This file includes the appropriate vendor file then adds its own additional definitions. - NEW: Added demo for the ST STM32F4-Discovery kit. - NEW: STM32F4xx ADC driver implementation. - NEW: Added initialization of the NVIC VTOR register to all Cortex-Mx (v7M) ports. Also added a port option CORTEX_VTOR_INIT to enforce a different default value into the register. - NEW: Removed the warning about the "untested M4 platform", now it is tested and officially supported. - NEW: Reorganized the STM32F1xx hal_lld_xxx.h files in order to distribute the capability macros into the appropriate file (previously those were all in the common hal_lld.h). - NEW: Added HAL, Serial, ADC, EXT, GPT, ICU, PWM, SPI and UART support for the STM32F4xx sub-family. TODO: Add CAN and SDC, the drivers need to be ported and tested. - NEW: Added handling of USART6 to the STM32 serial driver. - NEW: Added USE_COPT setting to all makefiles, contributed by Mabl. - NEW: Added EXT driver implementation for AT91SAM7x, contributed by Florian. TODO: Test application missing. - NEW: Updated USB driver model and STM32 implementation and fixed several problems. - Changed the API to move buffer copy operations out of critical zones. - Added usbConnectBus() and usbDisconnectBus() functions. - Fixed problems with incorrect assertions. - NEW Updated the SERIAL_USB driver to match the new USB API, also fixed some problems. - Fixed incorrect use of input queues, the change required a change in input queues too. - NEW: Added a macro THD_STATE_NAMES to chthreads.h. This macro is an initializer for string arrays containing thread state names. - NEW: Added memory copy functionality to the STM32 DMA driver. - NEW: Implemented new makefile system for ARM GCC ports, now objects, listings and output files are generated into a "build" directory and not together with sources, also implemented a simplified output log mode. Now makefiles and load script files are requirements and trigger a rebuild if touched. - NEW: Updated AVR demos to use the new PAL driver. - NEW: Added Keil build files to the STM32L-Discovery demo. - CHANGE: Now the callback associated to input queues is invoked before reading each character. Previously it was invoked only before going to sleep into the THD_STATE_WTQUEUE state. - CHANGE: Moved the STM32 DMA helper drivers files under the sub-family specific directories because documentation issues. *** 2.3.3 *** - FIX: Fixed missing UART5 definition in STM32 HAL (bug 3411774)(backported to 2.2.8). - FIX: Fixed uninitialized variable in STM32 PWM and ICU drivers (bug 3413558). - FIX: Fixed wrong parameter passed to the DMA error hook in STM32 ADC driver, the DMA error hook has been removed entirely in the new ADC driver model (bug 3413214). - FIX: The function chThdExit() triggers an error on shell return when the system state checker is enabled (bug 3411207)(backported to 2.2.8). - FIX: Some ARMCMx makefiles refer the file rules.mk in the ARM7 port (bug 3411180)(backported to 2.2.8). - FIX: Fixed wrong check on CH_DBG_ENABLE_STACK_CHECK setting (bug 3387671) (backported to 2.2.7). - FIX: Fixed wrong APB1 frequency check (bug 3361039)(backported to 2.2.7). - FIX: Fixed missing state in shell demos (bug 3351556)(backported to 2.2.7). - FIX: Fixed race condition in Cortex-Mx ports (bug 3317500)(backported to 2.2.6). - FIX: Fixed wrong macro check in STM32 UART driver (bug 3311999)(backported to 2.2.6). - FIX: Fixed wrong macro definition in ARMv6-M architecture files (bug 3310084). - FIX: Fixed race condition in output queues (bug 3303908)(backported to 2.2.4). - FIX: Fixed CH_USE_HEAP and CH_USE_MALLOC_HEAP conflict (bug 3303841) (backported to 2.2.4). - FIX: Fixed timeout problem in the lwIP interface layer (bug 3302420) (backported to 2.2.4). - NEW: Added AVR implementation of the PAL driver contributed by Leszek. - NEW: STM32L ADC driver implementation. - NEW: Improved ADC driver model, now it is possible to handle error conditions during the conversion process. - NEW: STM32L1xx sub-family support, all STM32 drivers adapted and re-tested on the new platform except ADC that will need a specific implementation. - NEW: Added new API chThdExitS() in order to allow atomic operations on thread exit (backported to 2.2.8). - NEW: New EXT driver model and STM32 implementation. - NEW: New I2C driver model and STM32 implementation. (evaluate the option to change the API to a synchronous model) - NEW: New RTC driver model and STM32 implementation. (API and functionality review) - NEW: Improved MAC driver model, it now follows the same template of other drivers. TODO: implement macStop() in AT91SAM7X implementation. - NEW: New RCC helper driver for STM32F1xx and STM32L1xx, it simplifies the use of the RCC resources and hides most differences found among the various STM32 sub-families. - NEW: New DMA helper driver for STM32, it simplifies the use of the DMA resources and hides most differences with the new enhanced DMA units found in the STM32F2xx sub-family. - NEW: Now an error is generated at compile time when trying to enable the options CH_DBG_ENABLE_STACK_CHECK on ports that do not support it. - NEW: Added a kernel-only Cortex-Mx demo as reference project for users not interested in the HAL but just want to use the ChibiOS/RT kernel. The demo is named ARMCM3-GENERIC-KERNEL and is defaulted to the STM32, in order to use it on other families or on the ARM Cortex-M0 just change the inclusion paths in the makefile. - NEW: Integrated new FatFs version 0.8b. - NEW: Added a new hook THREAD_CONTEXT_SWITCH_HOOK() that allows to insert code just before a context switch. For example this hook could be used in oder to implement advanced power management schemes. - NEW: Added a new debug option CH_DBG_SYSTEM_STATE_CHECK that ensures the correct API call protocol. If an API is invoked out of the correct context then the kernel panics with a debug message. - NEW: The ARMCMx startup file (crt0.c) now is able to fill the stack areas with a filler (default behavior). This is required in order to easily assess the stack usage at runtime. - NEW: Added the new CMSIS 2.1 headers, now CMSIS resides into a shared location: ./os/ports/common/ARMCMx/CMSIS. Old CMSIS files have been removed from the various platforms. - NEW: Removed all the ch.ld files from the ARMCMx demos, now the makefiles point to common ld files under the various ports. Less duplication and easier maintenance. - NEW: Improved stack checking and reorganized memory map for the Cortex-Mx demos. Now stacks are allocated at the start of the RAM, an overflow of the exception stack now triggers an exception (it could go unnoticed before). The process stack is organized to be checked on context switch like other threads. Now all threads have an explicit stack boundary pointer. - NEW: Added debug plugin for Eclipse under ./tools/eclipse (backported to 2.2.7). - NEW: The debug macros chDbgCheck() and chDbgAssert() now can be externally redefined. The macro chDbgCheck() no more includes the line number in the description because incompatibility with the Cosmic compiler (backported to 2.2.7). - NEW: Added provisional support for STM32F2xx. Because of this some directories related to the STM32 have been renamed, your makefiles may require adjustments. - NEW: Added a custom rule to the various rules.mk files, now it is possible to add an user rule into the Makefiles. - NEW: Improvements to the trace buffer, now it stores a full thread pointer and event time, changed names to debug variables by adding the "dbg_" prefix (backported to 2.2.7). - NEW: Added a new functionality to the registry subsystem, now it is possible to associate a name to the threads using chRegSetThreadName. The main and idle threads have their name assigned by default (backported to 2.2.7). - NEW: Added TIM8 support to the STM32 GPT, ICU and PWM drivers. - NEW: Updated the STM32 header file to the latest version 3.5.0 and fixed it in order to correct several bugs related to the XL family. - NEW: Added a chprintf() function to ./os/various, it can print on any BaseChannel. - NEW: Improved the mini shell, enhanced info command, optimizations and removed the shellPrint() and shellPrintLine() functions, now it uses chprintf() for output. - NEW: lwIP 1.4.0 has been integrated, this new version does not require custom hooks into the Thread structure and is thus much lighter. - NEW: FatFs demo for the STM32F103ZG using the SDC driver. - NEW: Now the STM32 SDC driver supports unaligned buffers transparently. Optimized the driver for single block read and write operations. Optimized the driver state machine. - NEW: Finished the reorganization of the Cortex-Mx ports, now also the IAR and RVCT ports support the new Compact mode. - NEW: Added to the ARMv6-M sub-port an option to use the PendSV exception instead of NMI for preemption (backported to 2.2.5). - NEW: Reorganization of the Cortex-Mx ports in order to reduced code and comments duplication in the various headers (backported to 2.2.5). - NEW: Improved the ARMv7-M sub-port now there are two modes: Compact and Advanced. The advanced mode is equivalent to the previous versions, the compact mode is new and makes the kernel *much* smaller and generally faster but does not support fast interrupts (backported to 2.2.5). - NEW: Now the port layer exports info regarding the compiler and the port options. The info are printed into the test reports. Date and time also added. - CHANGE: Removed the option CH_USE_NESTED_LOCK, lwIP no more requires it and it would have conflicted with CH_DBG_SYSTEM_STATE_CHECK which is far more useful. - CHANGE: Renamed the scheduler functions chSchIsRescRequiredExI() to chSchIsPreemptionRequired(), chSchDoRescheduleI() to chSchDoReschedule(), chSysSwitchI() to chSysSwitch(). All those functions were special cases and not regular I-class APIs. - CHANGE: Renamed the macros IDLE_THREAD_STACK_SIZE and INT_REQUIRED_STACK to PORT_IDLE_THREAD_STACK_SIZE and PORT_INT_REQUIRED_STACK for consistency. - CHANGE: Removed the "old" Cortex-M3 port from the code, the current port has no drawbacks and the old port is now just a maintenance cost. - CHANGE: Removed the CH_CURRP_REGISTER_CACHE option, it is GCC-specific so it does not belong to the kernel options. The feature will be eventually reimplemented as a port-specific option. - CHANGE: chiQGetFullI() and chOQGetFullI() become macros. The queues subsystem has been optimized and is no more dependent on semaphores. Note that the queues callbacks invocation policy has been slightly changed, see the documentation (backported to 2.2.4). *** 2.3.2 *** - FIX: Fixed invalid BRR() macro in AVR serial driver (bug 3299306)(backported to 2.2.4). - FIX: Fixed missing IRQ vectors amicable names for STM32 XL devices (bug 3298889)(backported to 2.2.4). - FIX: Fixed wrong identifier in AVR serial driver (bug 3292084)(backported to 2.2.4). - FIX: Fixed wrong macro check for STM32 XL devices (bug 3291898)(backported to 2.2.4). - FIX: Fixed SPI driver restart in STM32 SPI driver implementation, also applied the same fix to the STM8S SPI driver (bug 3288758)(backported to 2.2.4). - FIX: Fixed missing state transition in ADC driver (bug 3288149)(backported to 2.2.4). - FIX: Fixed missing state transition in SPI driver (bug 3288112)(backported to 2.2.4). - FIX: Fixed spurious characters generated by Serial over USB driver (bug 3276379). - NEW: Added an option to the kernel to not spawn the Idle Thread from within chSysInit(), this way the application can spawn a custom idle thread or even use the main() thread as idle thread (backported to 2.2.4). - NEW: Added new SDC driver model, Secure Digital Card. - NEW: SDC driver implementation for STM32. - NEW: Updated the STM32 header file to the latest version 3.4.0, had to fix a bug regarding the STM32 XL sub-family. - NEW: New unified GCC startup file for Cortex-Mx processors, it is written in C instead of asm and supports constructors/destructors. Improved the Cortex-Mx linker scripts in all the GCC demos. - NEW: Now it is possible to share DMA channels in the STM32 HAL thanks to a centralized manager. Channels are allocated when the driver is started and released when it is stopped. - NEW: Added an STM32 C++ demo for the GNU compiler. - NEW: Added an STM32F103ZG demo for the STM3210E-EVAL evaluation board. - OPT: STM32 PWM driver implementation simplified. - CHANGE: Now pwmChangePeriod() does not implicitly disable the active PWM channels. - CHANGE: Renamed the chSemSetCounterI() function to chSemAddCounterI() and changed its behavior. - CHANGE: Modified the STM32 USB-CDC test demo to spawn a shell over the USB serial connection. *** 2.3.1 *** - FIX: Fixed insufficient idle thread stack in Cortex-M0-GCC port (bug 3226671) (backported to 2.2.3). - FIX: Fixed stack checking in Cortex-M0-GCC port (bug 3226657)(backported to 2.2.3). - FIX: Fixed wrong checks in PAL driver (bug 3224681)(backported to 2.2.3). - FIX: Fixed wrong checks in I/O Queues (bug 3219197)(backported to 2.2.3). - FIX: Fixed invalid assertion in adcConvert() (bug 3205410)(backported to 2.2.3). - NEW: Improvements to the PWM driver model: - Easier configuration similar to the GPT driver initializations, macros are no more required. - Added a new function that allows to change the PWM period on the fly, even from within callbacks. Formerly it was required to stop and restart the driver. - Improved driver documentation. - NEW: Added advanced mode to the STM32 PWM driver (TIM1 only). - NEW: Added new ICU driver model, Input Capture Unit. - NEW: ICU driver implementation for STM32. - NEW: Implemented stack checking in the Cortex-Mx RVCT port (backported to 2.2.3). - NEW: Added support for PLL3 in STM32 HAL driver. Note, the format of the mcuconf.h file is changed for STM32F105/STM32F107 devices. - NEW: Added board files for the Olimex STM32-P107. - NEW: Improved setup packets handling in the USB driver through a specific callback. - NEW: Improvements to the PAL driver and various implementation in order to make them more parenthesis friendly. - OPT: Simplified Serial over USB driver configuration. - CHANGE: Renamed the demo ARMCM3-STM32F107-GCC in ARMCM3-STM32F107 and added IAR and Keil projects. - CHANGE: Now the ARMCM3-STM32F107 demo targets the board Olimex STM32-P107 as default. - CHANGE: Removed all the prefixes from the structure/union field names in the HAL subsystem. - CHANGE: Updated the documentation to use Doxygen 1.7.4 which produces a much more readable output. Also modified the documentation layout to put functions and variables ahead of everything else in the group pages. Doxygen version below 1.7.4 cannot be used anymore because differences in templates. Note that now there are two Doxygen projects, one for generating the CHM file the other for plain HTML. *** 2.3.0 *** - FIX: Fixed race condition in CM0 ports, the fix also improves the ISR latency (bug 3193062)(backported to 2.2.2). - FIX: Fixed Cortex-Mx linker scripts alignment of __heap_base__, the correct alignment is now enforced at runtime into core_init() in order to make the OS integration easier (bug 3191112)(backported to 2.2.2). - FIX: Fixed error in function chCoreAllocI() function documentation (bug 3191107)(backported to 2.2.2). - FIX: Fixed minor problem with memory pools (bug 3190512)(backported to 2.2.2). - FIX: Stack overflow in CM0 ports when nearing interrupts saturation (bug 3187105)(backported to 2.2.1). - FIX: Fixed error in _BSEMAPHORE_DATA macro (bug 3184139)(backported to 2.2.1). - FIX: Error in MAC driver (bug 3179783)(backported to 2.2.1). - FIX: Fixed wrong serial driver macros (bug 3173336)(backported to 2.2.1). - NEW: Improved preemption implementation for the Cortex-M0, now it uses the NMI vector in order to restore the original context. The change makes IRQ handling faster and also saves some RAM/ROM space. The GCC port code now does not inline the epilogue code in each ISR saving significant ROM space for each interrupt handler in the system (backported to 2.2.3). - NEW: Added "IRQ STORM" long duration tests for the STM32, LPC11xx and LPC11xx. The test demonstrates the system stability in a thread-intensive, progressively CPU-saturating, IRQ-intensive long duration test. - NEW: Added two new functions to the events subsystem: chEvtBroadcastFlags() and chEvtBroadcastFlagsI(). The old chEvtBroadcast() and chEvtBroadcastI() become macros. The new functions allow to add the same flags to all the registered listener threads. - NEW: Added I-Class functions to the MailBoxes subsystem, now it is possible to use them as a transport layer between ISRs and Threads (backported to 2.2.2). - NEW: Added new USB driver model, probably it will evolve in next releases. - NEW: USB driver implementation for STM32. - NEW: Added "serial over USB" driver, it implements a Communication Device Class exposing it as a normal serial driver to applications, probably it will evolve in next releases. - NEW: Added STM32 USB CDC loopback test application. - NEW: Added new GPT driver model, General Purpose Timer. The driver allows to access the available timers in an abstract way. - NEW: GTP driver implementation for STM32, LPC13xx and LPC11xx. - NEW: Added STM32 GPT test application. - NEW: Implemented new event IO_TRANSMISSION_END in the generic serial driver. This event marks the physical transmission end of a data stream. - NEW: Implemented the new IO_TRANSMISSION_END event in the STM32 serial driver. - NEW: Added explicit reset of all peripherals inside the STM32 HAL driver. Removed the separate resets on initialization from the various other drivers saving significant space. - OPT: Removed TIMx reset on system startup in the STM32 PWM driver, the timers are already reset on driver startup. - CHANGE: The functions chEvtSignal() and chEvtSignalI() have been renamed to chEvtSignalFlags() and chEvtSignalFlagsI() for consistency. - CHANGE: Swapped the numeric values of the TIME_IMMEDIATE and TIME_INFINITE constants. Fixed the relative documentation in various places (backported to 2.2.2). - Many documentation improvements. *** 2.1.8 *** - FIX: Fixed error in STM32 ADC driver macro names (bug 3160306)(backported to 2.0.11). - FIX: Fixed IAR Cortex-Mx port memory organization problem (bug 3158776). - FIX: Fixed STM32F103 demo's incorrect clock settings (bug 3153746). - NEW: Added OTG clock setting to the STM32 HAL. - NEW: Added stack check support to the IAR Cortex-Mx port. - CHANGE: Removed .uvopt files from the Keil projects. *** 2.1.7 *** - FIX: Fixed various errors in the HAL documentation (bug 3153591). - FIX: Fixed error in chIOGetxxxxxEventSource() macros (bug 3153550) (backported to 2.0.10) - FIX: Fixed error in STM32 unbuffered UART driver (bug 3153437). - FIX: Fixed wrong macro check in LPC214x driver (bug 3152510). - FIX: Fixed switch condition error in STM32 PWM driver (bug 3152482) (backported to 2.0.10). - FIX: Fixed error in output queues static initializer (bug 3149141) (backported to 2.0.9). - FIX: Fixed extra notifications in input queues (bug 3148525)(backported to 2.0.9). - NEW: New ARM Cortex-Mx port for RVCT compiler. - NEW: Integrated the various Cortex-Mx GCC, IAR and RVCT demos in unified demos with multiple project files, the code is exactly the same. Renamed the directories removing the compiler suffix. - NEW: Added an USB clock configuration in the STM32 HAL driver (LD, MD, HD). - NEW: New semaphore API chSemSetCounterI(). - NEW: New queue APIs chIQGetFullI() and chOQGetFullI(). - CHANGE: Serial drivers now have a single event source instead of three, the event source is located in the superclass, this allows to create alternative implementations of the serial driver while keeping compatibility, the change also allowed to save 8/4 RAM bytes per serial driver. - CHANGE: Modified the ADC and CAN drivers to allow a NULL pointer for the configuration structure if it is not required by the implementation. - CHANGE: Modified the MMC_SPI driver to *require* a NULL as pointer to the configuration. - CHANGE: Removed enforced inlining for the chSchReadyI() function when the CH_OPTIMIZE_SPEED is enabled. Now the matter is left to the compiler specific settings. This change is meant to increase compatibility with compilers that have a different inlining semantic than GCC when not in C99 mode. - CHANGE: Changed the declaration of the main() function in all demos without arguments. Removed the clearing of arguments from the startup files and saved some space. - CHANGE: Queues callbacks now have as parameter a pointer to the queue, there were no parameters previously. - Documentation related fixes. *** 2.1.6 *** - FIX: Fixed error in sdPutTimeout() macro (bug 3138763)(backported in 2.0.9). - NEW: New ARM Cortex-Mx port for IAR compiler. - NEW: Now the STM32 CAN driver puts the lower half word of the ESR register in the upper half word of the can status word for easier debug. - CHANGE: Changes in the board files organization, now the board initialization is invoked from within halInit() after all the device drivers have been initialized. Now applications are required to explicitly invoke halInit() and chSysInit() from within their main(). - CHANGE: Removed the CMSIS files from the ARMCMx port, added the headers into the various HAL platforms requiring them. The change is required because the port layer must not have vendor specific dependencies and there is the possibility that the various vendors would use different CMSIS versions now that CMSIS 2.x has been released. - CHANGE: Modified the start of the ADC in the STM32 ADC driver, now it is no more required to specify ADC_CR2_EXTSEL_SWSTART and ADC_CR2_CONT in the CR2 register configuration. Also reordered the start sequence in order to allows a longer stabilization time for the ADC. - Documentation improvements. *** 2.1.5 *** - FIX: Fixed references to non-existing SSP1 device in LPC13xx SPI device driver (bug 3127926). - FIX: Fixed broken SPI synchronous API (bug 3127921). - FIX: Fixed missing vector.c files in LPC11xx and LPC13xx ports (bug 3124849). - FIX: Fixed pwmDisableChannel() now working in STM32 PWM driver (bug 3121246). - FIX: Fixed problem with PWM channel callbacks (bug 3120785). - NEW: Added support for TIM5 in the STM32 PWM driver. - NEW: Added to the ARM port the option to externally redefine the port IRQ macros in order to accomodate different implementations without have to change the port layer. - CHANGE: Modified the STM32_PWM_PWMx_IRQ_PRIORITY macros in the STM32 PWM driver (and all the STM32 mcuconf.h files) and renamed them in STM32_PWM_TIMx_IRQ_PRIORITY for consistency. - Documentation related fixes. *** 2.1.4 *** - FIX: Fixed failed memory recovery by registry scan, improved the related test case (bug 3116888)(backported to 2.0.8). - FIX: Fixed failure in STM32 ADC driver when a linear buffer mode is used (bug 3114696). - FIX: Fixed PWM channels going to ACTIVE state when the pulse width is set to zero in the STM32 PWM driver (bug 3114481)(backported to 2.0.8). - FIX: Fixed PWM channels return to IDLE state in STM32 PWM driver (bug 3114467)(backported to 2.0.8). - FIX: Fixed wrong initializer macros in STM32 PWM driver (bug 3114319). - FIX: Fixed syntax error in STM32 PWM driver(bug 3114266). - FIX: Fixed typo in board name (bug 3113574)(backported to 2.0.7). - FIX: Fixed defective event wait functions with timeout (bug 3113443) (backported to 2.0.7). - NEW: More improvements to the ADC and SPI drivers, now synchronous operations can also have callbacks, optimized ISR code paths. - NEW: Added to the STM32 ADC driver the macros for easy handling of the sampling time for each channel. - NEW: Greatly simplified the STM32 PWM driver implementation. - NEW: Added new macro PWM_FRACTION_TO_WIDTH() to the PWM driver model. - NEW: ARM7 port reorganization following the same pattern of the ARMCMx one, on now the port is also supports the ARM9 architecture (but not tested yet hardware). Removed the dependencies between the port layer and the vendors-provided headers. - NEW: Initial STM8L support: HAL, PAL and Serial drivers. - NEW: Added demo for the ST STM8L-Discovery kit. - NEW: Added support for the STM32 Value Line to the HAL. - NEW: Added demo for the ST STM32VL-Discovery kit. - OPT: STM32 SPI driver implementation improved, reduced latency when starting a transfer. - CHANGE: Improved the STM32 HAL to support multiple sub-families, at compile time now it is possible to test the presence of any single peripheral into the specified STM32 device. - CHANGE: Separated dynamic threads code into dedicated files: chdynamic.c and chdynamic.h. - CHANGE: Moved the declaration of the variable pal_default_config from hal_lld.c to the various board.c. That structure is more meaningful in the board layer because it is related to the board initialization. - CHANGE: Removed the various assembler files for the STM32 interrupt vectors, now it is a single vectors.c file. - CHANGE: Deleted ./os/ports/GCC/ARM. - CHANGE: Renamed ./os/ports/GCC/ARM7 in ./os/ports/GCC/ARM. - CHANGE: Renamed ./os/hal/platforms/STM8 in ./os/hal/platforms/STM8S. - CHANGE: Renamed ./testhal/STM8 in ./testhal/STM8S. - Added SPI driver to the STM8S documentation, it was missing. - Improved documentation for the ARM and ARMCMx ports. *** 2.1.3 *** - FIX: Fixed broken STM32 synchronous UART driver (bug 3100946). - FIX: Broken C++ wrapper (bug 3100925). - FIX: Broken lwIP/uIP demos (bug 3100901). - FIX: DMA not initialized under some conditions (bug 3099701). - FIX: Restored the RIDE7 build files in the STM32F103 demo, note the RIDE7 build files are not supported so this has not been tracked as a bug. - NEW: Added an SPI driver to the STM8 platform support. - NEW: Added a simple STM8 SPI demo under ./testhal/STM8/SPI. - NEW: Divided the file STM32/vectors.s in several files, one for each STM32 sub-family. This has been done in order to remove the preprocessor directives from assembler files and to support all the various STM32 sub-families. - CHANGE: Renamed ./os/ports/GCC/ARMCMx/STM32F10x in STM32. - CHANGE: Divided the file ARMCMx/crt0.s in crt0_v6m.s and crt0_v7m.s in order to remove the preprocessor directives from assembler files. - CHANGE: Renamed the HAL settings macro names, removed the CH_ prefix because it is reserved for the kernel namespace. NOTE: ****** Make sure to use a mcuconf.h file taken from ****** ****** this version in your project. ****** *** 2.1.2 *** - FIX: Fixed typo in memstreams.h (bug 3089567)(backported to 2.0.6). - FIX: Fixed wrong macro check in LPC214x and AT91SAM7 serial drivers (bug 3088776)(backported to 2.0.6). - FIX: Fixed non functioning option SPI_USE_MUTUAL_EXCLUSION=FALSE (bug 3084764)(backported to 2.0.6). - FIX: Fixed wrong macro check in STM32 serial support (bug 3078891)(backported to 2.0.6). - FIX: Fixed non functioning option CH_USE_NESTED_LOCKS (bug 3075544) (backported to 2.0.6). - FIX: Incorrect AT91SAM7X initialization, thanks Leszek (bug 3075354) (backported to 2.0.5). - FIX: Fixed race condition in function chSchGoSleepTimeoutS(), thanks Bal�zs (bug 3074984)(backported to 2.0.5). - FIX: Fixed race condition in threads creation (bug 3069854)(backported to 2.0.5). - FIX: Fixed broken CH_DBG_ENABLE_STACK_CHECK option in legacy CM3 port (bug 3064274)(backported to 2.0.5). - FIX: Fixed CAN_USE_SLEEP_MODE setting (bug 3064204)(backported to 2.0.5). - FIX: Fixed potential issue with GCC reorganizing instructions around "asm volatile" statements (bug 3058731)(backported in 2.0.4). - FIX: Fixed reduced ARM7 performance with GCC 4.5.x (bug 3056866)(backported to 2.0.4). - FIX: Fixed crash of the Posix simulator under Ubuntu 10.4 (bug 3055329) (backported to 2.0.3). - FIX: Fixed incorrect PLL2 setting in STM32 HAL (bug 3044770)(backported in 2.0.3). - FIX: Fixed wrong check on STM32_HCLK (bug 3044758)(backported to 2.0.3). - FIX: Fixed wrong condition check in STM32 PWM driver (bug 3041414) (backported in 2.0.3). - FIX: Corrupted IRQ stack in Cortex-Mx port (bug 3041117)(backported to 2.0.3). - FIX: Fixed a documentation error regarding the ADC driver function adcStartConversion() (bug 3039890)(backported to 2.0.3). - NEW: New I2C driver model (not complete and no implementations yet). - NEW: New SPI driver model, the new model supports both synchronous and asynchronous operations and, in general, simplifies the implementation of the low level driver. The new driver also specifies a simplified polled exchange API, useful for efficiently sending small amount of data over high speed connections. The driver state diagram changed slightly changed so be careful. - NEW: New ADC driver model, the new model supports both synchronous and asynchronous operations and, in general, simplifies the implementation of the low level driver. The driver state diagram changed slightly changed so be careful. - NEW: Improved PWM driver model, added several macros that helps to setup configuration structures and to specify pulse widths also as percentages or degrees using a fixed point notation. Added new pwmEnableChannelI() and pwmDisableChannelI() APIs in order to allow channel reprogramming from within callbacks or interrupt handlers, the new APIs are implemented as macros so there is no footprint overhead. - NEW: Added driver fields and initialization hooks for the callback-based drivers. The hooks are named XXX_DRIVER_EXT_FIELDS and XXX_DRIVER_EXT_INIT_HOOK(). - NEW: Added to the UART driver the capability to return the number of not yet transferred frames when stopping an operation. - NEW: Added more compile-time checks to the various STM32 device drivers. - NEW: Improved LPC214x SPI driver, now it uses IRQs, it implements the new SPI device driver model. - NEW: Improved AT91SAM7 SPI driver, now it uses IRQs and DMAs, it implements the new SPI device driver model. - NEW: New LPC11xx SPI driver, updated the LPCXpresso demo to use the SPI. - NEW: New LPC13xx SPI driver, updated the LPCXpresso demo to use the SPI. - NEW: Added a simple STM32 ADC demo under ./testhal/STM32/ADC. - NEW: Added a simple STM32 CAN demo under ./testhal/STM32/CAN. - NEW: Added a simple STM32 PWM demo under ./testhal/STM32/PWM. - NEW: Added a simple STM32 SPI demo under ./testhal/STM32/SPI. - NEW: More assertions added to the kernel for improved bug fixing. - NEW: New kernel hooks: SYSTEM_TICK_EVENT_HOOK(), SYSTEM_HALT_HOOK(). - NEW: Added board files for the Olimex STM32-H103. - NEW: New kernel APIs chSysGetIdleThread() and chThdGetTicks(), the new APIs are simple macros so there is no footprint overhead. - NEW: Added a generic BaseFileStream interface for future File System implementations or integrations (untested and not sure if it will stay or change). - NEW: Added to the documentation more notes about interrupt handlers in the ARM7 port. - NEW: Modified some tests in order to bring back code coverage to 100% in all modules except chdebug.c. Added a test case covering binary semaphores. - OPT: The fix to the bug 3075544 considerably improved the threads creation benchmarks score. - OPT: Speed optimizations to the STM32 SPI driver, greatly improved latency. - OPT: Speed optimizations to the STM32 ADC driver. - CHANGE: The API chThdInit() has been renamed to chThdCreateI() in order to make clear it is usable from interrupt handlers. - CHANGE: The mailboxes macros chMBSize(), chMBGetEmpty(), chMBGetFull(), chMBPeek() have been renamed to chMBSizeI(), chMBGetFreeCountI(), chMBGetUsedCountI(), chMBPeekI(). - CHANGE: The queue APIs chQSize(), chQSpace(), chIQIsEmpty(), chIQIsFull(), chOQIsEmpty(), chOQIsFull() have been renamed to chQSizeI(), chQSpaceI(), chIQIsEmptyI(), chIQIsFullI(), chOQIsEmptyI(), chOQIsFullI(). - CHANGE: The event APIs chEvtPend() and chEvtClear() have been renamed to chEvtAddFlags() and chEvtClearFlags() for consistency and correct English. Changed the macro chEvtIsListening() in chEvtIsListeningI(). - CHANGE: Added a parameter to the PWM driver callbacks, the pointer to the driver itself. - CHANGE: Added a parameter to the UART driver callbacks, the pointer to the driver itself. - CHANGE: In the UART driver now an error does not automatically brings the receiver in UART_RX_IDLE state, the receive operation continues unless explicitly stopped in the error callback handler. This considerably simplifies the low level driver code. - CHANGE: Removed a spurious trailing ; after the WORKING_AREA() macro declaration in several ports. The ; should go after the macro invocation. - CHANGE: Modified the STM32 ADC driver to use the new DMA infrastructure. - CHANGE: Modified the STM32 SPI driver to use the new DMA infrastructure. - CHANGE: Added DMA cleanup code to the STM32 dmaInit() function. - CHANGE: Simplified preprocessor conditions in the STM32 serial driver. - CHANGE: Renamed most of the STM32 HAL settings macro names in order to make names more consistent. NOTE: ****** Make sure to use a mcuconf.h file taken from ****** ****** this version in your project. ****** - CHANGE: Renamed the existing system hooks by adding the _HOOK suffix to the name in order to make names more consistent. NOTE: ****** Make sure to use a chconf.h file taken from ****** ****** this version in your project. ****** - CHANGE: Extensive documentation improvements, fixed terminology in the events related documentation and articles. - CHANGE: The documentation is no more included in the distribution, the file ./documentation.html redirects to the online documentation page that contains *much* better documents. Note that it is still possible to generate the local documentation using Doxygen, the procedure is very simple and described in ./docs/readme.txt. *** 2.1.1 *** - FIX: Fixed insufficient stack size for idle thread (bug 3033624)(backported to 2.0.3). - FIX: Fixed misspelled word in some chioch.h and chstreams.h macros (bug 3031534)(backported to 2.0.3). - FIX: Fixed wrong macro check in the STM32 SPI driver (bug 3028562)(backported to 2.0.3). - FIX: Fixed invalid context restore in MSP430 port (bug 3027975)(backported to 2.0.2). - FIX: Fixed STM32 vectors file (bug 3026528)(backported to 2.0.2). - FIX: Fixed race condition in STM32 SPI driver (bug 3025854)(backported to 2.0.2). - FIX: Fixed H_LOCK and H_UNLOCK redefined with CH_USE_MALLOC_HEAP (bug 3025549)(backported to 2.0.2). - FIX: Added option to enforce the stack alignment to 32 or 64 bits in the Cortex-Mx port (bug 3025133)(backported to 2.0.2). - NEW: Centralized DMA macros in the STM32 HAL. - NEW: New UART device driver model, this device driver allows unbuffered, callback driven access to UART-type devices. - NEW: UART device driver for STM32 and UART demo application under ./testhal/STM32/UART. - NEW: Added friendly interrupt vectors names to the STM32 HAL (change request 3023944). - NEW: Added support for SPI3 in the STM32 HAL. - CHANGE: Redeclared the IRQ handlers in the various STM32 drivers using the new friendly vector names. - CHANGE: Moved the STM32 HAL stess test application under ./testhal/STM32/_stress_test. - CHANGE: Removed the option -mabi=apcs-gnu from all the Cortex-Mx demos. The option is not compatible with the 64 bits stack alignment now default in the Cortex-Mx port. Note that the 64 bits alignment has a cost both as performance and as space but it is the "standard". - OPT: Small speed optimization in the STM32 SPI driver. - OPT: Optimized DMA clearing in STM32 ADC and SPI drivers, there was no need to read/modify/write the IFCR DMA register, it is write only. - Fixed various documentation errors. *** 2.1.0 *** - FIX: Fixed notification order in input queues (bug 3020708)(backported in 2.0.1). - FIX: Fixed non functional CH_CURRP_REGISTER_CACHE option in the Cortex-M3 port (bug 3020702)(backported in 2.0.1). - FIX: Fixed non functional CH_DBG_ENABLE_STACK_CHECK option in the Cortex-M3 caused by GCC 4.5.0, the fix also improves the context switch performance because GCC 4.5.0 apparently was generating useless instructions within the very critical context switch code (bug 3019738)(backported in 2.0.1). - FIX: Fixed insufficient stack space assigned to the idle thread in Cortex-M3 port (bug 3019594)(backported in 2.0.1). - FIX: Fixed missing check in chIQReadTimeout() and chIQWriteTimeout() (bug 3019158)(backported in 2.0.1). - FIX: Fixed instability in Mutexes subsystem (bug 3019099)(backported in 2.0.1). - FIX: Fixed broken AVR port (bug 3016619)(backported in 2.0.0). - FIX: Fixed assertion in adcStop() (bug 3015109)(backported in 2.0.0). - NEW: Merged the new unified STM8 port, now the port supports both the Cosmic and Raisonance compilers. - NEW: Added an STM8-DISCOVERY demo, the demo can be compiled with both the Cosmic and Raisonance compilers under the STDV IDE. Performance reports have been added for both compilers. NOTE: The Raisonance compiler seems to have problems in debugging under the STDV IDE, if you need to debug using the Raisonance compiler consider using the RIDE7 IDE instead. Compiling and executing using the "release" mode under STDV works fine. - NEW: Added timers clock macros to the STM32 clock tree HAL driver (backported in 2.0.1). - NEW: Added Binary Semaphores among the synchronization primitives. The new subsystem is entirely implemented as macros over the existing and proven Counting Semaphores thus takes no space (experimental). - NEW: Added a simplified SPI driver for AT91SAM7 devices, contributed by Alexander (experimental). - NEW: Added FatFs demos for AT91SAM7S and AT91SAM7X, contributed by Alexander (experimental). - OPT: Simplified the test suite code, now it is smaller. - Reorganized the documentation, now the description of the device drivers implementation is under the HAL module instead of the Ports module. *** 1.5.9 *** - FIX: Fixed STM8 baud rate setup error (bug 3010990). - FIX: Fixed STM8 UART3 driver (bug 3009145). - NEW: Added a STM8_ENABLE_WFI_IDLE option to the STM8 port, the default is FALSE. - OPT: Small size optimization in the semaphores subsystem. - OPT: Improvements in the STM8 port, the code is now smaller and generally faster, also saved few bytes of RAM. - Added explicit casts in chevents.h, chqueues.h, chqueues.c in order to silence some warnings on a specific compiler. - Added a section in chconf.h where redefine the port-related configuration parameters, also added notes into the documentation about this. *** 1.5.8 *** - FIX: Fixed missing files from ST library zip file (bug 3006629). - NEW: Added a demo for the AT91SAM7S256 and board files for the Olimex SAM7-P256. The demo has been contributed by Alexander Kozaruk. - Fixed some wrong paths into the demos readme files. - Formatting fixes to the port templates. - Added notes about copyright assignment to the documentation. Fixed some problems in the licensing FAQ page. - Added documentation article about events in ChibiOS/RT. *** 1.5.7 *** - FIX: Fixed missing SPI driver reinitialization in the MMC driver (bug 3005628)(backported in 1.4.4). - FIX: Fixed wrong inclusion order of board.h and halconf.h into hal.h (bug 3005041)(backported in 1.4.4). - FIX: Fixed wrong GPIO ports size in the STM8 PAL driver (bug 3001528). - NEW: Improved clock initialization for the STM32, now it is possible to configure the clock using any clock source and any HSE frequency. - NEW: The STM32 clock tree parameters and checks are now calculated into a separate file in order to support multiple clock trees for different sub-families of the STM32 platform. - NEW: Added separated clock trees for the STM32 LD/MD/HD sub-family and the CL sub-family. Now the selection of the sub-family is done in the board.h file, there is no more the need to put -DSTM32F10X_xx into the makefile. - NEW: Added the palSetBusMode() capability to the STM8 PAL driver. - NEW: Added the palSetBusMode() capability to the LPC11xx and LPC13xx PAL drivers. - NEW: Updated the STM32 FW Library files to latest version 3.3.0. - CHANGE: Renamed the STM32, STM8, LPC214x, AT91SAM7x, MSP430 and simulators PAL configuration structures to PALConfig, it is better to have the same name for this structure in all ports (like for all the other drivers). - CHANGE: Modified the linker scripts in the ARM demos in order to increase compatibility with the CodeSourcery toolchain. - Tested the STM8 port with the latest RKit-STM8_2.28.10.0092. It works but the new compiler shows a slight performance regression except in one test case. - Added credits page to the documentation, improved the article regardi
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。