sarmfsw: SMFSW Toolbox (desinged for ARM / compatible with other 8b/16b/32b platforms) 4.0rc
SMFSW collection of miscellaneous functions \& macros (desinged for ARM / compatible with other 8b/16b/32b platforms)
Loading...
Searching...
No Matches
sarmfsw (release notes)

The MIT License (MIT)

Copyright (c) 2017-2026 SMFSW (Sebastien Bizien)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

v3.7 -> 4.0rc

v3.6

  • arm_cmsis.h: update for STM32 families (also added H5, WBA families)
  • sarmfsw.h: includes order fix
  • arm_attributes.h: __STATIC keyword added
  • arm_attributes.h: __INLINE keyword workaround with C99 inline semantics (static inlining)
  • library entry point being sarmfsw.h, most cross includes in files now removed
  • inlines variable length and types reviewed
  • arm_inlines_average.h: code size optimization
  • arm_hal_peripheral.h: PCD device enabled includes usb_device.h header
  • arm_macros.h: SCALE_VAL_T added
  • arm_macros.h: BYTE_TO_PERC byte value clamp added
  • arm_macros.h: LSHIFT & RSHIFT changed (handling optimized shift opcodes and more explicit sizes if desired/required)
  • arm_typedefs.h: intCPU_t & uintCPU_t typedefs added
  • arm_hal_peripheral.h: No include for some peripherals without dedicated headers (STM32)
  • arm_chip_xxx.h: an external definition of HAL_getTick is provided when used (implicitly checking consistency with the one defined in the project)
  • arm_attributes.h: few fixes and CSMC compiler attributes added
  • arm_cmsis.h: volatile symbols definitions added in case not defined
  • arm_cmsis.h: UNUSED symbol definition (removed multiple definitions from other files)
  • arm_cmsis.h: __ASM symbol definition moved to arm_attributes.h.h
  • arm_cmsis.h: xc symbol test fix; moved __INLINE and __STATIC_INLINE definitions (when defined) in arm_attributes.h.h
  • arm_attributes.h: manual definition of __INLINE and __STATIC_INLINE if __STATIC_FORCEINLINE is not defined
  • arm_attributes.h: xc symbol test fix; moved xc part prior to gnuc (as the symbol is also defined by xc compiler)
  • README.md & keywords.txt update
  • arm_cmsis.h: update for STM32 families (also added C0, U5 families)
  • introducing Microchip XC compiler & PIC compatibility
  • arm_typedefs.h: stdbool.h & stdint.h can be skipped if not handled by compiler (through pre-processing symbols definition)
  • arm_typedefs.h: matching stdbool.h & stdint.h common types used in arm_typdefs.h to native C types by typedefs if headers are not included
  • arm_inlines_ascii.h: strDecToInt & strHexToInt returns correctly converted part if something goes wrong
  • arm_inlines_ascii.h: added check and convert inlines (num, alphanum, lower and upper case)
  • arm_inlines_ascii.h: added strDecToInt & strHexToInt
  • arm_inlines_linearization.h: sLinearFlexArray typedef & linearization_eval_flex function added
  • arm_inlines_linearization.h: linearization_eval constant parameters, nb values set to 32b
  • arm_inlines_linearization.h: linearXXX LINEAR_TAB macro generated name now outputs sLinearXXX
  • arm_attributes.h: scalar storage order attributes defined for __GNUC__ compiler (mostly for reference, not defined for other compilers)
  • Doxyfiles updated to reflect changes in Doxygen v1.9.x

v3.5

v3.4

