A dedicated performance counter for Cortex-M systick. It shares the SysTick with users' original SysTick function without interfere it. This library will bring new functionalities, such as performance counter, delay_us and clock() service defined in time.h

Overview

perf_counter

A dedicated performance counter for Cortex-M systick. It shares the SysTick with users' original SysTick function without interfere it. This library will bring new functionalities, such as performance counter, delay_us and clock() service defined in time.h

You might also like...
Modify Android linker to provide loading module and hook function

fake-linker Chinese document click here Project description Modify Android linker to provide loading module and plt hook features.Please check the det

Handling C++ & __try exceptions without the need of built-in handlers.

manual_exception_handling this handles exceptions inside the module its specified to manage without needing previous handlers for the exception a good

Group project: writing our own printf function
Group project: writing our own printf function

0x11. C - printf By Julien Barbier, co-founder & CEO Concepts For this project, students are expected to look at these concepts: Group Projects Pair P

Writing our own printf function, this is a project done under ALX Low Level Programming.

0x11. C - printf Writing our own printf function, this is a project done under ALX Low Level Programming. Resource secrets of printf Implementing prin

a compile-time, header-only, dimensional analysis and unit conversion library built on c++14 with no dependencies.

UNITS A compile-time, header-only, dimensional analysis library built on c++14 with no dependencies. Get in touch If you are using units.h in producti

cavi is an open-source library that aims to provide performant utilities for closed hierarchies (i.e. all class types of the hierarchy are known at compile time).

