Skip to content

v0.2.0

Compare
Choose a tag to compare
@FreddieChopin FreddieChopin released this 03 May 18:26
· 3452 commits to master since this release

Added

  • Support for ARMv6-M (ARM Cortex-M0, ARM Cortex-M0+ and ARM Cortex-M1) architecture.
  • Support for all 72 STM32F0 chips.
  • Support for all 94 STM32F1 chips.
  • Support and test configurations for NUCLEO-F091RC board with STM32F0
    chip, NUCLEO-F103RB board with STM32F1 chip and
    NUCLEO-F429ZI board with STM32F4 chip.
  • make oldconfig target, which can be used to update currently selected configuration asking about new options.
  • make olddefconfig target, which can be used to update currently selected configuration with default values of new
    options.
  • forAllConfigurations.sh script, which can be used to run any command - passed in first argument - for all
    configurations found in provided (optional) search path - passed in second argument, default - current path ("."). One
    use case is updating all configurations - ./scripts/forAllConfigurations.sh "make oldconfig" or
    ./scripts/forAllConfigurations.sh "make olddefconfig".
  • Ability to delete some folders - if you don't use their contents - without breaking make/tup build and Kconfig
    menus. You can obviously delete anything from configurations/, including the entire folder. The same is true for
    documentation/ directory if you don't plan to generate API reference with doxygen. In case of external/,
    source/architecture/, source/board/ and source/chip/ you can delete any number of complete components or group of
    components - e.g. you can delete source/board/STM32/STM32F4/STM32F4DISCOVERY/ (port for single board) and/or
    source/board/STM32/STM32F4/ (group of ports for boards), but you shouldn't delete just
    source/board/STM32/STM32F4/STM32F4DISCOVERY/include/ (part of port for single board). Additionally you can delete
    entire source/board/ and/or test/ folders.
  • Ability to add configurations of custom applications to Kconfig menus. User can add any number of files named
    Kconfig-applicationOptions anywhere in the project, and they will all be automatically included in the
    "Applications configuration" menu. The same is possible for custom boards, chips and architectures, but these are
    slightly more complicated, as multiple files are needed.
  • Configuration of SRAM1, SRAM2 and SRAM3 regions' unification for STM32F4 chips.
  • Support for additional memory regions of STM32F4 chips (BKPSRAM, CCM, SRAM2, SRAM3) in generated linker
    scripts.
  • Ability to use ARMv7-M's PRIMASK to disable all interrupts during critical sections when "Interrupt priority
    disabled in critical sections" (ARCHITECTURE_ARMV7_M_KERNEL_BASEPRI) options is set to 0. This is the new default
    setting, as this is a more conservative (and thus safer for a beginner) approach, which doesn't require any special
    configuration of interrupt priorities (default value is 0).
  • Support for optional inversion to all implementations of ChipInputPin and ChipOutputPin.
  • buttons.hpp header with board buttons for all supported boards.
  • clocks.hpp header with definition of clocks for selected chip.
  • New package type for STM32F411C chips - the website lists WLCSP49 variant now.

Changed

  • Change names of elements of all enum class from ALL_CAPS or PascalCase to camelCase for consistency with
    their use as constants and with other enums.
  • Replace individual linker script generators for STM32F1 and STM32F4 families with generic script for
    ARMv7-M-based chips. The new generator also supports arbitrary number of additional memories (like BKPSRAM, CCM, ...),
    which can be defined with command line arguments.
  • Reorganize and simplify Kconfig menus for STM32F1 and STM32F4.
  • Improve configuration and initialization of chip clocks for STM32F1 and STM32F4.
  • Move configuration of SysTick timer from chip::lowLevelInitialization() to architecture::startScheduling() for
    all ARMv6-M and ARMv7-M targets.
  • Change allowed range of PLLN for STM32F446 chips from [192; 432] (first revision of the reference manual) to
    [50; 432] (second revision of the reference manual).
  • API reference generated by doxygen no longer includes code from disabled folders. This way documentation for
    particular configuration has entries only for single selected chip & architecture, single selected board (if any) and
    only for enabled applications - sources that are excluded from compilation are not parsed by doxygen.

Fixed

  • Fix insufficient dependencies for "PLLR" option in system clock source configuration for STM32F4. Main PLL's "/R"
    output cannot be used as system clock if PLL is disabled.
  • Fix invalid definition of templated variants of Semaphore::tryWaitFor() and Semaphore::tryWaitUntil().
  • Added missing STM32F429NG chip to Kconfig configuration menus.
  • Fix make build for constructs like CXXFLAGS_$(d)someFileName.cpp := ... not working correctly in top-level folder
    of the project (where $(d) is ./).