perf_counter/GorgonMeducer.perf_counter.pdsc
Gabriel Wang 1dd93e9a0a v1.9.3
2022-02-26 23:28:27 +00:00

263 lines
11 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<package schemaVersion="1.4" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd">
<vendor>GorgonMeducer</vendor>
<name>perf_counter</name>
<description>A dedicated performance counter for the Cortex-M Systick. It shares the SysTick with users' original SysTick function without interfering with it. This library will bring new functionalities, such as performance counter, delay_us and clock() service defined in time.h</description>
<url>https://raw.githubusercontent.com/GorgonMeducer/perf_counter/CMSIS-Pack/cmsis-pack/</url>
<supportContact>https://github.com/GorgonMeducer/perf_counter/issues</supportContact>
<license>lib/LICENSE</license>
<!-- optional license file -->
<!--
<license>
</license>
-->
<repository type="git">https://github.com/GorgonMeducer/perf_counter.git</repository>
<releases>
<release date="2022-02-26" version="1.9.3" url="https://raw.githubusercontent.com/GorgonMeducer/perf_counter/CMSIS-Pack/cmsis-pack/GorgonMeducer.perf_counter.1.9.3.pack">
- Fix CONNECT macro cannot connect two parameters issue.
- Add UNUSED_PARAM
- Add support for C++ env
- Other minor updates
</release>
<release date="2022-02-14" version="1.9.2" url="https://github.com/GorgonMeducer/perf_counter/raw/46b3f8bde2a42e253951a395370d6bed965bb2b1/cmsis-pack/GorgonMeducer.perf_counter.1.9.2.pack">
- Add API get_system_ms() to avoid int64_t divide operation.
- Add API delay_ms()
</release>
<release date="2022-02-13" version="1.9.1" url="https://github.com/GorgonMeducer/perf_counter/raw/1f4bf7fcab579d5a3018798ec0f072d8588b2886/cmsis-pack/GorgonMeducer.perf_counter.1.9.1.pack">
- Add preprocessing in perf_counter.h to detect whether GNU extension is enabled or not.
- Enhance RTOS support
- Add macro __PERF_COUNTER__ in RTE_Components.h for compile-time detection.
</release>
<release date="2022-01-29" version="1.8.2" url="https://github.com/GorgonMeducer/perf_counter/raw/1607c021f50d0305394870ca34b5412d949aaa4f/cmsis-pack/GorgonMeducer.perf_counter.1.8.2.pack">
- Fix a bug found in __cycleof__. The __cycle_counter__ was not updated with the measure result.
- Add macros for version info.
</release>
</releases>
<keywords>
<!-- keywords for indexing -->
<keyword>Cortex-M</keyword>
<keyword>SysTick</keyword>
<keyword>Performance Analaysis</keyword>
</keywords>
<conditions>
<condition id="Arm Compiler">
<description>Arm Compiler 5 (armcc) or Arm Compiler 6 (armclang).</description>
<accept Tcompiler="ARMCC" Toptions="AC6"/>
<accept Tcompiler="ARMCC" Toptions="AC6LTO"/>
<accept Tcompiler="ARMCC" Toptions="AC5"/>
</condition>
<condition id="Arm GCC">
<description>GNU Tools for Arm Embedded Processors.</description>
<accept Tcompiler="GCC"/>
</condition>
<condition id="Cortex-M Processors">
<description>Support All Cortex-M based processors</description>
<accept Dcore="Cortex-M0"/>
<accept Dcore="Cortex-M0+"/>
<accept Dcore="Cortex-M1"/>
<accept Dcore="Cortex-M3"/>
<accept Dcore="Cortex-M4"/>
<accept Dcore="Cortex-M7"/>
<accept Dcore="Cortex-M23"/>
<accept Dcore="Cortex-M33"/>
<accept Dcore="Cortex-M35P"/>
<accept Dcore="Cortex-M55"/>
<accept Dcore="SC000"/>
<accept Dcore="SC300"/>
<accept Dcore="ARMV8MBL"/>
<accept Dcore="ARMV8MML"/>
</condition>
<condition id="CMSIS-CORE">
<description>Require CMSIS-CORE Support</description>
<require Cclass="CMSIS" Cgroup="CORE"/>
</condition>
<condition id="RTX5 Patch">
<description>Require RTX5 Support</description>
<accept Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Source"/>
<require Cclass="Utilities" Cgroup="perf_counter" Csub="Core"/>
</condition>
<condition id="FreeRTOS Patch">
<description>Require FreeRTOS Support</description>
<accept Cbundle="FreeRTOS" Cclass="RTOS" Cgroup="Core"/>
<require Cclass="Utilities" Cgroup="perf_counter" Csub="Core"/>
</condition>
<condition id="perf_counter">
<description>Require Perf_Counter Core</description>
<require Cclass="Utilities" Cgroup="perf_counter" Csub="Core"/>
</condition>
<condition id="Cortex-M Arm GCC">
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
<require condition="Arm GCC"/>
<require condition="Cortex-M Processors"/>
</condition>
<condition id="Cortex-M Arm Compiler">
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
<require condition="Arm Compiler"/>
<require condition="Cortex-M Processors"/>
</condition>
<condition id="Cortex-M Arm GCC CMSIS-CORE">
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
<require condition="Arm GCC"/>
<require condition="Cortex-M Processors"/>
<require condition="CMSIS-CORE"/>
</condition>
<condition id="Cortex-M Arm Compiler CMSIS-CORE">
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
<require condition="Arm Compiler"/>
<require condition="Cortex-M Processors"/>
<require condition="CMSIS-CORE"/>
</condition>
</conditions>
<!-- apis section (optional - for Application Programming Interface descriptions) -->
<!--
<apis>
</apis>
-->
<!-- boards section (mandatory for Board Support Packs) -->
<!--
<boards>
</boards>
-->
<!-- devices section (mandatory for Device Family Packs) -->
<!--
<devices>
</devices>
-->
<!-- examples section (optional for all Software Packs)-->
<!--
<examples>
</examples>
-->
<!-- conditions section (optional for all Software Packs)-->
<!--
<conditions>
</conditions>
-->
<components>
<bundle Cbundle="Performance Counter" Cclass="Utilities" Cversion="1.9.3">
<description>A dedicated performance counter for Cortex-M systick.</description>
<doc></doc>
<component Cgroup="perf_counter" Csub="Core" Cvariant="Library" isDefaultVariant="true" condition="CMSIS-CORE">
<description>A dedicated performance counter for Cortex-M systick.</description>
<files>
<file category="header" name="lib/perf_counter.h"/>
<file category="library" name="lib/perf_counter.lib" condition="Cortex-M Arm Compiler"/>
<file category="library" name="lib/libperf_counter_gcc.a" condition="Cortex-M Arm GCC"/>
</files>
<RTE_Components_h>
#define __PERF_COUNTER__
</RTE_Components_h>
</component>
<component Cgroup="perf_counter" Csub="Core" Cvariant="Source" condition="CMSIS-CORE">
<description>A dedicated performance counter for Cortex-M systick.</description>
<files>
<file category="header" name="lib/perf_counter.h"/>
<file category="source" name="perf_counter.c" />
<file category="source" name="systick_wrapper_ual.s" condition="Cortex-M Arm Compiler CMSIS-CORE"/>
<file category="source" name="systick_wrapper_gcc.s" condition="Cortex-M Arm GCC CMSIS-CORE"/>
</files>
<RTE_Components_h>
#define __PERF_COUNTER__
</RTE_Components_h>
</component>
<component Cgroup="perf_counter" Csub="RTX5 Patch" condition="RTX5 Patch">
<description>A Patch for RTX5</description>
<files>
<file category="source" name="lib/perf_os_patch_rtx5.c"/>
</files>
<Pre_Include_Global_h>
//! \brief Enable RTOS Patch for perf_counter
#define __PERF_CNT_USE_RTOS__
</Pre_Include_Global_h>
</component>
<component Cgroup="perf_counter" Csub="FreeRTOS Patch" condition="perf_counter">
<description>A Patch for FreeRTOS</description>
<files>
<file category="source" name="lib/perf_os_patch_freertos.c"/>
</files>
<Pre_Include_Global_h>
//! \brief Enable RTOS Patch for perf_counter
#define __PERF_CNT_USE_RTOS__
#define traceTASK_SWITCHED_OUT_DISABLE
#define traceTASK_SWITCHED_IN_DISABLE
extern void __freertos_evr_on_task_switched_out (void *ptTCB);
extern void __freertos_evr_on_task_switched_in(void *ptTCB, unsigned int uxTopPriority) ;
# define traceTASK_SWITCHED_OUT() \
__freertos_evr_on_task_switched_out(pxCurrentTCB)
# define traceTASK_SWITCHED_IN() \
__freertos_evr_on_task_switched_in(pxCurrentTCB, uxTopReadyPriority)
</Pre_Include_Global_h>
</component>
<component Cgroup="perf_counter" Csub="RT-Thread Patch" condition="perf_counter">
<description>A Patch for RT-Thread</description>
<files>
<file category="source" name="lib/perf_os_patch_rt_thread.c"/>
</files>
<Pre_Include_Global_h>
//! \brief Enable RTOS Patch for perf_counter
#define __PERF_CNT_USE_RTOS__
struct rt_thread;
extern void __rt_thread_scheduler_hook(struct rt_thread *from, struct rt_thread *to);
#define __on_rt_scheduler_hook(from, to) __rt_thread_scheduler_hook((from), (to))
</Pre_Include_Global_h>
</component>
<component Cgroup="perf_counter" Csub="ThreadX Patch" condition="perf_counter">
<description>A Patch for ThreadX</description>
<files>
<file category="source" name="lib/perf_os_patch_threadx.c"/>
</files>
<Pre_Include_Global_h>
//! \brief Enable RTOS Patch for perf_counter
#define __PERF_CNT_USE_RTOS__
#define TX_ENABLE_EXECUTION_CHANGE_NOTIFY
</Pre_Include_Global_h>
</component>
</bundle>
</components>
<!-- optional taxonomy section for defining new component Class and Group names -->
<!--
<taxonomy>
</taxonomy>
-->
</package>