cavi cavi is an open-source library that aims to provide performant utilities for closed hierarchies (i.e. all class types of the hierarchy are known

This library support run-time type casting faster than dynamic_cast ( similar to unreal engine's CastTo )
This library support run-time type casting faster than dynamic_cast ( similar to unreal engine's CastTo )

Fast Runtime Type Casting This library give you C++ Fast Runtime Type Casting faster than dynamic_cast ( similar to Unreal Engine's CastTo, IsChildOf

Sqrt OS is a simulation of an OS scheduler and memory manager using different scheduling algorithms including Highest Priority First (non-preemptive), Shortest Remaining Time Next, and Round Robin.
Sqrt OS is a simulation of an OS scheduler and memory manager using different scheduling algorithms including Highest Priority First (non-preemptive), Shortest Remaining Time Next, and Round Robin.

A CPU scheduler determines an order for the execution of its scheduled processes; it decides which process will run according to a certain data structure that keeps track of the processes in the system and their status. A process, upon creation, has one of the three states: Running, Ready, Blocked (doing I/O, using other resources than CPU or waiting on unavailable resource).

CacheLib is a C++ library providing in-process high performance caching mechanism.
CacheLib is a C++ library providing in-process high performance caching mechanism.

Pluggable in-process caching engine to build and scale high performance services

Comments
  • delay_us函数问题

    delay_us函数问题

    1.延时函数调用了 start_cycle_counter(); 和 stop_cycle_counter()来实现计时功能,因此当在使用start_cycle_counter(); 和 stop_cycle_counter()测量代码运行周期时,代码段中不能使用delay_us() 函数 2.当延时时间在1-20us时,延时时间不太准

    opened by mian2018 4
  • How is user_code_insert_to_systick_handler() injected in  systick_handler() in systick_wrapper_ual.s ?

    How is user_code_insert_to_systick_handler() injected in systick_handler() in systick_wrapper_ual.s ?

    That's the wonderful library, and it helps me a lot in my work. I'm really interested in how the function user_code_insert_to_systick_handler() gets injected into the user-defined SysTick_Handler() without modifying user code.

    The systick_wrapper_ual.s defines a proc $Sub$$SysTick_Handler which calls user_code_insert_to_systick_handler() then   $Super$$SysTick_Handler  (which refers to user-define SysTick_Handler()). After I looked at the mapping file I found $Sub$$SysTick_Handler is inserted into the vector table instead of the user-defined SysTick_Handler()

    This symbols containing $ and | look like black magic to me, and I couldn't find any description of it in the "Armasm User Guide." It would be helpful if could direct me to the documentation that describes this underlying machinism. 

    opened by busoff 3
Releases(v1.9.9a)
  • v1.9.9a(Sep 26, 2022)

  • v1.9.8(Aug 10, 2022)

  • v1.9.7(Jul 6, 2022)

  • v1.9.6(Jun 15, 2022)

    • Add RT-Thread Package
    • Add new API update_perf_counter() for notifying perf_counter that SystemCoreClock has been updated
    • Add a macro __perf_counter_printf__ to retarget printf
    • Add a macor __PERF_COUNT_PLATFORM_SPECIFIC_HEADER__ for people to insert a platform specific header file.
    • Add Doxygen
    • Other minor changes
    Source code(tar.gz)
    Source code(zip)
  • v1.9.5(May 20, 2022)

  • v1.9.4(Apr 13, 2022)

  • v1.9.1(Feb 13, 2022)

    • Add macro __PERF_COUNTER__ in RTE_Components.h for compile-time detection.
    • Add a preprocessing in perf_counter.h to detect GNU extensions.
    • Include cmsis-compiler.h in perf_counter.h for using __IRQ_SAFE.
    • Enhance RTOS support
      • Add API init_task_cycle_info()
      • Add API enable_task_cycle_info()
      • Add API disable_task_cycle_info()
    • Other minor updates
    Source code(tar.gz)
    Source code(zip)
  • v1.8.2(Jan 29, 2022)

    • Fixed issue found in cycleof
    • Added macros for version info.
    • Add a new feature to measure a chain of tasks in RTOS environment.
    • Other minor changes.
    Source code(tar.gz)
    Source code(zip)
  • v1.7.7a(Jan 11, 2022)

  • v1.7.5(Dec 30, 2021)

    • Added Support for ThreadX.
      • Due to the limitation of MDK, try to avoid using the assembly source code inside the ac5 porting folders.
      • Due to the limitation of MDK, currently, you have to add the following option to the "ASM" configuration when using assembly source code inside the ac6 porting folder.
    -include "Pre_Include_Global.h"
    

    image

    Source code(tar.gz)
    Source code(zip)
  • v1.7.3(Dec 28, 2021)

    • Added supports for RTOSs that the net cycle information of any given tasks/threads can be measured.
      • Support RTX5
      • Support FreeRTOS
      • Support RT-Thread
    • Fixed an issue that start_task_cycle_counter() and stop_task_cycle_counter() might lose some cycle information if there is no context switching in between.
    • Other minor updates
    Source code(tar.gz)
    Source code(zip)
  • v1.6.4(Nov 13, 2021)

    • Improve support for IAR
    • Fix issue found in foreach
    • Introduce __cycle_count__ for __cycleof__ in addition to '_' to avoid confusion.
    • Other minor updates
    Source code(tar.gz)
    Source code(zip)
  • v1.6.1(Nov 5, 2021)

  • v1.5.0(Jul 19, 2021)

    • Add library support for gcc Use the following command-line option to allow hijacking existing SysTick_Handler
       -Wl,--wrap=SysTick_Handler
    
    • Other minor updates
    Source code(tar.gz)
    Source code(zip)
  • v1.4.1(Jun 7, 2021)

  • 1.4.0(May 24, 2021)

    • Improved support for GCC
    • Update __IRQ_SAFE and safe_atom_code() for the latest CMSIS standard.
    • Add macros for compiler detection
    • Other minor changes.
    Source code(tar.gz)
    Source code(zip)
  • 1.3.1(Mar 24, 2021)

    • Remove duplicated macro definition
    • Remove macro definition "_" which conflicts with other libraries, for example, PLOOC
    • Other minor changes
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Jan 14, 2021)

    • Improve delay_us accuracy for small delays and long range delays.
    • The LOAD register should be treated as (LOAD + 1), this improves the long range delay and measurement.
    • Add compensation (tested on Cortex-M3 processors) to delay_us
    • Add Arm Compiler 5 (armcc) configuration to example project
    • Other small changes
    Source code(tar.gz)
    Source code(zip)
  • v1.2.2(Jan 11, 2021)

  • v1.0.0(Jan 9, 2021)

    • Support All Cortex-M Processors
    • performance counter
    • us level delay: delay_us
    • Library suitable for Arm Compiler 5 and Arm Compiler 6 (No IAR or GCC support)
    • Auto-initialisation
    Source code(tar.gz)
    Source code(zip)
Owner
Gabriel Wang
A firmware programmer who likes to try crazy ideas on constrained environment. A state-machine programming hobbyist. A cat person.
Gabriel Wang
A fast character conversion and transliteration library based on the scheme defined for Japan National Tax Agency (国税庁) 's corporate number (法人番号) system.

jntajis-python Documentation: https://jntajis-python.readthedocs.io/ What's JNTAJIS-python? JNTAJIS-python is a transliteration library, specifically

Open Collector, Inc. 15 Nov 12, 2022
The libxo library allows an application to generate text, XML, JSON, and HTML output using a common set of function calls. The application decides at run time which output style should be produced.

libxo libxo - A Library for Generating Text, XML, JSON, and HTML Output The libxo library allows an application to generate text, XML, JSON, and HTML

Juniper Networks 253 Dec 10, 2022
Block unauthorized users from logging in via RDP.

RDPBlocker is a tool to prevent brute force password cracking against RDP (Remote Desktop Protocol) services. This tool is developed by cpp

null 44 Nov 11, 2022
This is a simple C++ implementation of plant-like structures defined with bracketed OLsystems.

Tree Hundred This is a simple C++ implementation of plant-like structures defined with bracketed OLsystems, as described in the book The Algorithmic B

null 22 Apr 22, 2022
A small utility to set the clock on a Hayes Stack Chronograph over its serial port.

chronosync A small utility to set the clock on a Hayes Stack Chronograph over its serial port. Synopsis chronosync [-d] [-s serial speed] <serial devi

joshua stein 1 Oct 1, 2021
A compile-time enabled Modern C++ library that provides compile-time dimensional analysis and unit/quantity manipulation.

mp-units - A Units Library for C++ The mp-units library is the subject of ISO standardization for C++23/26. More on this can be found in ISO C++ paper

Mateusz Pusz 679 Dec 29, 2022
Applications based on Wi-Fi CSI (Channel state information), such as indoor positioning, human detection

ESP-CSI The main purpose of this project is to show the use of ESP-WIFI-CSI. The human body detection algorithm is still being optimized. You can get

Espressif Systems 314 Jan 4, 2023
An attempt to restore and adapt to modern Win10 version the Rootkit Arsenal original code samples

rootkit-arsenal-guacamole An attempt to restore and adapt to modern Win10 version the Rootkit Arsenal original code samples All projects have been por

Matteo Malvica 51 Nov 6, 2022
This project aims to facilitate debugging a kernel driver in windows by adding support for a code change on the fly without reboot/unload, and more!

BSOD Survivor Tired of always telling yourself when you got a BSOD that what if I could just return to the caller function which caused the BSOD, and

Ido Westler 159 Dec 21, 2022
Tool based in nodes to build GLSL shaders without any programming knowledge written in C using OpenGL and GLFW.

FNode Tool based in nodes to build GLSL shaders without any programming knowledge written in C using OpenGL and GLFW (raylib library). It contains a c

Víctor Fisac 80 Dec 26, 2022