| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| distortos-0.7.0.7z | 2019-05-05 | 1.4 MB | |
| distortos-0.7.0.tar.xz | 2019-05-05 | 1.4 MB | |
| README.md | 2019-05-05 | 12.5 kB | |
| v0.7.0 source code.tar.gz | 2019-05-05 | 13.6 MB | |
| v0.7.0 source code.zip | 2019-05-05 | 15.3 MB | |
| Totals: 5 Items | 31.6 MB | 2 | |
Added
- Added support for NUCLEO-F042K6 and 32F072BDISCOVERY boards with STM32F0 chips.
- Added basic support for STM32's DMAv1 and DMAv2, along with data in CSV and YAML files for each supported chip and unit tests.
- Added basic support for STM32's SDMMCv1, currently only for STM32F7 chip family. Support includes data in CSV and YAML files, as well as unit tests of
distortos::chip::SdMmcCardLowLevellow-level driver, which implementsdistortos::devices::SdMmcCardLowLevelinterface. - Added
distortos::chip::SpiMasterLowLevelDmaBasedclasses for STM32's SPIv1 and SPIv2. These classes implementdistortos::devices::SpiMasterLowLevelinterface and use DMA for transfers. - Added
distortos::devices::BlockDeviceanddistortos::devices::MemoryTechnologyDeviceinterface classes. - Added
distortos::devices::BlockDeviceToMemoryTechnologyDeviceclass which wrapsdistortos::devices::BlockDeviceobject and exposesdistortos::devices::MemoryTechnologyDeviceinterface. - Added
distortos::devices::SdCardanddistortos::devices::SdCardSpiBasedclasses, both based ondistortos::devices::BlockDeviceinterface, which can be used with SD cards connected via SDMMC or SPI respectively. This code handles only SD version 2.0 cards, has no support for run-time detection of card insertion/removal and has no support for detecting whether card is write-protected. Code was tested with 2 GB SDSC and 32 GB SDHC cards. - Added basic framework for file systems in the form of 3 abstract classes:
distortos::FileSystem,distortos::Fileanddistortos::Directory. - Added global
distortos::openFile(), takingdistortos::FileSystemreference and returning a fully functionalFILE*for use with<stdio.h>functions. - Added support for littlefs-v1 file system, provided by
distortos::Littlefs1FileSystem,distortos::Littlefs1Fileanddistortos::Littlefs1Directoryclasses, which implement interface ofdistortos::FileSystem,distortos::Fileanddistortos::Directoryclasses. - Added configuration of STM32F7's PLLI2S, PLLSAI and PLL48CLK to CMake.
- Added
distortos::Mutex::try_lock(),distortos::Mutex::try_lock_for()anddistortos::Mutex::try_lock_until()wrappers, which implement APIs ofstd::mutex::try_lock(),std::timed_mutex::try_lock_for()andstd::timed_mutex::try_lock_until()respectively. This allows usingdistortos::Mutexwith all mutex helpers from<mutex>header:std::lock_guard,std::unique_lock,std::scoped_lock,std::try_lock()andstd::lock(). - Added
sys/dirent.handsys/statvfs.hheaders, which are not provided by newlib. - Added unit tests of
distortos::devices::BlockDeviceToMemoryTechnologyDeviceanddistortos::devices::SdCardclasses. - Added unit tests of STM32's SPIv1 and SPIv2 drivers.
- Added unit tests of all
estd::ContiguousRangeconstructor overloads. - Added
estd/EnumClassFlags.hppwhich provides templated bitwise operators for enum class flags. - Added
estd/log2u.hppwithlog2()-likeconstexprfunction forunsigned int. - Added
estd/TypeFromSize.hppwithestd::TypeFromSize<>template, which selects fixed width type from requested byte size. - Added
estd/extractBitField.hpp, which provides a completely "inline-able" (with enabled optimizations) function template to extract bit field from array of raw data. - Added option to test coverage in unit tests. Enable it by setting CMake variable
COVERAGEof unit test subproject. You will then be able to use newcoveragetarget to generate detailed HTML coverage reports with gcovr in build folder of unit test subproject. - Added
distortos::Semaphore::getMaxValue()accessor and its C-API equivalentdistortos_Semaphore_getMaxValue(). - Added
...::getCapacity()accessor for all variants of FIFO and message queues. Added...::getElementSize()accessor for all raw variants of FIFO and message queues. In case of static queue variants, both of these accessors are also available asconstexpr staticmember functions. - Added
...::ValueTypetype alias for all non-raw variants of FIFO and message queues.
Changed
- Implemented full support for configuring and building with CMake. The new CMake workflow does not need Kconfig or any shell tools - just CMake (version 3.7 or later), build tool (it is recommended to use Ninja) and arm-none-eabi bleeding-edge-toolchain (GCC version 5 or later). Check
README.mdfor more details about usage. - Numerous changes to SPI-based devices and SPI APIs:
- Improved performance of interrupt-based STM32's SPIv1 and SPIv2 drivers.
- Replaced
distortos::devices::SpiMasterOperationanddistortos::devices::SpiMasterOperationRangewithdistortos::devices::SpiMasterTransferanddistortos::devices::SpiMasterTransfersRangerespectively. Renamed STM32's SPIv1 and SPIv2distortos::chip::ChipSpiMasterLowLevelclasses todistortos::chip::SpiMasterLowLevelInterruptBasedto make it consistent with newly addeddistortos::chip::SpiMasterLowLevelDmaBased. Aliases for old names were added, marked as deprecated and are scheduled to be removed after v0.7.0. - Changed most of SPI-related APIs to a more contract-based approach. Most of error-checking was replaced with assertions, thus affected functions return less error codes or don't return anything.
- Added
distortos::devices::SpiMasterHandleanddistortos::devices::SpiDeviceSelectGuard, which build new SPI-related API. These classes can be used for RAII-style locking/unlocking or selecting/deselecting of appropriate devices and also serve as handles for accessing core functionalities of associated objects. distortos::devices::SpiMasterBaseobject is now bound todistortos::devices::SpiMasterLowLevelindistortos::devices::SpiMasterLowLevel::startTransfer()instead ofdistortos::devices::SpiMasterLowLevel::start().distortos::devices::SpiMasterLowLevel::configure()allows configuration of dummy data that will be sent if write buffer of transfer isnullptr....::lock()and...::unlock()functions indistortos::devices::SpiEepromwere changed to use recursive mutexes internally and thus take no arguments.distortos::devices::SpiEepromimplementsdistortos::devices::BlockDeviceinterface. This changes return type ofdistortos::devices::SpiEeprom::read()anddistortos::devices::SpiEeprom::write()fromstd::pair<int, size_t>to justint.- Simplified SPI drivers and interfaces: removed handling of errors which are not possible with current configuration and removed critical sections or bit-banding use where it makes no difference.
distortos::chip::ChipSpiMasterLowLevel::Parametersclass was moved to separate header and renamed todistortos::chip::SpiPeripheral. Removeddistortos::chip::ChipSpiMasterLowLevel::spi...Parametersstatic objects and replaced them with local objects generated for each board. This change requires the board to be regenerated.- Replaced
spisanduartsmodules with files generated for each board. This change requires the board to be regenerated. - Removed
distortos::devices::SpiEeprom::getCapacity()anddistortos::devices::SpiEeprom::waitWhileWriteInProgress(). Use functions inherited fromdistortos::devices::BlockDeviceinterface class -distortos::devices::SpiEeprom::getSize()anddistortos::devices::SpiEeprom::synchronize(). - Removed
distortos::devices::SpiEeprom::getPageSize()anddistortos::devices::SpiEeprom::isWriteInProgress(). - Removed
distortos::devices::SpiDeviceclass and whole public API ofdistortos::devices::SpiMasterclass. Use functionality exposed bydistortos::devices::SpiMasterHandleanddistortos::devices::SpiDeviceSelectGuardclasses. - Removed
distortos::devices::SpiMasterTransfer::getBytesTransfered()anddistortos::devices::SpiMasterTransfer::finalize(). - All additional arguments of CMake functions
distortosBin(),distortosDmp(),distortosHex(),distortosLss()anddistortosSize()are passed to the appropriate commands (${CMAKE_OBJCOPY},${CMAKE_OBJDUMP}or${CMAKE_SIZE}). This can be especially useful in case of binary files which are used to calculate firmware checksums, where it may be necessary to pass flags like--gap-fill 0xff. generateBoard.pynow requires only one argument - the input*.yamlfile. Arguments with output path and distortos path are both optional. Default output path is the folder of input*.yamlfile. Default distortos path is calculated as a relative path from current directory to the folder above the script.generateChipYaml.pynow requires only one argument - the input*.csvfile. Second argument - output path - is optional and default value ischipYaml/in the folder of input*.csvfile.- Replaced
ARMv6-M-ARMv7-M-coreVectors.cppand...-chipVectors.cppfiles with...-vectorTable.cppgenerated for each board. Data used to generate vector table is taken from chip YAML files, which now contain information about NVIC and implemented vectors. This change requires the board to be regenerated and this requirement is enforced by CMake. Additionallydistortos_Memory_regions_..._text_vectorsCMake configuration option was renamed todistortos_Memory_regions_..._text_vectorTable, which is related to the rename of.text.vectorslinker section to.text.vectorTable. - Changed names of some interrupt vectors of STM32F0, STM32F1, STM32L0 and STM32L4 to be consistent with
..._IRQnnames ofIRQn_Typeenum. - Renamed all configuration
#defines indistortosConfiguration.hfromCONFIG_...toDISTORTOS_.... Some of them were also shortened and simplified by removing redundant parts like architecture name (e.g.CONFIG_ARCHITECTURE_ARMV6_M_ARMV7_M_MAIN_STACK_SIZE->DISTORTOS_ARCHITECTURE_MAIN_STACK_SIZE), chip family (e.g.CONFIG_CHIP_STM32F0_RCC_HSE_FREQUENCY->DISTORTOS_CHIP_RCC_HSE_FREQUENCY) or peripheral version (e.g.CONFIG_CHIP_STM32_SDMMCV1_SDMMC1_DMA->DISTORTOS_CHIP_SDMMC1_DMA). This change requires the board to be regenerated. - Update CMSIS to version 5.5.1.
- Update CMSIS-STM32F0 to version 1.9.0.
- Update CMSIS-STM32F1 to version 1.7.0.
- Update CMSIS-STM32F4 to version 1.24.0.
- Update CMSIS-STM32F7 to version 1.15.0.
- Update CMSIS-STM32L0 to version 1.11.0.
- Update CMSIS-STM32L4 to version 1.14.0.
Fixed
- Fixed
estd::ContiguousRangeto allow construction ofestd::ContiguousRange<const T>fromconst std::array<const T, N>&. - Fixed
generateBoard.pyfor ruamel.yaml 0.15.52 or later. - Fixed frequent overrun errors appearing in STM32's SPIv1 and SPIv2 drivers.
- Fix critical linker script bug which affects STM32F7 chips. If program contained and object with big alignment in
.textsection, LMA and VMA were aligned differently. This resulted in undefined behaviour right from the start, usually causing a Hard Fault exception within several cycles.
Removed
- Removed support for configuring with Kconfig and building with make. Both of these tasks are now handled by CMake.
- Removed some nonexistent or problematic interrupt vectors for some of STM32F1 chips. Only high density, XL density and connectivity line STM32F1 chips have DMA2. Some of them map DMA2 channel 5 interrupt to either shared interrupt vector (with DMA2 channel 4) or to a separate interrupt vector, but enabling the latter has multiple unrelated side effects, so use the former one only.
- Removed deprecated files and aliases:
lowLevelInitialization.hpp,StaticRawFifoQueue2andStaticRawMessageQueue2.