v3.3

  • Doxyfile update
  • Adding support for unit tests and doxygen documentation generation with Travis CI
  • A few type names changed to their own typedefs
  • arm_attributes.h: Added macro for section, used, nonnull(...) & ATTR__ multiple attributes
  • arm_cmsis.h: Added latest STM32 chips (and STM32G0 family added)
  • arm_chip_stm32.h: Added FLASH_SIZE macro (returning flash size in bytes)
  • arm_chip_stm32.h: Added enum for last reset source (TODO: add more for sam & ino)
  • arm_chip_stm32.h: Added some special STM32 registers getter macros
  • arm_hal_peripheral.h: Removed unlikely defined include files (not related to STM32 peripherals, rather linked to middlewares)
  • arm_hal_peripheral.h: Fixed qspi.h include (quadspi.h)
  • arm_inlines.h: added some binary manipulation inlines
  • arm_inlines.h: added nonnull check for pointers in SWAP_ENDxxB_TAB
  • arm_inlines.h: added temperature conversions (kelvin, celsius, fahrenheit)
  • arm_inlines.h: added RestrictedAverage_XXX inlines
  • arm_inlines.h: ASCIIToHex returns BYTE with 0xFF value if not valid ASCII char
  • arm_inlines.h: var size conversions (bits) fixed to gain accuracy
  • arm_inlines.h: inline added to convert var size from x to y number of bits
  • arm_macros.h & arm_inlines_stdclib.h: simplified STR macro (no need of "")
  • arm_macros.h: moved TestMalloc to arm_macros.h.h (renamed to malloc_assert)
  • arm_macros.h: added SZ_TYP_MBR macro to get the sizeof of a member in a structure
  • arm_macros.h: added TYP_MBR macro to get member of typedef struct
  • arm_macros.h: added TYP_MBR_TYP macro to get type of member in typedef struct
  • arm_macros.h: added VAL_AT macro to get the content of an address
  • arm_macros.h: added undef of LOBYTE & HIBYTE if previously defined
  • arm_typedefs.h: Doxygen eGPIOState enum name fixed
  • arm_typedefs.h: Doxygen note added related to Arduino platform (for binary representation in binary.h)
  • sarmfsw.h: target names changed in enum
  • keywords.txt: added Error codes & Reset codes
  • misc: typo fixes, Doxygen comments, notes & warnings added
  • README.md: sections added

v3.2

  • arm_typedefs.h: endianness handling for bitfields and unions
  • arm_typedefs.h: added eGPIOState & eGPIOPull enums
  • arm_inlines.h: added L & LL qualifiers when needed for compatibility with <32b architectures
  • arm_inlines.h: added testEndian basic & full inlines
  • arm_macros.h: added SWAP_TYPE macro for any simple typedef swapping
  • arm_macros.h: added missing SWAP_LWORD, SWAP_FLOAT & SWAP_DOUBLE macros
  • arm_macros.h: added aliases for True, False, TRUE, FALSE
  • README.md: added list and description of special symbols to change library behavior
  • keywords.txt: Added new and enum literal keywords

v3.1

v3.0

v2.0

  • arm_macros.h: added shifting macros & refactoring
  • arm_inlines.h: refactoring & added some inlines for 64b and bcd, ascii & gray code
  • arm_inlines.h: removed some always inline qualifiers for some inlines producing lots of instructions
  • arm_inlines.h: inTolerance tolerance param is now float for higher accuracy when needed
  • arm_inlines.h: using an alias defined in arm_hal_peripheral.h.h for GetTicks call
  • arm_inlines.h: added get_fp_dec (formerly in HARMcksL)
  • arm_cmsis.h: updated latest chips references for STMicro
  • arm_cmsis.h: platform CMSIS includes & HAL config included from there
  • arm_cmsis.h: removed including HAL config (already included from CMSIS includes)
  • arm_hal_peripheral.h: added to include used peripherals
  • arm_hal_peripheral.h: reworked all peripheral includes
  • arm_chip_stm32.h: added wrapper for PWM tim/channels
  • arm_chip_stm32.h: refactored wrappers for TIM & GPIO names to what's mentioned here
  • arm_chip_sam.h: added support for Atmel SAM families
  • arm_chip_xxx.h: Families divided into files with respective family name
  • arm_errors.h: added to sarmfsw & refactored ERR_xx to ERROR_xx
  • arm_attributes.h: renamed WEAK__ to __WEAK
  • arm_attributes.h: added various compiler attributes definition
  • added missing includes in some headers (to be able to import them as standalone)
  • refactored includes order and where some declarations are done through files
  • refactored names of platform header files
  • added anchors to define external C (for Cpp)

v1.0

  • arm_cmsis.h: added generic define for all families
  • STM_CONF_HEADER() includes hal header file instead of hal conf directly (more HAL access)
  • Added macro SZ_OBJ to compute the number of elements of an object following its type
  • arm_cmsis.h: added macros to enable/disable interrupts
  • arm_macros.h: Renamed macro OFFSETOF, now OFFSET_OF & removed space after & in OFFSET_OF macro (causing issues compiling with gcc)
  • arm_macros.h: Some refactoring and bool returning inlines optimization
  • sarmfsw.h: includes CMSIS & HAL header files by default
  • arm_inlines.h: Added file for inlines, as some needs to access to HAL (included after arm_cmsis.h)
  • arm_inlines.h: inRange & inTolerance now using int32_t

v0.9 and below

  • initial commit and beta versions