diff --git a/pack/1.2.0-rc0/ArmFault.png b/1.2.0/ArmFault.png similarity index 100% rename from pack/1.2.0-rc0/ArmFault.png rename to 1.2.0/ArmFault.png diff --git a/pack/1.2.0-rc0/CalcMemUsed.png b/1.2.0/CalcMemUsed.png similarity index 100% rename from pack/1.2.0-rc0/CalcMemUsed.png rename to 1.2.0/CalcMemUsed.png diff --git a/pack/1.2.0-rc0/ComponentViewerOverview.png b/1.2.0/ComponentViewerOverview.png similarity index 100% rename from pack/1.2.0-rc0/ComponentViewerOverview.png rename to 1.2.0/ComponentViewerOverview.png diff --git a/pack/1.2.0-rc0/EventOutput1.png b/1.2.0/EventOutput1.png similarity index 100% rename from pack/1.2.0-rc0/EventOutput1.png rename to 1.2.0/EventOutput1.png diff --git a/pack/1.2.0-rc0/EventOutput2.png b/1.2.0/EventOutput2.png similarity index 100% rename from pack/1.2.0-rc0/EventOutput2.png rename to 1.2.0/EventOutput2.png diff --git a/pack/1.2.0-rc0/EventRecorderFilter.png b/1.2.0/EventRecorderFilter.png similarity index 100% rename from pack/1.2.0-rc0/EventRecorderFilter.png rename to 1.2.0/EventRecorderFilter.png diff --git a/pack/1.2.0-rc0/EventRecorderOverview.png b/1.2.0/EventRecorderOverview.png similarity index 100% rename from pack/1.2.0-rc0/EventRecorderOverview.png rename to 1.2.0/EventRecorderOverview.png diff --git a/pack/1.2.0-rc0/EventStatistics_w_Energy.png b/1.2.0/EventStatistics_w_Energy.png similarity index 100% rename from pack/1.2.0-rc0/EventStatistics_w_Energy.png rename to 1.2.0/EventStatistics_w_Energy.png diff --git a/pack/1.2.0-rc0/EventStatistics_wo_Energy.png b/1.2.0/EventStatistics_wo_Energy.png similarity index 100% rename from pack/1.2.0-rc0/EventStatistics_wo_Energy.png rename to 1.2.0/EventStatistics_wo_Energy.png diff --git a/pack/1.2.0-rc0/ExampleProjects.html b/1.2.0/ExampleProjects.html similarity index 100% rename from pack/1.2.0-rc0/ExampleProjects.html rename to 1.2.0/ExampleProjects.html diff --git a/pack/1.2.0-rc0/ExampleProjects.js b/1.2.0/ExampleProjects.js similarity index 100% rename from pack/1.2.0-rc0/ExampleProjects.js rename to 1.2.0/ExampleProjects.js diff --git a/pack/1.2.0-rc0/Fault_CM33_CV_MemManage.png b/1.2.0/Fault_CM33_CV_MemManage.png similarity index 100% rename from pack/1.2.0-rc0/Fault_CM33_CV_MemManage.png rename to 1.2.0/Fault_CM33_CV_MemManage.png diff --git a/pack/1.2.0-rc0/Fault_CM33_CV_NoFault.png b/1.2.0/Fault_CM33_CV_NoFault.png similarity index 100% rename from pack/1.2.0-rc0/Fault_CM33_CV_NoFault.png rename to 1.2.0/Fault_CM33_CV_NoFault.png diff --git a/pack/1.2.0-rc0/Fault_CM33_EvR_MemManage.png b/1.2.0/Fault_CM33_EvR_MemManage.png similarity index 100% rename from pack/1.2.0-rc0/Fault_CM33_EvR_MemManage.png rename to 1.2.0/Fault_CM33_EvR_MemManage.png diff --git a/pack/1.2.0-rc0/Fault_CM33_STDIO_MemManage.png b/1.2.0/Fault_CM33_STDIO_MemManage.png similarity index 100% rename from pack/1.2.0-rc0/Fault_CM33_STDIO_MemManage.png rename to 1.2.0/Fault_CM33_STDIO_MemManage.png diff --git a/pack/1.2.0-rc0/Fault_CM33_UI.png b/1.2.0/Fault_CM33_UI.png similarity index 100% rename from pack/1.2.0-rc0/Fault_CM33_UI.png rename to 1.2.0/Fault_CM33_UI.png diff --git a/pack/1.2.0-rc0/Fault_CM7_UI.png b/1.2.0/Fault_CM7_UI.png similarity index 100% rename from pack/1.2.0-rc0/Fault_CM7_UI.png rename to 1.2.0/Fault_CM7_UI.png diff --git a/pack/1.2.0-rc0/Fault_CM7_eventlist_MemManage.png b/1.2.0/Fault_CM7_eventlist_MemManage.png similarity index 100% rename from pack/1.2.0-rc0/Fault_CM7_eventlist_MemManage.png rename to 1.2.0/Fault_CM7_eventlist_MemManage.png diff --git a/pack/1.2.0-rc0/Fault_STDIO_MemManage.png b/1.2.0/Fault_STDIO_MemManage.png similarity index 100% rename from pack/1.2.0-rc0/Fault_STDIO_MemManage.png rename to 1.2.0/Fault_STDIO_MemManage.png diff --git a/pack/1.2.0-rc0/Fault_create_iram2.png b/1.2.0/Fault_create_iram2.png similarity index 100% rename from pack/1.2.0-rc0/Fault_create_iram2.png rename to 1.2.0/Fault_create_iram2.png diff --git a/pack/1.2.0-rc0/Fault_memory_location.png b/1.2.0/Fault_memory_location.png similarity index 100% rename from pack/1.2.0-rc0/Fault_memory_location.png rename to 1.2.0/Fault_memory_location.png diff --git a/pack/1.2.0-rc0/Fault_set_comp.png b/1.2.0/Fault_set_comp.png similarity index 100% rename from pack/1.2.0-rc0/Fault_set_comp.png rename to 1.2.0/Fault_set_comp.png diff --git a/pack/1.2.0-rc0/Manage_MyTest_SCVD.png b/1.2.0/Manage_MyTest_SCVD.png similarity index 100% rename from pack/1.2.0-rc0/Manage_MyTest_SCVD.png rename to 1.2.0/Manage_MyTest_SCVD.png diff --git a/pack/1.2.0-rc0/Manage_SCVD_Files.png b/1.2.0/Manage_SCVD_Files.png similarity index 100% rename from pack/1.2.0-rc0/Manage_SCVD_Files.png rename to 1.2.0/Manage_SCVD_Files.png diff --git a/pack/1.2.0-rc0/SCVDExample.png b/1.2.0/SCVDExample.png similarity index 100% rename from pack/1.2.0-rc0/SCVDExample.png rename to 1.2.0/SCVDExample.png diff --git a/pack/1.2.0-rc0/SCVD_Format.html b/1.2.0/SCVD_Format.html similarity index 100% rename from pack/1.2.0-rc0/SCVD_Format.html rename to 1.2.0/SCVD_Format.html diff --git a/pack/1.2.0-rc0/SCVD_Format.js b/1.2.0/SCVD_Format.js similarity index 100% rename from pack/1.2.0-rc0/SCVD_Format.js rename to 1.2.0/SCVD_Format.js diff --git a/pack/1.2.0-rc0/SelEventRecorder.png b/1.2.0/SelEventRecorder.png similarity index 100% rename from pack/1.2.0-rc0/SelEventRecorder.png rename to 1.2.0/SelEventRecorder.png diff --git a/pack/1.2.0-rc0/SelSWComp.png b/1.2.0/SelSWComp.png similarity index 100% rename from pack/1.2.0-rc0/SelSWComp.png rename to 1.2.0/SelSWComp.png diff --git a/pack/1.2.0-rc0/StaticOutput.png b/1.2.0/StaticOutput.png similarity index 100% rename from pack/1.2.0-rc0/StaticOutput.png rename to 1.2.0/StaticOutput.png diff --git a/pack/1.2.0-rc0/Symbol_Access.html b/1.2.0/Symbol_Access.html similarity index 100% rename from pack/1.2.0-rc0/Symbol_Access.html rename to 1.2.0/Symbol_Access.html diff --git a/pack/1.2.0-rc0/alert_bold_spec.png b/1.2.0/alert_bold_spec.png similarity index 100% rename from pack/1.2.0-rc0/alert_bold_spec.png rename to 1.2.0/alert_bold_spec.png diff --git a/pack/1.2.0-rc0/annotated.html b/1.2.0/annotated.html similarity index 100% rename from pack/1.2.0-rc0/annotated.html rename to 1.2.0/annotated.html diff --git a/pack/1.2.0-rc0/bc_s.png b/1.2.0/bc_s.png similarity index 100% rename from pack/1.2.0-rc0/bc_s.png rename to 1.2.0/bc_s.png diff --git a/pack/1.2.0-rc0/bc_sd.png b/1.2.0/bc_sd.png similarity index 100% rename from pack/1.2.0-rc0/bc_sd.png rename to 1.2.0/bc_sd.png diff --git a/pack/1.2.0-rc0/bdwn.png b/1.2.0/bdwn.png similarity index 100% rename from pack/1.2.0-rc0/bdwn.png rename to 1.2.0/bdwn.png diff --git a/pack/1.2.0-rc0/builtin_function.html b/1.2.0/builtin_function.html similarity index 100% rename from pack/1.2.0-rc0/builtin_function.html rename to 1.2.0/builtin_function.html diff --git a/pack/1.2.0-rc0/c_spec.png b/1.2.0/c_spec.png similarity index 100% rename from pack/1.2.0-rc0/c_spec.png rename to 1.2.0/c_spec.png diff --git a/pack/1.2.0-rc0/classes.html b/1.2.0/classes.html similarity index 100% rename from pack/1.2.0-rc0/classes.html rename to 1.2.0/classes.html diff --git a/pack/1.2.0-rc0/closed.png b/1.2.0/closed.png similarity index 100% rename from pack/1.2.0-rc0/closed.png rename to 1.2.0/closed.png diff --git a/pack/1.2.0-rc0/cmp_viewer.html b/1.2.0/cmp_viewer.html similarity index 100% rename from pack/1.2.0-rc0/cmp_viewer.html rename to 1.2.0/cmp_viewer.html diff --git a/pack/1.2.0-rc0/cmsis_logo_white_small.png b/1.2.0/cmsis_logo_white_small.png similarity index 100% rename from pack/1.2.0-rc0/cmsis_logo_white_small.png rename to 1.2.0/cmsis_logo_white_small.png diff --git a/pack/1.2.0-rc0/config_wizard.png b/1.2.0/config_wizard.png similarity index 100% rename from pack/1.2.0-rc0/config_wizard.png rename to 1.2.0/config_wizard.png diff --git a/pack/1.2.0-rc0/create_iram2.png b/1.2.0/create_iram2.png similarity index 100% rename from pack/1.2.0-rc0/create_iram2.png rename to 1.2.0/create_iram2.png diff --git a/pack/1.2.0-rc0/d_spec.png b/1.2.0/d_spec.png similarity index 100% rename from pack/1.2.0-rc0/d_spec.png rename to 1.2.0/d_spec.png diff --git a/pack/1.2.0-rc0/darkmode_toggle.js b/1.2.0/darkmode_toggle.js similarity index 100% rename from pack/1.2.0-rc0/darkmode_toggle.js rename to 1.2.0/darkmode_toggle.js diff --git a/pack/1.2.0-rc0/data_type.html b/1.2.0/data_type.html similarity index 100% rename from pack/1.2.0-rc0/data_type.html rename to 1.2.0/data_type.html diff --git a/pack/1.2.0-rc0/dir_2c357711a170e63cbdb32a9298395404.html b/1.2.0/dir_2c357711a170e63cbdb32a9298395404.html similarity index 100% rename from pack/1.2.0-rc0/dir_2c357711a170e63cbdb32a9298395404.html rename to 1.2.0/dir_2c357711a170e63cbdb32a9298395404.html diff --git a/pack/1.2.0-rc0/dir_9824467afefc04d26edffcedda92bdb9.html b/1.2.0/dir_9824467afefc04d26edffcedda92bdb9.html similarity index 100% rename from pack/1.2.0-rc0/dir_9824467afefc04d26edffcedda92bdb9.html rename to 1.2.0/dir_9824467afefc04d26edffcedda92bdb9.html diff --git a/pack/1.2.0-rc0/dir_9b360dd713cb69f97d132f7023f0533f.html b/1.2.0/dir_9b360dd713cb69f97d132f7023f0533f.html similarity index 100% rename from pack/1.2.0-rc0/dir_9b360dd713cb69f97d132f7023f0533f.html rename to 1.2.0/dir_9b360dd713cb69f97d132f7023f0533f.html diff --git a/pack/1.2.0-rc0/dir_9d55212ec500507f31c8f7960ba38f00.html b/1.2.0/dir_9d55212ec500507f31c8f7960ba38f00.html similarity index 100% rename from pack/1.2.0-rc0/dir_9d55212ec500507f31c8f7960ba38f00.html rename to 1.2.0/dir_9d55212ec500507f31c8f7960ba38f00.html diff --git a/pack/1.2.0-rc0/dir_c13aaecf39f1b45fd07fdc13d1567e11.html b/1.2.0/dir_c13aaecf39f1b45fd07fdc13d1567e11.html similarity index 100% rename from pack/1.2.0-rc0/dir_c13aaecf39f1b45fd07fdc13d1567e11.html rename to 1.2.0/dir_c13aaecf39f1b45fd07fdc13d1567e11.html diff --git a/pack/1.2.0-rc0/dir_ef86cccbee7b98f94fd45fb92584910b.html b/1.2.0/dir_ef86cccbee7b98f94fd45fb92584910b.html similarity index 100% rename from pack/1.2.0-rc0/dir_ef86cccbee7b98f94fd45fb92584910b.html rename to 1.2.0/dir_ef86cccbee7b98f94fd45fb92584910b.html diff --git a/pack/1.2.0-rc0/doc.png b/1.2.0/doc.png similarity index 100% rename from pack/1.2.0-rc0/doc.png rename to 1.2.0/doc.png diff --git a/pack/1.2.0-rc0/docd.png b/1.2.0/docd.png similarity index 100% rename from pack/1.2.0-rc0/docd.png rename to 1.2.0/docd.png diff --git a/pack/1.2.0-rc0/doxygen.css b/1.2.0/doxygen.css similarity index 100% rename from pack/1.2.0-rc0/doxygen.css rename to 1.2.0/doxygen.css diff --git a/pack/1.2.0-rc0/doxygen.svg b/1.2.0/doxygen.svg similarity index 100% rename from pack/1.2.0-rc0/doxygen.svg rename to 1.2.0/doxygen.svg diff --git a/pack/1.2.0-rc0/dropdown.png b/1.2.0/dropdown.png similarity index 100% rename from pack/1.2.0-rc0/dropdown.png rename to 1.2.0/dropdown.png diff --git a/pack/1.2.0-rc0/dynsections.js b/1.2.0/dynsections.js similarity index 100% rename from pack/1.2.0-rc0/dynsections.js rename to 1.2.0/dynsections.js diff --git a/pack/1.2.0-rc0/e_spec.png b/1.2.0/e_spec.png similarity index 100% rename from pack/1.2.0-rc0/e_spec.png rename to 1.2.0/e_spec.png diff --git a/pack/1.2.0-rc0/elem_calc.html b/1.2.0/elem_calc.html similarity index 100% rename from pack/1.2.0-rc0/elem_calc.html rename to 1.2.0/elem_calc.html diff --git a/pack/1.2.0-rc0/elem_component.html b/1.2.0/elem_component.html similarity index 100% rename from pack/1.2.0-rc0/elem_component.html rename to 1.2.0/elem_component.html diff --git a/pack/1.2.0-rc0/elem_component_viewer.html b/1.2.0/elem_component_viewer.html similarity index 100% rename from pack/1.2.0-rc0/elem_component_viewer.html rename to 1.2.0/elem_component_viewer.html diff --git a/pack/1.2.0-rc0/elem_event.html b/1.2.0/elem_event.html similarity index 100% rename from pack/1.2.0-rc0/elem_event.html rename to 1.2.0/elem_event.html diff --git a/pack/1.2.0-rc0/elem_event.js b/1.2.0/elem_event.js similarity index 100% rename from pack/1.2.0-rc0/elem_event.js rename to 1.2.0/elem_event.js diff --git a/pack/1.2.0-rc0/elem_event_print.html b/1.2.0/elem_event_print.html similarity index 100% rename from pack/1.2.0-rc0/elem_event_print.html rename to 1.2.0/elem_event_print.html diff --git a/pack/1.2.0-rc0/elem_events.html b/1.2.0/elem_events.html similarity index 100% rename from pack/1.2.0-rc0/elem_events.html rename to 1.2.0/elem_events.html diff --git a/pack/1.2.0-rc0/elem_events.js b/1.2.0/elem_events.js similarity index 100% rename from pack/1.2.0-rc0/elem_events.js rename to 1.2.0/elem_events.js diff --git a/pack/1.2.0-rc0/elem_group.html b/1.2.0/elem_group.html similarity index 100% rename from pack/1.2.0-rc0/elem_group.html rename to 1.2.0/elem_group.html diff --git a/pack/1.2.0-rc0/elem_item.html b/1.2.0/elem_item.html similarity index 100% rename from pack/1.2.0-rc0/elem_item.html rename to 1.2.0/elem_item.html diff --git a/pack/1.2.0-rc0/elem_item.js b/1.2.0/elem_item.js similarity index 100% rename from pack/1.2.0-rc0/elem_item.js rename to 1.2.0/elem_item.js diff --git a/pack/1.2.0-rc0/elem_list.html b/1.2.0/elem_list.html similarity index 100% rename from pack/1.2.0-rc0/elem_list.html rename to 1.2.0/elem_list.html diff --git a/pack/1.2.0-rc0/elem_listout.html b/1.2.0/elem_listout.html similarity index 100% rename from pack/1.2.0-rc0/elem_listout.html rename to 1.2.0/elem_listout.html diff --git a/pack/1.2.0-rc0/elem_member.html b/1.2.0/elem_member.html similarity index 100% rename from pack/1.2.0-rc0/elem_member.html rename to 1.2.0/elem_member.html diff --git a/pack/1.2.0-rc0/elem_objects.html b/1.2.0/elem_objects.html similarity index 100% rename from pack/1.2.0-rc0/elem_objects.html rename to 1.2.0/elem_objects.html diff --git a/pack/1.2.0-rc0/elem_objects.js b/1.2.0/elem_objects.js similarity index 100% rename from pack/1.2.0-rc0/elem_objects.js rename to 1.2.0/elem_objects.js diff --git a/pack/1.2.0-rc0/elem_out.html b/1.2.0/elem_out.html similarity index 100% rename from pack/1.2.0-rc0/elem_out.html rename to 1.2.0/elem_out.html diff --git a/pack/1.2.0-rc0/elem_out.js b/1.2.0/elem_out.js similarity index 100% rename from pack/1.2.0-rc0/elem_out.js rename to 1.2.0/elem_out.js diff --git a/pack/1.2.0-rc0/elem_print.html b/1.2.0/elem_print.html similarity index 100% rename from pack/1.2.0-rc0/elem_print.html rename to 1.2.0/elem_print.html diff --git a/pack/1.2.0-rc0/elem_read.html b/1.2.0/elem_read.html similarity index 100% rename from pack/1.2.0-rc0/elem_read.html rename to 1.2.0/elem_read.html diff --git a/pack/1.2.0-rc0/elem_readlist.html b/1.2.0/elem_readlist.html similarity index 100% rename from pack/1.2.0-rc0/elem_readlist.html rename to 1.2.0/elem_readlist.html diff --git a/pack/1.2.0-rc0/elem_typedefs.html b/1.2.0/elem_typedefs.html similarity index 100% rename from pack/1.2.0-rc0/elem_typedefs.html rename to 1.2.0/elem_typedefs.html diff --git a/pack/1.2.0-rc0/elem_typedefs.js b/1.2.0/elem_typedefs.js similarity index 100% rename from pack/1.2.0-rc0/elem_typedefs.js rename to 1.2.0/elem_typedefs.js diff --git a/pack/1.2.0-rc0/elem_var.html b/1.2.0/elem_var.html similarity index 100% rename from pack/1.2.0-rc0/elem_var.html rename to 1.2.0/elem_var.html diff --git a/pack/1.2.0-rc0/er_memory_location.png b/1.2.0/er_memory_location.png similarity index 100% rename from pack/1.2.0-rc0/er_memory_location.png rename to 1.2.0/er_memory_location.png diff --git a/pack/1.2.0-rc0/er_theory.html b/1.2.0/er_theory.html similarity index 100% rename from pack/1.2.0-rc0/er_theory.html rename to 1.2.0/er_theory.html diff --git a/pack/1.2.0-rc0/er_use.html b/1.2.0/er_use.html similarity index 100% rename from pack/1.2.0-rc0/er_use.html rename to 1.2.0/er_use.html diff --git a/pack/1.2.0-rc0/es_start_stop_w_energy.png b/1.2.0/es_start_stop_w_energy.png similarity index 100% rename from pack/1.2.0-rc0/es_start_stop_w_energy.png rename to 1.2.0/es_start_stop_w_energy.png diff --git a/pack/1.2.0-rc0/ev_stat.html b/1.2.0/ev_stat.html similarity index 100% rename from pack/1.2.0-rc0/ev_stat.html rename to 1.2.0/ev_stat.html diff --git a/pack/1.2.0-rc0/evntlst.html b/1.2.0/evntlst.html similarity index 100% rename from pack/1.2.0-rc0/evntlst.html rename to 1.2.0/evntlst.html diff --git a/pack/1.2.0-rc0/evr.html b/1.2.0/evr.html similarity index 100% rename from pack/1.2.0-rc0/evr.html rename to 1.2.0/evr.html diff --git a/pack/1.2.0-rc0/evr.js b/1.2.0/evr.js similarity index 100% rename from pack/1.2.0-rc0/evr.js rename to 1.2.0/evr.js diff --git a/pack/1.2.0-rc0/extra_navtree.css b/1.2.0/extra_navtree.css similarity index 100% rename from pack/1.2.0-rc0/extra_navtree.css rename to 1.2.0/extra_navtree.css diff --git a/pack/1.2.0-rc0/extra_search.css b/1.2.0/extra_search.css similarity index 100% rename from pack/1.2.0-rc0/extra_search.css rename to 1.2.0/extra_search.css diff --git a/pack/1.2.0-rc0/extra_stylesheet.css b/1.2.0/extra_stylesheet.css similarity index 100% rename from pack/1.2.0-rc0/extra_stylesheet.css rename to 1.2.0/extra_stylesheet.css diff --git a/pack/1.2.0-rc0/extra_tabs.css b/1.2.0/extra_tabs.css similarity index 100% rename from pack/1.2.0-rc0/extra_tabs.css rename to 1.2.0/extra_tabs.css diff --git a/pack/1.2.0-rc0/fault.html b/1.2.0/fault.html similarity index 100% rename from pack/1.2.0-rc0/fault.html rename to 1.2.0/fault.html diff --git a/pack/1.2.0-rc0/fault.js b/1.2.0/fault.js similarity index 100% rename from pack/1.2.0-rc0/fault.js rename to 1.2.0/fault.js diff --git a/pack/1.2.0-rc0/filter_button.png b/1.2.0/filter_button.png similarity index 100% rename from pack/1.2.0-rc0/filter_button.png rename to 1.2.0/filter_button.png diff --git a/pack/1.2.0-rc0/filtering_events.png b/1.2.0/filtering_events.png similarity index 100% rename from pack/1.2.0-rc0/filtering_events.png rename to 1.2.0/filtering_events.png diff --git a/pack/1.2.0-rc0/flt_example_CM33.html b/1.2.0/flt_example_CM33.html similarity index 100% rename from pack/1.2.0-rc0/flt_example_CM33.html rename to 1.2.0/flt_example_CM33.html diff --git a/pack/1.2.0-rc0/flt_example_CM7.html b/1.2.0/flt_example_CM7.html similarity index 100% rename from pack/1.2.0-rc0/flt_example_CM7.html rename to 1.2.0/flt_example_CM7.html diff --git a/pack/1.2.0-rc0/flt_theory.html b/1.2.0/flt_theory.html similarity index 100% rename from pack/1.2.0-rc0/flt_theory.html rename to 1.2.0/flt_theory.html diff --git a/pack/1.2.0-rc0/flt_use.html b/1.2.0/flt_use.html similarity index 100% rename from pack/1.2.0-rc0/flt_use.html rename to 1.2.0/flt_use.html diff --git a/pack/1.2.0-rc0/folderclosed.png b/1.2.0/folderclosed.png similarity index 100% rename from pack/1.2.0-rc0/folderclosed.png rename to 1.2.0/folderclosed.png diff --git a/pack/1.2.0-rc0/folderopen.png b/1.2.0/folderopen.png similarity index 100% rename from pack/1.2.0-rc0/folderopen.png rename to 1.2.0/folderopen.png diff --git a/pack/1.2.0/footer.js b/1.2.0/footer.js similarity index 100% rename from pack/1.2.0/footer.js rename to 1.2.0/footer.js diff --git a/pack/1.2.0-rc0/functions.html b/1.2.0/functions.html similarity index 100% rename from pack/1.2.0-rc0/functions.html rename to 1.2.0/functions.html diff --git a/pack/1.2.0-rc0/functions_vars.html b/1.2.0/functions_vars.html similarity index 100% rename from pack/1.2.0-rc0/functions_vars.html rename to 1.2.0/functions_vars.html diff --git a/pack/1.2.0-rc0/group__EventRecorder__CompNoDefs.html b/1.2.0/group__EventRecorder__CompNoDefs.html similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__CompNoDefs.html rename to 1.2.0/group__EventRecorder__CompNoDefs.html diff --git a/pack/1.2.0-rc0/group__EventRecorder__CompNoDefs.js b/1.2.0/group__EventRecorder__CompNoDefs.js similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__CompNoDefs.js rename to 1.2.0/group__EventRecorder__CompNoDefs.js diff --git a/pack/1.2.0-rc0/group__EventRecorder__Data.html b/1.2.0/group__EventRecorder__Data.html similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__Data.html rename to 1.2.0/group__EventRecorder__Data.html diff --git a/pack/1.2.0-rc0/group__EventRecorder__Data.js b/1.2.0/group__EventRecorder__Data.js similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__Data.js rename to 1.2.0/group__EventRecorder__Data.js diff --git a/pack/1.2.0-rc0/group__EventRecorder__Setup.html b/1.2.0/group__EventRecorder__Setup.html similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__Setup.html rename to 1.2.0/group__EventRecorder__Setup.html diff --git a/pack/1.2.0-rc0/group__EventRecorder__Setup.js b/1.2.0/group__EventRecorder__Setup.js similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__Setup.js rename to 1.2.0/group__EventRecorder__Setup.js diff --git a/pack/1.2.0-rc0/group__EventRecorder__Time.html b/1.2.0/group__EventRecorder__Time.html similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__Time.html rename to 1.2.0/group__EventRecorder__Time.html diff --git a/pack/1.2.0-rc0/group__EventRecorder__Time.js b/1.2.0/group__EventRecorder__Time.js similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__Time.js rename to 1.2.0/group__EventRecorder__Time.js diff --git a/pack/1.2.0-rc0/group__EventRecorder__leveldefs.html b/1.2.0/group__EventRecorder__leveldefs.html similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__leveldefs.html rename to 1.2.0/group__EventRecorder__leveldefs.html diff --git a/pack/1.2.0-rc0/group__EventRecorder__leveldefs.js b/1.2.0/group__EventRecorder__leveldefs.js similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__leveldefs.js rename to 1.2.0/group__EventRecorder__leveldefs.js diff --git a/pack/1.2.0-rc0/group__EventRecorder__recdefs.html b/1.2.0/group__EventRecorder__recdefs.html similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__recdefs.html rename to 1.2.0/group__EventRecorder__recdefs.html diff --git a/pack/1.2.0-rc0/group__EventRecorder__recdefs.js b/1.2.0/group__EventRecorder__recdefs.js similarity index 100% rename from pack/1.2.0-rc0/group__EventRecorder__recdefs.js rename to 1.2.0/group__EventRecorder__recdefs.js diff --git a/pack/1.2.0-rc0/group__Event__Execution__Statistic.html b/1.2.0/group__Event__Execution__Statistic.html similarity index 100% rename from pack/1.2.0-rc0/group__Event__Execution__Statistic.html rename to 1.2.0/group__Event__Execution__Statistic.html diff --git a/pack/1.2.0-rc0/group__Event__Execution__Statistic.js b/1.2.0/group__Event__Execution__Statistic.js similarity index 100% rename from pack/1.2.0-rc0/group__Event__Execution__Statistic.js rename to 1.2.0/group__Event__Execution__Statistic.js diff --git a/pack/1.2.0-rc0/group__Fault__Record.html b/1.2.0/group__Fault__Record.html similarity index 100% rename from pack/1.2.0-rc0/group__Fault__Record.html rename to 1.2.0/group__Fault__Record.html diff --git a/pack/1.2.0-rc0/group__Fault__Record.js b/1.2.0/group__Fault__Record.js similarity index 100% rename from pack/1.2.0-rc0/group__Fault__Record.js rename to 1.2.0/group__Fault__Record.js diff --git a/pack/1.2.0-rc0/group__Fault__Storage.html b/1.2.0/group__Fault__Storage.html similarity index 100% rename from pack/1.2.0-rc0/group__Fault__Storage.html rename to 1.2.0/group__Fault__Storage.html diff --git a/pack/1.2.0-rc0/group__Fault__Storage.js b/1.2.0/group__Fault__Storage.js similarity index 100% rename from pack/1.2.0-rc0/group__Fault__Storage.js rename to 1.2.0/group__Fault__Storage.js diff --git a/pack/1.2.0-rc0/group__Fault__Storage__Macros.html b/1.2.0/group__Fault__Storage__Macros.html similarity index 100% rename from pack/1.2.0-rc0/group__Fault__Storage__Macros.html rename to 1.2.0/group__Fault__Storage__Macros.html diff --git a/pack/1.2.0-rc0/group__Fault__Storage__Macros.js b/1.2.0/group__Fault__Storage__Macros.js similarity index 100% rename from pack/1.2.0-rc0/group__Fault__Storage__Macros.js rename to 1.2.0/group__Fault__Storage__Macros.js diff --git a/pack/1.2.0-rc0/group__Ref__EventRecorder.html b/1.2.0/group__Ref__EventRecorder.html similarity index 100% rename from pack/1.2.0-rc0/group__Ref__EventRecorder.html rename to 1.2.0/group__Ref__EventRecorder.html diff --git a/pack/1.2.0-rc0/group__Ref__EventRecorder.js b/1.2.0/group__Ref__EventRecorder.js similarity index 100% rename from pack/1.2.0-rc0/group__Ref__EventRecorder.js rename to 1.2.0/group__Ref__EventRecorder.js diff --git a/pack/1.2.0-rc0/group__Ref__Fault.html b/1.2.0/group__Ref__Fault.html similarity index 100% rename from pack/1.2.0-rc0/group__Ref__Fault.html rename to 1.2.0/group__Ref__Fault.html diff --git a/pack/1.2.0-rc0/group__Ref__Fault.js b/1.2.0/group__Ref__Fault.js similarity index 100% rename from pack/1.2.0-rc0/group__Ref__Fault.js rename to 1.2.0/group__Ref__Fault.js diff --git a/pack/1.2.0-rc0/i_spec.png b/1.2.0/i_spec.png similarity index 100% rename from pack/1.2.0-rc0/i_spec.png rename to 1.2.0/i_spec.png diff --git a/pack/1.2.0-rc0/index.html b/1.2.0/index.html similarity index 100% rename from pack/1.2.0-rc0/index.html rename to 1.2.0/index.html diff --git a/pack/1.2.0-rc0/index.js b/1.2.0/index.js similarity index 100% rename from pack/1.2.0-rc0/index.js rename to 1.2.0/index.js diff --git a/pack/1.2.0-rc0/jquery.js b/1.2.0/jquery.js similarity index 100% rename from pack/1.2.0-rc0/jquery.js rename to 1.2.0/jquery.js diff --git a/pack/1.2.0-rc0/modules.html b/1.2.0/modules.html similarity index 100% rename from pack/1.2.0-rc0/modules.html rename to 1.2.0/modules.html diff --git a/pack/1.2.0-rc0/modules.js b/1.2.0/modules.js similarity index 100% rename from pack/1.2.0-rc0/modules.js rename to 1.2.0/modules.js diff --git a/pack/1.2.0-rc0/n_spec.png b/1.2.0/n_spec.png similarity index 100% rename from pack/1.2.0-rc0/n_spec.png rename to 1.2.0/n_spec.png diff --git a/pack/1.2.0-rc0/nav_f.png b/1.2.0/nav_f.png similarity index 100% rename from pack/1.2.0-rc0/nav_f.png rename to 1.2.0/nav_f.png diff --git a/pack/1.2.0-rc0/nav_fd.png b/1.2.0/nav_fd.png similarity index 100% rename from pack/1.2.0-rc0/nav_fd.png rename to 1.2.0/nav_fd.png diff --git a/pack/1.2.0-rc0/nav_g.png b/1.2.0/nav_g.png similarity index 100% rename from pack/1.2.0-rc0/nav_g.png rename to 1.2.0/nav_g.png diff --git a/pack/1.2.0-rc0/nav_h.png b/1.2.0/nav_h.png similarity index 100% rename from pack/1.2.0-rc0/nav_h.png rename to 1.2.0/nav_h.png diff --git a/pack/1.2.0-rc0/nav_hd.png b/1.2.0/nav_hd.png similarity index 100% rename from pack/1.2.0-rc0/nav_hd.png rename to 1.2.0/nav_hd.png diff --git a/pack/1.2.0-rc0/navtree.css b/1.2.0/navtree.css similarity index 100% rename from pack/1.2.0-rc0/navtree.css rename to 1.2.0/navtree.css diff --git a/pack/1.2.0-rc0/navtree.js b/1.2.0/navtree.js similarity index 100% rename from pack/1.2.0-rc0/navtree.js rename to 1.2.0/navtree.js diff --git a/pack/1.2.0-rc0/navtreedata.js b/1.2.0/navtreedata.js similarity index 100% rename from pack/1.2.0-rc0/navtreedata.js rename to 1.2.0/navtreedata.js diff --git a/pack/1.2.0-rc0/navtreeindex0.js b/1.2.0/navtreeindex0.js similarity index 100% rename from pack/1.2.0-rc0/navtreeindex0.js rename to 1.2.0/navtreeindex0.js diff --git a/pack/1.2.0-rc0/open.png b/1.2.0/open.png similarity index 100% rename from pack/1.2.0-rc0/open.png rename to 1.2.0/open.png diff --git a/pack/1.2.0-rc0/pages.html b/1.2.0/pages.html similarity index 100% rename from pack/1.2.0-rc0/pages.html rename to 1.2.0/pages.html diff --git a/pack/1.2.0-rc0/print_spec.png b/1.2.0/print_spec.png similarity index 100% rename from pack/1.2.0-rc0/print_spec.png rename to 1.2.0/print_spec.png diff --git a/pack/1.2.0-rc0/ram_for_algorithm_area.png b/1.2.0/ram_for_algorithm_area.png similarity index 100% rename from pack/1.2.0-rc0/ram_for_algorithm_area.png rename to 1.2.0/ram_for_algorithm_area.png diff --git a/pack/1.2.0-rc0/reset_and_run.png b/1.2.0/reset_and_run.png similarity index 100% rename from pack/1.2.0-rc0/reset_and_run.png rename to 1.2.0/reset_and_run.png diff --git a/pack/1.2.0-rc0/resize.js b/1.2.0/resize.js similarity index 100% rename from pack/1.2.0-rc0/resize.js rename to 1.2.0/resize.js diff --git a/pack/1.2.0/rev_hist.html b/1.2.0/rev_hist.html similarity index 100% rename from pack/1.2.0/rev_hist.html rename to 1.2.0/rev_hist.html diff --git a/pack/1.2.0-rc0/scvd_evt_stat.html b/1.2.0/scvd_evt_stat.html similarity index 100% rename from pack/1.2.0-rc0/scvd_evt_stat.html rename to 1.2.0/scvd_evt_stat.html diff --git a/pack/1.2.0-rc0/scvd_expression.html b/1.2.0/scvd_expression.html similarity index 100% rename from pack/1.2.0-rc0/scvd_expression.html rename to 1.2.0/scvd_expression.html diff --git a/pack/1.2.0-rc0/search/all_0.js b/1.2.0/search/all_0.js similarity index 100% rename from pack/1.2.0-rc0/search/all_0.js rename to 1.2.0/search/all_0.js diff --git a/pack/1.2.0-rc0/search/all_1.js b/1.2.0/search/all_1.js similarity index 100% rename from pack/1.2.0-rc0/search/all_1.js rename to 1.2.0/search/all_1.js diff --git a/pack/1.2.0-rc0/search/all_2.js b/1.2.0/search/all_2.js similarity index 100% rename from pack/1.2.0-rc0/search/all_2.js rename to 1.2.0/search/all_2.js diff --git a/pack/1.2.0-rc0/search/all_3.js b/1.2.0/search/all_3.js similarity index 100% rename from pack/1.2.0-rc0/search/all_3.js rename to 1.2.0/search/all_3.js diff --git a/pack/1.2.0-rc0/search/all_4.js b/1.2.0/search/all_4.js similarity index 100% rename from pack/1.2.0-rc0/search/all_4.js rename to 1.2.0/search/all_4.js diff --git a/pack/1.2.0-rc0/search/all_5.js b/1.2.0/search/all_5.js similarity index 100% rename from pack/1.2.0-rc0/search/all_5.js rename to 1.2.0/search/all_5.js diff --git a/pack/1.2.0-rc0/search/all_6.js b/1.2.0/search/all_6.js similarity index 100% rename from pack/1.2.0-rc0/search/all_6.js rename to 1.2.0/search/all_6.js diff --git a/pack/1.2.0-rc0/search/all_7.js b/1.2.0/search/all_7.js similarity index 100% rename from pack/1.2.0-rc0/search/all_7.js rename to 1.2.0/search/all_7.js diff --git a/pack/1.2.0-rc0/search/all_8.js b/1.2.0/search/all_8.js similarity index 100% rename from pack/1.2.0-rc0/search/all_8.js rename to 1.2.0/search/all_8.js diff --git a/pack/1.2.0-rc0/search/all_9.js b/1.2.0/search/all_9.js similarity index 100% rename from pack/1.2.0-rc0/search/all_9.js rename to 1.2.0/search/all_9.js diff --git a/pack/1.2.0-rc0/search/all_a.js b/1.2.0/search/all_a.js similarity index 100% rename from pack/1.2.0-rc0/search/all_a.js rename to 1.2.0/search/all_a.js diff --git a/pack/1.2.0-rc0/search/all_b.js b/1.2.0/search/all_b.js similarity index 100% rename from pack/1.2.0-rc0/search/all_b.js rename to 1.2.0/search/all_b.js diff --git a/pack/1.2.0-rc0/search/all_c.js b/1.2.0/search/all_c.js similarity index 100% rename from pack/1.2.0-rc0/search/all_c.js rename to 1.2.0/search/all_c.js diff --git a/pack/1.2.0-rc0/search/all_d.js b/1.2.0/search/all_d.js similarity index 100% rename from pack/1.2.0-rc0/search/all_d.js rename to 1.2.0/search/all_d.js diff --git a/pack/1.2.0-rc0/search/all_e.js b/1.2.0/search/all_e.js similarity index 100% rename from pack/1.2.0-rc0/search/all_e.js rename to 1.2.0/search/all_e.js diff --git a/pack/1.2.0-rc0/search/classes_0.js b/1.2.0/search/classes_0.js similarity index 100% rename from pack/1.2.0-rc0/search/classes_0.js rename to 1.2.0/search/classes_0.js diff --git a/pack/1.2.0-rc0/search/close.svg b/1.2.0/search/close.svg similarity index 100% rename from pack/1.2.0-rc0/search/close.svg rename to 1.2.0/search/close.svg diff --git a/pack/1.2.0-rc0/search/functions_0.js b/1.2.0/search/functions_0.js similarity index 100% rename from pack/1.2.0-rc0/search/functions_0.js rename to 1.2.0/search/functions_0.js diff --git a/pack/1.2.0-rc0/search/functions_1.js b/1.2.0/search/functions_1.js similarity index 100% rename from pack/1.2.0-rc0/search/functions_1.js rename to 1.2.0/search/functions_1.js diff --git a/pack/1.2.0-rc0/search/groups_0.js b/1.2.0/search/groups_0.js similarity index 100% rename from pack/1.2.0-rc0/search/groups_0.js rename to 1.2.0/search/groups_0.js diff --git a/pack/1.2.0-rc0/search/groups_1.js b/1.2.0/search/groups_1.js similarity index 100% rename from pack/1.2.0-rc0/search/groups_1.js rename to 1.2.0/search/groups_1.js diff --git a/pack/1.2.0-rc0/search/groups_2.js b/1.2.0/search/groups_2.js similarity index 100% rename from pack/1.2.0-rc0/search/groups_2.js rename to 1.2.0/search/groups_2.js diff --git a/pack/1.2.0-rc0/search/groups_3.js b/1.2.0/search/groups_3.js similarity index 100% rename from pack/1.2.0-rc0/search/groups_3.js rename to 1.2.0/search/groups_3.js diff --git a/pack/1.2.0-rc0/search/groups_4.js b/1.2.0/search/groups_4.js similarity index 100% rename from pack/1.2.0-rc0/search/groups_4.js rename to 1.2.0/search/groups_4.js diff --git a/pack/1.2.0-rc0/search/mag.svg b/1.2.0/search/mag.svg similarity index 100% rename from pack/1.2.0-rc0/search/mag.svg rename to 1.2.0/search/mag.svg diff --git a/pack/1.2.0-rc0/search/mag_d.svg b/1.2.0/search/mag_d.svg similarity index 100% rename from pack/1.2.0-rc0/search/mag_d.svg rename to 1.2.0/search/mag_d.svg diff --git a/pack/1.2.0-rc0/search/mag_sel.svg b/1.2.0/search/mag_sel.svg similarity index 100% rename from pack/1.2.0-rc0/search/mag_sel.svg rename to 1.2.0/search/mag_sel.svg diff --git a/pack/1.2.0-rc0/search/mag_seld.svg b/1.2.0/search/mag_seld.svg similarity index 100% rename from pack/1.2.0-rc0/search/mag_seld.svg rename to 1.2.0/search/mag_seld.svg diff --git a/pack/1.2.0-rc0/search/pages_0.js b/1.2.0/search/pages_0.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_0.js rename to 1.2.0/search/pages_0.js diff --git a/pack/1.2.0-rc0/search/pages_1.js b/1.2.0/search/pages_1.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_1.js rename to 1.2.0/search/pages_1.js diff --git a/pack/1.2.0-rc0/search/pages_2.js b/1.2.0/search/pages_2.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_2.js rename to 1.2.0/search/pages_2.js diff --git a/pack/1.2.0-rc0/search/pages_3.js b/1.2.0/search/pages_3.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_3.js rename to 1.2.0/search/pages_3.js diff --git a/pack/1.2.0-rc0/search/pages_4.js b/1.2.0/search/pages_4.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_4.js rename to 1.2.0/search/pages_4.js diff --git a/pack/1.2.0-rc0/search/pages_5.js b/1.2.0/search/pages_5.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_5.js rename to 1.2.0/search/pages_5.js diff --git a/pack/1.2.0-rc0/search/pages_6.js b/1.2.0/search/pages_6.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_6.js rename to 1.2.0/search/pages_6.js diff --git a/pack/1.2.0-rc0/search/pages_7.js b/1.2.0/search/pages_7.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_7.js rename to 1.2.0/search/pages_7.js diff --git a/pack/1.2.0-rc0/search/pages_8.js b/1.2.0/search/pages_8.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_8.js rename to 1.2.0/search/pages_8.js diff --git a/pack/1.2.0-rc0/search/pages_9.js b/1.2.0/search/pages_9.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_9.js rename to 1.2.0/search/pages_9.js diff --git a/pack/1.2.0-rc0/search/pages_a.js b/1.2.0/search/pages_a.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_a.js rename to 1.2.0/search/pages_a.js diff --git a/pack/1.2.0-rc0/search/pages_b.js b/1.2.0/search/pages_b.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_b.js rename to 1.2.0/search/pages_b.js diff --git a/pack/1.2.0-rc0/search/pages_c.js b/1.2.0/search/pages_c.js similarity index 100% rename from pack/1.2.0-rc0/search/pages_c.js rename to 1.2.0/search/pages_c.js diff --git a/pack/1.2.0-rc0/search/search.css b/1.2.0/search/search.css similarity index 100% rename from pack/1.2.0-rc0/search/search.css rename to 1.2.0/search/search.css diff --git a/pack/1.2.0-rc0/search/search.js b/1.2.0/search/search.js similarity index 100% rename from pack/1.2.0-rc0/search/search.js rename to 1.2.0/search/search.js diff --git a/pack/1.2.0-rc0/search/searchdata.js b/1.2.0/search/searchdata.js similarity index 100% rename from pack/1.2.0-rc0/search/searchdata.js rename to 1.2.0/search/searchdata.js diff --git a/pack/1.2.0-rc0/search/variables_0.js b/1.2.0/search/variables_0.js similarity index 100% rename from pack/1.2.0-rc0/search/variables_0.js rename to 1.2.0/search/variables_0.js diff --git a/pack/1.2.0-rc0/search/variables_1.js b/1.2.0/search/variables_1.js similarity index 100% rename from pack/1.2.0-rc0/search/variables_1.js rename to 1.2.0/search/variables_1.js diff --git a/pack/1.2.0-rc0/search/variables_2.js b/1.2.0/search/variables_2.js similarity index 100% rename from pack/1.2.0-rc0/search/variables_2.js rename to 1.2.0/search/variables_2.js diff --git a/pack/1.2.0-rc0/search/variables_3.js b/1.2.0/search/variables_3.js similarity index 100% rename from pack/1.2.0-rc0/search/variables_3.js rename to 1.2.0/search/variables_3.js diff --git a/pack/1.2.0-rc0/search/variables_4.js b/1.2.0/search/variables_4.js similarity index 100% rename from pack/1.2.0-rc0/search/variables_4.js rename to 1.2.0/search/variables_4.js diff --git a/pack/1.2.0-rc0/search/variables_5.js b/1.2.0/search/variables_5.js similarity index 100% rename from pack/1.2.0-rc0/search/variables_5.js rename to 1.2.0/search/variables_5.js diff --git a/pack/1.2.0-rc0/search/variables_6.js b/1.2.0/search/variables_6.js similarity index 100% rename from pack/1.2.0-rc0/search/variables_6.js rename to 1.2.0/search/variables_6.js diff --git a/pack/1.2.0-rc0/splitbar.png b/1.2.0/splitbar.png similarity index 100% rename from pack/1.2.0-rc0/splitbar.png rename to 1.2.0/splitbar.png diff --git a/pack/1.2.0-rc0/splitbard.png b/1.2.0/splitbard.png similarity index 100% rename from pack/1.2.0-rc0/splitbard.png rename to 1.2.0/splitbard.png diff --git a/pack/1.2.0-rc0/sync_off.png b/1.2.0/sync_off.png similarity index 100% rename from pack/1.2.0-rc0/sync_off.png rename to 1.2.0/sync_off.png diff --git a/pack/1.2.0-rc0/sync_on.png b/1.2.0/sync_on.png similarity index 100% rename from pack/1.2.0-rc0/sync_on.png rename to 1.2.0/sync_on.png diff --git a/pack/1.2.0-rc0/t_spec.png b/1.2.0/t_spec.png similarity index 100% rename from pack/1.2.0-rc0/t_spec.png rename to 1.2.0/t_spec.png diff --git a/pack/1.2.0-rc0/tab_a.png b/1.2.0/tab_a.png similarity index 100% rename from pack/1.2.0-rc0/tab_a.png rename to 1.2.0/tab_a.png diff --git a/pack/1.2.0-rc0/tab_ad.png b/1.2.0/tab_ad.png similarity index 100% rename from pack/1.2.0-rc0/tab_ad.png rename to 1.2.0/tab_ad.png diff --git a/pack/1.2.0-rc0/tab_b.png b/1.2.0/tab_b.png similarity index 100% rename from pack/1.2.0-rc0/tab_b.png rename to 1.2.0/tab_b.png diff --git a/pack/1.2.0-rc0/tab_bd.png b/1.2.0/tab_bd.png similarity index 100% rename from pack/1.2.0-rc0/tab_bd.png rename to 1.2.0/tab_bd.png diff --git a/pack/1.2.0-rc0/tab_h.png b/1.2.0/tab_h.png similarity index 100% rename from pack/1.2.0-rc0/tab_h.png rename to 1.2.0/tab_h.png diff --git a/pack/1.2.0-rc0/tab_hd.png b/1.2.0/tab_hd.png similarity index 100% rename from pack/1.2.0-rc0/tab_hd.png rename to 1.2.0/tab_hd.png diff --git a/pack/1.2.0-rc0/tab_s.png b/1.2.0/tab_s.png similarity index 100% rename from pack/1.2.0-rc0/tab_s.png rename to 1.2.0/tab_s.png diff --git a/pack/1.2.0-rc0/tab_sd.png b/1.2.0/tab_sd.png similarity index 100% rename from pack/1.2.0-rc0/tab_sd.png rename to 1.2.0/tab_sd.png diff --git a/pack/1.2.0-rc0/tabs.css b/1.2.0/tabs.css similarity index 100% rename from pack/1.2.0-rc0/tabs.css rename to 1.2.0/tabs.css diff --git a/pack/1.2.0-rc0/tabs.js b/1.2.0/tabs.js similarity index 100% rename from pack/1.2.0-rc0/tabs.js rename to 1.2.0/tabs.js diff --git a/pack/1.2.0-rc0/value_output.html b/1.2.0/value_output.html similarity index 100% rename from pack/1.2.0-rc0/value_output.html rename to 1.2.0/value_output.html diff --git a/pack/1.2.0-rc0/version.css b/1.2.0/version.css similarity index 100% rename from pack/1.2.0-rc0/version.css rename to 1.2.0/version.css diff --git a/pack/1.2.0-rc0/xml_elements.html b/1.2.0/xml_elements.html similarity index 100% rename from pack/1.2.0-rc0/xml_elements.html rename to 1.2.0/xml_elements.html diff --git a/pack/1.2.0-rc0/xml_elements.js b/1.2.0/xml_elements.js similarity index 100% rename from pack/1.2.0-rc0/xml_elements.js rename to 1.2.0/xml_elements.js diff --git a/latest b/latest index 9504750..867e524 120000 --- a/latest +++ b/latest @@ -1 +1 @@ -pack/1.2.0 \ No newline at end of file +1.2.0 \ No newline at end of file diff --git a/pack/1.2.0-rc0/footer.js b/pack/1.2.0-rc0/footer.js deleted file mode 100644 index 35d4276..0000000 --- a/pack/1.2.0-rc0/footer.js +++ /dev/null @@ -1,7 +0,0 @@ -function writeHeader() { - document.write('Version 1.2.0-rc0'); -}; - -function writeFooter() { - document.write('Generated on Mon May 13 2024 11:10:18 for CMSIS-View 1.2.0-rc0. Copyright © 2024 Arm Limited (or its affiliates). All rights reserved.'); -}; diff --git a/pack/1.2.0-rc0/rev_hist.html b/pack/1.2.0-rc0/rev_hist.html deleted file mode 100644 index e612105..0000000 --- a/pack/1.2.0-rc0/rev_hist.html +++ /dev/null @@ -1,181 +0,0 @@ - - - -
- - - -CMSIS-View version is officially updated upon releases of the CMSIS-View pack.
-The table below provides information about the changes delivered with specific versions of CMSIS-View.
-Version | Description |
---|---|
v1.2.0-rc0 |
|
v1.1.0 |
|
v1.0.0 | Initial release of EventRecorder and Fault components as replacement for Keil.ARM-Compiler pack.
|
CMSIS-View provides several example projects that demonstrate the usage of CMSIS-View software components in embedded applications. The projects are available in the Examples/
directory and are also part of the CMSIS-View pack.
Example Project | Description |
---|---|
EventStatistic | Shows the usage of start/stop events for statistical code profiling using Arm Virtual Hardware (AVH) processor simulation. |
Fault/VHT_MPS2_Cortex-M7 | Shows the usage of the Fault component on a Cortex-M7 Arm Virtual Hardware (AVH) processor simulation. |
Fault/B-U585I-IOT02A | Shows the usage of the Fault component on a Cortex-M33 with TrustZone. This example runs on STMicroelectronics B-U585I-IOT02A evaluation board. |
Other examples with CMSIS-View support can be also found in various CMSIS packs with device support, BSP and software components. For example CMSIS-RTX, MDK Middleware and others, or also in GitHub projects at https://github.com/Arm-Examples.
-The SCVD (Software Component View Description) files are formatted in XML and based on the schema file Component_Viewer.xsd.
-The SCVD file format is described in the following sections:
-The schema file Component_Viewer.xsd. specifies the XML format. Use this schema file together with XML tools for validating an *.scvd file.
-The following steps explain how to use an *.SCVD file in the µVision Debugger. Other tools might require different steps:
-Software components which are part of Software Packs may add related *.SCVD files directly in the Package Description file (*.pdsc) using the <file> element category other. In the *.pdsc file example below Network.scvd is added to the debugger when the component :Network:Core is selected. For details, refer to CMSIS-Pack - Pack Description (*.PDSC) Format.
-
-
The SCVD interpreter can access symbol information from the user application that is loaded into the debugger. This symbol information is used to:
Symbols can be referenced with:
This symbol information is used to read the content of static and public variables.
-The SCVD interpreter supports the scalar and complex data types. Complex data types such as struct and enum are defined using the element typedef. The element read accesses variables or arrays from the target system. The element readlist accesses linked lists or dynamic arrays from the target system.
-Example:
-The following example code is an excerpt from the FreeRTOS source code. The CMSIS-RTOS compliant FreeRTOS implementation is available as a Software Pack.
-C Code:
.SCVD file XML elements:
CARM_FaultInfo_t | Fault information structure type definition |
CARM_FaultInfo_t.Content | |
CARM_FaultInfo_t.ExceptionState | |
CARM_FaultInfo_t.FaultRegisters | |
CARM_FaultInfo_t.Registers | |
CARM_FaultInfo_t.Version |
Read CPU register value.
-The SCVD interpreter has the following built-in functions for calculation of stack memory usage, access to CPU registers and application program symbols.
-Function Name | Description |
---|---|
__CalcMemUsed | Provide memory usage information for stack area in user application program. |
__FindSymbol | Get address value of a symbol in user application program. |
__GetRegVal | Read the value of processor register from the target processor. |
__Offset_of | Get offset of type member defined with the typedef. |
__size_of | Number of elements of an array defined by a symbol in user application. |
__Symbol_exists | Check if a specific symbol exists in the user application program. |
-
Provide memory usage information for stack area in user application program.
-StackAddress | Start address of memory area |
StackSize | Size of memory area in Bytes |
FillPattern | Initial value of memory area, used to identify memory usage |
MagicValue | Initial value at start address of memory area, used to identify memory (stack) overflow |
The function provides information about the memory usage of a stack area and is typically applied to calculate the utilization of RTOS thread stacks. It assumes that the memory has been filled with a pattern value. Optionally there might be a value (called magic value) at the start of the memory that is used to detect stack overflows.
-Example 1
-C source file
*.SCVD file
Output
Example 2
-Typical usage with an RTOS thread control block.
--
Get address value of a symbol in the user application program.
-symbol_name | Reference to a symbol (examples: "main", "os_active_TCB", "tasks.c/xSchedulerRunning"). |
The function searches for a symbol and returns the address value of the symbol in the user application.
-C source file
*.SCVD file
Output
-
__GetRegVal | Read the value of processor register from the target processor.
-RegisterName | Pointer to the name of a CPU register: "PSP", "MSP", .... |
The function reads the value of a CPU register.
-Register Name | Description |
---|---|
R0 - R12 | General-purpose registers |
R13 | Stack pointer (SP) |
R14 | Link Register (LR) |
R15 | Program Counter (PC) |
XPSR | Combined Program Status Register |
MSP | Main Stack Pointer |
PSP | Process Stack Pointer |
BASEPRI | Base Priority Mask Register |
PRIMASK | Exception Mask Register |
FAULTMASK | Fault Mask Register |
CONTROL | Control Register |
Domain specifier x is required on ARMv8-M architecture for some registers to specify Non-Secure (x=NS) or Secure (x=S) access domain. Names of these registers then become as follows:
-Register Name | Description |
---|---|
MSP_x | Main Stack Pointer |
PSP_x | Process Stack Pointer |
MSPLIM_x | Main Stack Pointer Limit Register |
PSPLIM_x | Process Stack Pointer Limit Register |
BASEPRI_x | Base Priority Mask Register |
PRIMASK_x | Exception Mask Register |
FAULTMASK_x | Fault Mask Register |
CONTROL_x | Control Register |
Example:
Search for symbol
symbol_name | Reference to a symbol (examples: "main", "os_active_TCB", "tasks.c/xSchedulerRunning"). |
The function searches for a debug symbol in the loaded user application.
-and returns 1 when the symbol was found, otherwise 0 for false.
-Get offset of type member
typedef_mem_name | Is the member name of a specified type and has the form typedef_name:typedef_member_name. |
The function returns the offset value of the specified typedef member. When using a <typedef> element with the import attribute, __Offset_of returns for members that are defined in the SCVD file but not present in the compiled image the value -1. The value -1 indicates that a member does not exist in the image.
-Example:
Number of elements of an array defined by a symbol in user application
symbol_name | Reference to a symbol (examples: "main", "os_active_TCB", "tasks.c/xSchedulerRunning"). |
The function searches for a debug symbol in the loaded user application. If the symbol is found it returns the number of elements of an array that is addressed by this symbol. If the symbol is not found, an error message is displayed.
-Example:
-User application code (file MyTest.c):
The following statements in the SCVD file output the number of elements of each variable. For 'MyList' the value is 20. The value 20 for 'MyVar' is only displayed when the variable exists.
-The Component Viewer reads specific memory locations from the target hardware using a standard debug unit that is connected via JTAG or SWD to the CoreSight Debug Access Port (DAP). The address of these memory locations is typically defined by symbols that represent variables, arrays, or starting point of linked lists. The *.SCVD file specifies these symbols and customizes the formatting in the Component Viewer window of the debugger.
-Component Viewer Usage Example provides instructions on how to enable Component Viewer in a project.
-Benefits of the Component Viewer:
-The following steps enable views for static information of software components in the µVision debugger. Other tools might use different ways to accomplish this.
-For User Code:
-For Pre-annotated software components:
-The software packs for MDK-Middleware, CMSIS, and CMSIS-FreeRTOS already contain the relevant *.SCVD files.
-For examples on how to write SCVD files, refer to the Examples section.
-The *.SCVD file can be used to format static information of the application using the /component_viewer/objects.
-Example code that is stored in the file MyTest.c (the file name is important for static variables).
-The following MyTest.scvd file reads static program information from the variables in the above code snippet:
-Adding the file in the µVision debugger
-In the µVision debugger, this *.SCVD file is specified in the dialog Options for Target -> Debug -> Manage Component Viewer Description Files. Click on Add Component Viewer Description File and add the related *.SCVD file.
-Using the SCVD file, µVision debugger shows static information about the program. The related view opens with View - Watch Windows - MyProgram.
-The following scalar data types are supported and can be used in read, typedef, and var elements. read and var also support arrays based on scalar data types.
-Table with supported scalar types:
-Data Type | Description |
---|---|
uint8_t | unsigned char (8-bit) |
int8_t | signed char (8-bit) |
uint16_t | unsigned short (16-bit) |
int16_t | signed short (16-bit) |
uint32_t | unsigned int (32-bit) |
int32_t | signed int (32-bit) |
uint64_t | unsigned long long (64-bit) |
int64_t | signed long long (64-bit) |
float | single precision floating number (32-bit) |
double | double precision floating number (64-bit) |
Code Example
Complex data types are defined using a typedef element and can be used in read, readlist, and var elements.
-var and read define a single variable or array based on a data type.
-readlist defines a list of variables or arrays. The first instance of <readlist name="var">
will define 'var', the following use of <readlist name="var">
will use the definition.
-Directories | |
directory | Include |
Execute calculations using Expressions.
-Parent Element | Element Chain | ||
---|---|---|---|
object | /component_viewer/objects/object | ||
list | /component_viewer/objects/object/.../list | ||
Attributes | Description | Type | Use |
cond | Conditional execution: element is executed when expression result is not 0. Default value is 1. | xs:string | optional |
Body | Description | Type | Use |
text | Expressions that are calculated. No XML-comments are allowed in this section. | xs:string | optional |
Example:
-
Define the name of component that is described in this SCVD file. This element specifies also the version of the SCVD file.
-Parent Element | Element Chain | ||
---|---|---|---|
component_viewer | /component_viewer | ||
Attributes | Description | Type | Use |
name | Alphanumeric string identifying the component. Used as menu entry to open viewers. | xs:string | required |
version | Alphanumeric string identifying the version of the component description. | xs:string | optional |
Example:
The element <component_viewer> provides the outermost frame of the description. All elements are described within this scope.
-Parent Element | Element Chain | ||
---|---|---|---|
root | Document root | ||
Attributes | Description | Type | Use |
xmlns:xs | Specifies the underlying XML schema to which the SCVD schema is compliant. Has to be set to: "http://www.w3.org/2001/XMLSchema-instance". | xs:decimal | required |
xs:noNamespaceSchemaLocation | Specifies the file name of the SCVD Schema: "Component_Viewer.xsd". | xs:string | required |
schemaVersion | Specifies the compliant SCVD schema version (for example, "1.1"). | xs:string | required |
Child Elements | Description | Type | Occurrence |
component | Name of the component and version of this SCVD file. | ComponentsType | 0..1 |
typedefs | Group element for one or more typedef elements. | TypedefsType | 0..1 |
objects | Group element for one or more object elements. | ObjectsType | 0..1 |
events | Group element for one or more event elements. | EventsType | 0..1 |
Example:
Define an event that can occur for the software component. The attributes property and value can consist of ASCII characters and format specifiers.
-Parent Element | Element Chain | ||
---|---|---|---|
events | /component_viewer/events | ||
Attributes | Description | Type | Use |
id | 16-bit event id (message and component number) value. See Theory of operation. | xs:anySimpleType | required |
level | Event severance level (OP, API, Error, Detail) used for filtering. See Theory of operation. | xs:anySimpleType | required |
property | Value output shown in the Event Property column of the Event Recorder window. | xs:string | required |
value | Value output shown in the Value column of the Event Recorder window. | xs:anySimpleType | optional |
info | Descriptive text with additional information (comment). | xs:string | optional |
doc | Explicit link to documentation. | xs:string | optional |
handle | Specifies the value that identifies the object handle and is used to associated the state information. This refers for example a RTOS thread or IP socket. | xs:string | optional |
hname | Specifies a human readable name that represents the handle. This could be a thread name or a file name. A name can referenced in two different ways: - hname="N[val]" val is the pointer value that addresses a const string in the address space of the target. - hname="S[val]" val is the address of a symbol name (for example a function) in a loaded ELF image. | xs:string | optional |
state | Reference to a state name in the element state. When state is specified, a handle value is required. | xs:string | optional |
tracking | Specifies the tracking for an event handle wiht the values: - tracking="Start"; start the state tracking for an event handle. - tracking="Stop"; stop the state tracking for an event handle. - tracking="Reset"; initialize the tracking for all event handles of that component to "Stop". | xs:string | optional |
Child Element | Description | Type | Occurrence |
Use different output formats for single line output lines. See Dynamic output formats. | PrintType | 0..* |
Example:
Dynamic output formats are supported using the "<print>" element. It works as child element of event and allows conditional output.
-Parent Element | Element Chain | ||
---|---|---|---|
event | /component_viewer/events/event | ||
Attributes | Description | Type | Use |
cond | Conditional execution: element is executed when expression result is not 0. If executed all consecutive "<print>" elements are skipped. Default value is 1. | xs:string | required |
property | Shown in the Property column of the Event Recorder window. Use specifiers to format the output. | xs:string | required |
value | Shown in the Value column of the Event Recorder window. Use specifiers to format the output. | xs:string | required |
bold | Output in the Value column is displayed in bold when expression result is not 0. Default value is 0. See also alert and bold output. | xs:string | optional |
alert | Output in the Value column is displayed in red when expression result is not 0. Default value is 0. See also alert and bold output. | xs:string | optional |
Example: On "ShowNetAddress" event print IP address in different format depending whether it is IPv4 or IPv6 network.
Is the enclosing element for objects that define the output for Event Recorder.
-Parent Element | Element Chain | ||
---|---|---|---|
component_viewer | /component_viewer | ||
Child Element | Description | Type | Occurrence |
event | Define an event. | EventType | 0..* |
group | Create an event group. | GroupType | 0..* |
Example:
-
Define groups of software components that are shown together.
-Parent Element | Element Chain | ||
---|---|---|---|
events | /component_viewer/events | ||
Attributes | Description | Type | Use |
name | Define the name of a group. This name is used for filtering. | xs:string | required |
Child Element | Description | Type | Occurrence |
component | Component within the group. | ComponentType | 0..* |
-
Define software components that are tied to an event number.
-Parent Element | Element Chain | ||
---|---|---|---|
group | /component_viewer/events/group | ||
Attributes | Description | Type | Use |
name | Descriptive component name. | xs:string | required |
brief | Short component name for display purposes. | xs:string | required |
no | Event id component number (bits 8..15). See Theory of operation. | xs:string | required |
prefix | Added to hyperlink in context sensitive help system before the <event name>. | xs:string | required |
info | Descriptive text shown when hovering over the component brief. | xs:string | optional |
Child Element | Description | Type | Occurrence |
state | State information for a component | ComponentType | 0..* |
Example:
-
Define state information for an event group. This state information is used for:
The state information is referenced by the element event and associated with an handle and a handle name. State information is for example used to display the activity of RTOS threads. But this implementation is generic and allows it to use also for any type of software component.
-Parent Element | Element Chain | ||
---|---|---|---|
group | /component_viewer/component | ||
Attributes | Description | Type | Use |
name | State name that is displayed and used for reference in event | xs:string | required |
plot | Output in graphic time-line display (System Analyzer) with values: - "off" for empty display [no line or box] (default). - "line" for display a line. - "box" for display a box. | xs:string | optional |
color | Color for the line or box in graphic time-line display (System Analyzer) with values: "blue" (default), "red", "green", "black". | xs:string | optional |
unique | "1" indicates that only handle from this group can have this state. Event handles that had this state previously are set to state that is marked with dormant="1". (default "0") | xs:string | optional |
dormant | "1" indicates the state to fall back from the state that is marked with unique="1". (default "0") | xs:string | optional |
ssel | "1" indicates the state is selected for top-level view of events and statistics. (default "0") | xs:string | optional |
Example:
-
Outputs a single line. Child elements create a display block [+] in the Component Viewer. The attribute property and attribute value can consist of ASCII characters and format specifiers.
-Parent Element | Element Chain | ||
---|---|---|---|
out | /component_viewer/objects/object/out | ||
list | /component_viewer/objects/object/out/.../list | ||
item | /component_viewer/objects/object/out/.../item (self reference) | ||
Attributes | Description | Type | Use |
property | Shown in the Property column of the Component Viewer window. Use specifiers to format the output. | xs:string | optional |
value | Shown in the Value column of the Component Viewer window. Use specifiers to format the output. | xs:string | optional |
info | Descriptive text, comment. Shown when hovered over the item in the Component Viewer window. | xs:string | optional |
cond | Conditional execution: element is executed when expression result is not 0. Default value is 1. | xs:string | optional |
bold | Output in the Value column is displayed in bold when expression result is not 0. Default value is 0. See also alert and bold output. | xs:string | optional |
alert | Output in the Value column is displayed in red when expression result is not 0. Default value is 0. See also alert and bold output. | xs:string | optional |
Child Element | Description | Type | Occurrence |
item | Output a single line. An <item> in an <item> creates a tree structure in Component Viewer. | ItemType | 0..* |
list | Read complex variables, arrays, or linked lists. Walk through readlist arrays. | ListType | 0..* |
Use different output formats for single line output lines. See Dynamic output formats. | PrintType | 0..* |
Example:
The element list allows to create a:
The child elements of the list element are executed therefore multiple times.
-Parent Element | Element Chain | ||
---|---|---|---|
object | /component_viewer/objects/object | ||
list | /component_viewer/objects/object/.../list | ||
Attributes | Description | Type | Use |
name | The name of a loop variable that is defined previously defined with the element var. When limit is specified, this variable is incremented by 1 with every loop iteration. | xs:string | required |
start | Expression that specifies the initial value of the loop variable. | xs:string | required |
limit | Expression that specifies the limit value of the loop variable. The loop is terminated when limit >= loop variable. | xs:string | optional |
while | Expression that terminates loop execution when the result is 0. Default value is 1. | xs:string | optional |
cond | Conditional execution: element is executed when expression result is not 0. Default value is 1. | xs:string | optional |
Child Element | Description | Type | Occurrence |
list | Iterate a loop (for or while construct). | ListTypeO | 0..* |
readlist | Read a list of structured variables (arrays or linked list) from application program. | ReadlistType | 0..* |
read | Read scalar variables or arrays from application program. | ReadType | 0..* |
var | Define temporary variables. | VarType | 0..* |
calc | Calculate temporary variables. | CalcType | 0..* |
Examples:
-for loop execution:
-while loop execution:
-Walk through <readlist> arrays.
-Parent Element | Element Chain | ||
---|---|---|---|
out | /component_viewer/objects/object/out | ||
item | /component_viewer/objects/object/out/.../item | ||
list | /component_viewer/objects/object/out/.../list | ||
Attributes | Description | Type | Use |
name | Name of the list. Can be used in Expressions. Must be of type int. | xs:string | required |
start | Starting value. | xs:string | required |
limit | The end value is limit-1. If limit=<0, then the list is skipped. - Cannot be used with attribute while in the same <list> element. | xs:string | optional |
while | Specifies the next value for iterations. When using attribute while, iteration does not start if start==0. Cannot be used with attribute limit in the same <list> element. | xs:string | optional |
cond | Conditional execution: element is executed when expression result is not 0. Default value is 1. | xs:string | optional |
Child Element | Description | Type | Occurrence |
item | Output a line. | ItemType | 0..* |
list | Read complex variables, arrays, or linked lists. Walk through readlist arrays. | ListType | 0..* |
Example:
-
Define the member of a typedef; typically a struct, class member, or enumeration.
-Parent Element | Element Chain | ||
---|---|---|---|
typedef | /component_viewer/typedefs/typedef | ||
Attributes | Description | Type | Use |
name | Name of member variable. Is shown as text in the Component Viewer. | xs:string | required |
type | Scalar Data Types or pointer to Complex Data Types to access chained lists. | xs:string | required |
offset | Offset to base address in [Bytes]. Use the uVision debug dialog Symbols to find the offset. You can use Expressions. For imported members, the offset is recalculated. Refer to the description of attribute import in typedef. | xs:string | required |
size | Size in target memory in [Bytes]. | xs:string | optional |
info | Descriptive text with additional information (comment). | xs:string | optional |
Child Element | Description | Type | Occurrence |
enum | Name of an enumeration that is displayed as text instead of a value. | EnumType | 0..* |
Example:
-
Defines an enumeration name that is displayed as text instead of a value. A symbolic enumerator name represents a constant value that can be referenced using the syntax typedef_name:member_name:enum_name.
-Parent Element | Element Chain | ||
---|---|---|---|
member | /component_viewer/typedefs/typedef/member | ||
Attributes | Description | Type | Use |
name | Name of enumeration. Is shown as text in the Component Viewer. | xs:string | required |
value | Expression that specifies the enum value. | xs:string | optional |
info | Descriptive text with additional information (comment). | xs:string | optional |
Example:
-
Is the enclosing element for objects that define the output for the Component Viewer.
-Parent Element | Element Chain | ||
---|---|---|---|
component_viewer | /component_viewer | ||
Child Element | Description | Type | Occurrence |
object | Define the output object for the Component Viewer. | ObjectType | 1 |
-
Define variables, calculations, and the viewer output for a software component.
-Parent Element | Element Chain | ||
---|---|---|---|
objects | /component_viewer/objects | ||
Attributes | Description | Type | Use |
name | Name of the object (this name is used to open the view) | xs:string | required |
Child Element | Description | Type | Occurrence |
var | Define temporary variables. | VarType | 0..* |
calc | Calculate temporary variables. | CalcType | 0..* |
list | Iterate a loop (for or while construct). | ListTypeO | 0..* |
read | Read scalar variables or arrays from application program. | ReadType | 0..* |
readlist | Read a list of structured variables (arrays or linked list) from application program. | ReadlistType | 0..* |
out | Generate output for this object. | OutType | 0..* |
Define the output for an object.
-Parent Element | Element Chain | ||
---|---|---|---|
object | /component_viewer/objects/object | ||
Attributes | Description | Type | Use |
name | The name used for menu titles and window titles of the Component Viewer. | xs:string | optional |
value | Is the assigned value. | xs:string | optional |
type | Value type. One of the Data types. | xs:string | optional |
cond | Conditional execution: element is executed when expression result is not 0. Default value is 1. | xs:string | optional |
Child Element | Description | Type | Occurrence |
item | Output a line to the Component Viewer window. | ItemType | 0..* |
list | Iterate a loop (for or while construct). | ListType | 0..* |
Example:
-
Dynamic output formats are supported using the "<print>" element. It works as child element of item "item" and allows conditional output formats.
-Parent Element | Element Chain | ||
---|---|---|---|
item | /component_viewer/objects/object/out/.../item | ||
Attributes | Description | Type | Use |
cond | Conditional execution: element is executed when expression result is not 0. If executed all consecutive "<print>" elements are skipped. Default value is 1. | xs:string | required - |
property | Shown in the Property column of the Component Viewer window. Use specifiers to format the output. | xs:string | required |
value | Shown in the Value column of the Component Viewer window. Use specifiers to format the output. | xs:string | required |
bold | Output in the Value column is displayed in bold when expression result is not 0. Default value is 0. See also alert and bold output. | xs:string | optional |
alert | Output in the Value column is displayed in red when expression result is not 0. Default value is 0. See also alert and bold output. | xs:string | optional |
Example:
Read values of scalar variables or arrays from application program that runs in the target system. A redefinition of a <read> element is not permitted and creates an error.
-<read> manages a <member> variable with the following name:
Refer to Predefined variables.
-Parent Element | Element Chain | ||
---|---|---|---|
object | /component_viewer/objects/object | ||
list | /component_viewer/objects/object/.../list | ||
Attributes | Description | Type | Use |
name | Name of variable. Can be used in Expressions. | xs:string | required |
type | Data type read from memory, following types are possible:
| xs:string | required |
size | Is an Expressions representing the array size or the number of values to read from target. The maximum array size is limited to 512. Default value is 1. | xs:string | optional |
symbol | Symbol name to access memory in the target system which is used to calculate a memory address. | xs:string | optional |
offset | Offset to the attribute symbol address. If no attribute symbol is not specified, then it is the memory address. Default value is 0. | xs:string | optional |
const | Variables with attribute const set to "1" are constants that are read only once after debugger start. Default value is 0. | xs:int | optional |
info | Descriptive text with additional information (comment). | xs:string | optional |
cond | Conditional execution: element is executed when expression result is not 0. Default value is 1. | xs:string | optional |
endian | Endianness for scalar data types. endian="L" — little endian. endian="B" — big endian. Default is automatic. | xs:string | optional |
Example:
Read a list of structured elements from application program memory in the target system. This list can be used in expressions or out elements. The structured element is based on a data type that is defined with typedef. This typedef may contain temporary variables defined with var that are used for calculations (temporary variables are not read from the target system).
-The individual data type elements of the <readlist> are referenced using name[index].member.
- <readlist> manages two predefined member variables with the following names:
The attribute attribute symbol together with attribute offset specifies the start address in target memory of the list. When attribute attribute based:
<readlist> is able to read:
<readlist> can be used multiple times to add list items. The attribute init="1" clears the list and any list items collected on previous <readlist> calls is discarded.
-Parent Element | Element Chain | ||
---|---|---|---|
object | /component_viewer/objects/object | ||
list | /component_viewer/objects/object/.../list | ||
Attributes | Description | Type | Use |
name | Name of the list variable for usage in Expressions. | xs:string | required |
type | A scalar data type or complex data type defined with typedef. | xs:string | required |
count | Number of list items to read from an array. Default value is 1. | xs:string | optional |
next | Name of a member element in the list that is used as next pointer. This is used to read a linked list. <readlist> stops reading on a NULL pointer. The maximum number of list items is limited to 1024. | xs:string | optional |
symbol | Symbol name used to calculate the memory address in the target system. | xs:string | optional |
offset | Offset to the memory address specified with attribute symbol address. If attribute symbol is not specified it is the memory address. Default value is 0. | xs:string | optional |
const | When const="1" the memory is read when the object is created the first time. Default value is 0. | xs:int | optional |
info | Descriptive text with additional information (comment). | xs:string | optional |
cond | Conditional execution: element is executed when expression result is not 0. Default value is 1. | xs:string | optional |
init | When init="1" previous read items in the list are discarded. Default value is 0. | xs:boolean | optional |
based | When based="1" the attribute symbol and attribute offset specifies a pointer (or pointer array). Default value is 0. | xs:boolean | optional |
Example
-C source file:
The data type of the list is defined with typedef. The var element is a variable used to store a string.
Read the linked list starting with ValueA:
Read the linked list starting with head pointer ListStart:
Clear a previous list and read ValueA, ValueB, and ValueArray.
Read the list based on the pointers stored in pArray:
Read the pArray using read and read the list items addressed with pArray[1] and pArray[2].
Is the enclosing element for data type definitions.
-Parent Element | Element Chain | ||
---|---|---|---|
component_viewer | /component_viewer | ||
Child Element | Description | Type | Occurrence |
typedef | Define complex data types. | TypedefType | 1..* |
-
Define complex data types that may be used in read and readlist elements. This data type definition is used to read information from the target memory of the application. Optionally it may include also var elements that create temporary helper variables for calculations at the debugger level.
-Parent Element | Element Chain | ||
---|---|---|---|
typedefs | /component_viewer/typedefs | ||
Attributes | Description | Type | Use |
name | Define the name of a data type. This name is used in read and readlist elements. | xs:anySimpleType | required |
size | Expression that specifies the size (in [Bytes]) to read from target memory. | xs:anySimpleType | optional |
info | Descriptive text with additional information (comment). | xs:anySimpleType | optional |
import | Name of a symbol in the user application which is loaded into the debugger. The underlaying data type of this symbol is used to:
Example: Use the data type information of symbol tcb in source module main.c <typedef name="tcb_type" size="12" import="main.c/tcb"> // size is recalculated from symbol tcb
- <member name="type" type="uint8_t" offset="0"/> // offset not updated, because specified
- <member name="name" type="uint8_t" size="16" /> // offset updated, because not specified
-</typedef>
- | xs:string | optional |
Child Element | Description | Type | Occurrence |
member | Name of a member variable in target memory. | MemberType | 0..* |
var | Temporary variables for local calculations in component viewer. | VarType | 0..* |
-
Example: Using var
-Example: Using read
-main.c file
*.SCVD file
Example: Using import
-main.c File
SCVD File
-
Parent Element | Element Chain | ||
---|---|---|---|
typedef | /component_viewer/typedefs/typedef | ||
object | /component_viewer/objects/object | ||
list | /component_viewer/objects/object/.../list | ||
Attributes | Description | Type | Use |
name | Name of variable. The name can be used in Expressions. | xs:string | optional |
value | Expression that specifies the initial value. | xs:string | optional |
type | Scalar Data Types or pointer to Complex Data Types to access chained lists. | xs:string | optional |
info | Descriptive text with additional information (comment). | xs:string | optional |
Example:
-
This section describes how the Event Recorder collects event data, generates time stamps, and transfers this information via a debug unit to a host computer.
-The Event Recorder is implemented in the target application using the software component CMSIS-View:Event Recorder which adds the source file EventRecorder.c to the application. Each event is stored in a 16-byte structure that is composed of a 16-bit id, 32-bit time stamp, two 32-bit data values and consistency check values.
-To store these events, a circular buffer is provided that can store a minimum of 8 events. The size of this circular buffer is configurable with the #define EVENT_RECORD_COUNT
.
The Event Data Recording functions get a parameter id
that is composed of level, component number, and message number as shown below:
id | bits | Description |
---|---|---|
message number | 0..7 | identifies the event message information of the software component |
component number | 8..15 | identifies the software component (also used for filtering, see table below) |
level | 16..17 | specifies the class of the message for filtering (see table below) |
— (reserved) | 18..31 | set to 0 |
The level specifies the category of the event message and can be used for filtering:
-level | Message relates to ... |
---|---|
EventLevelError = 0 | Run-time error |
EventLevelAPI = 1 | API function call |
EventLevelOp = 2 | Internal operation |
EventLevelDetail = 3 | Additional detailed information of operations |
The component number specifies the software component that the event message belongs to and can be also used for filtering:
-component number | Relation to software components |
---|---|
0x0 .. 0x3F (0 .. 63) | software components of the user application |
0x40 .. 0x7F (64 .. 127) | third party middleware components |
0x80 .. 0xED (128 .. 237) | MDK-Middleware components |
0xEE (238) | Fault component |
0xEF (239) | Start/Stop events for Event Statistic information |
0xF0 .. 0xFC (240 .. 253) | RTOS kernel |
0xFD (253) | Inter-process communication layer (multiprocessor systems) |
0xFE (254) | printf-style debug outputs |
0xFF (255) | Event Recorder messages |
The following sections describe:
-Adding the software component CMSIS-View:Event Recorder to a project will copy the file EventRecorderConf.h into the project that is used to define the configuration parameters of the Event Recorder. It uses Configuration Wizard Annotations, so IDEs that support this can also show a graphical representation of the file:
-Following configuration parameters are defined in the EventRecorderConf.h file:
-Option | #define | Description |
---|---|---|
Number of Records | EVENT_RECORD_COUNT | Specifies the number or records stored in the Event Record Buffer. Each record is 16 bytes. |
Time Stamp Source | EVENT_TIMESTAMP_SOURCE | Specifies the timer that is used as time base. Refer to Time stamp source below for more information. |
Time Stamp Clock Frequency [Hz] | EVENT_TIMESTAMP_FREQ | Specifies the initial timer clock frequency. |
--Note
-
-- Set the time stamp clock frequency to your target's core clock frequency to avoid problems in determining the correct frequency.
-
The following time stamp sources can be selected:
Source | Description |
---|---|
DWT Cycle Counter | Default setting. The DWT cycle counter is part of the CoreSight debug interface. DWT is not available with Cortex-M0/M0+/M23. uVision can simulate DWT using a script. |
SysTick | System tick timer is available on most Cortex-M processors. But in power-down modes it might be disabled. |
CMSIS-RTOS2 System Timer | The system tick counter provided by a CMSIS-RTOS2 compliant real-time operating system. |
User Timer (Normal Reset) | User-defined timer that stops by any system reset. Refer to Event Recorder - Timer for more information. |
User Timer (Power-On Reset) | User-defined timer that stops only by power-on reset. Refer to Event Recorder - Timer for more information. |
--Note
-
-- When DWT Cycle Counter is selected on Cortex-M0/M0+/M23, a warning is issued at compile time:
-Invalid Time Stamp Source selected in EventRecorderConf.h!-- When using the CMSIS-RTOS2 System Timer, it is strongly recommended to set up the Time Stamp Clock Frequency [Hz] (see above) to the correct value to avoid display problems in the Event Recorder and System Analyzer windows.
-
Arm Cortex-M0/M0+/M23 processors do not offer the DWT Cycle Counter and require therefore alternative time-stamp sources.
-SysTick
-For applications that do not use the SysTick timer, you may configure EventRecorderConf.h with:
-CMSIS-RTOS2 System Timer
-For applications that use a CMSIS-RTOS2 compliant RTOS (SysTick timer used by RTOS), you may configure EventRecorderConf.h with:
-The DWT Cycle Counter can be simulated with the following debug initialization file, for example Debug_Sim.ini:
-Technical data of Event Recorder firmware
-Target: Cortex-M3 using DWT cycle counter as timer
-Parameter | ARMCC V6.13.1 | ARMCC V6.13.1 |
---|---|---|
Compiler options | -Os | -O3 |
ROM size | < 1.7k bytes | < 3.4k bytes |
RAM size @8 records (min) | 292 bytes | 292 bytes |
RAM size @64 records (default) | 1188 bytes | 1188 bytes |
EventRecord2 (id+8bytes) | 197 cycles | 184 cycles |
EventRecord4 (id+16bytes) | 343 cycles | 319 cycles |
EventRecordData (id+8bytes) | 276 cycles | 252 cycles |
EventRecordData (id+16bytes) | 425 cycles | 397 cycles |
EventRecordData (id+24bytes) | 554 cycles | 519 cycles |
EventRecordData (id+32bytes) | 685 cycles | 643 cycles |
--Note
-
-- ROM size is specified for image with all Event Recorder functions being used.
-- RAM size can be calculated as
-164 + 16 * <Number of Records> (defined by EVENT_RECORD_COUNT in EventRecorderConf.h)
.- Timing was measured in simulator (zero cycle memory, no interrupts). Function parameter in application is not considered.
-
Usage of records by Event Recorder functions
-Function | Number of Records used |
---|---|
EventRecord2 | 1 |
EventRecord4 | 2 |
EventRecordData | (event data length + 7) / 8 |
--Note
-
-- The following steps explain how to enable views for static information and dynamic events in the µVision debugger. Other tools might use different ways to accomplish this.
-
For User Code:
-For Pre-annotated Software Components:
-The software packs for MDK-Middleware, CMSIS, CMSIS-FreeRTOS already contain the relevant *.SCVD files and the related event annotations in the C source code.
-To use the Event Recorder in an application, you need to:
---Note
-
-- By default, the Event Recorder uses the DWT Cycle Counter as a time stamp source. This is not available on Cortex-M0/M0+/M23. Change the configuration to use an alternative timer instead.
-- For Keil RTX5 (version 5.4.0 and above), no call to EventRecorderInitialize is required. Instead enable Event Recorder Configuration - Global Initialization in the RTX_Config.h file. Refer to the CMSIS-RTX Event Recorder Configuration for more information.
-
For uninterrupted recording of program resets, the RAM for the Event Recorder component should be placed to a memory region that is not cleared (or initialized) by a system restart (reset).
-To setup this uninitialized RAM, use either Create memory region using linker script or Create memory region using µVision procedure.
---Notes
-
-- Make sure that you use normal, non-cacheable, and non-shareable memory for Event Recorder data.
-
The memory required for the Event Recorder data is calculated with the formula:
-In this example we configure 0x800
bytes (as it is easier) which can hold more than 64 records.
If the linker script does not contain provisions for uninitialized memory section then, for respective toolchain, add the necessary section like described below:
-Arm Compiler
-For the Arm Compiler toolchain add the following code snippet to the linker script (.sct file), in the part specifying RAM sections (usually before Heap section):
---Notes
-
-- <start_address> is the physical address in RAM where the section will start
-- 0x800 is the size of the section, adjust that as necessary
-
GCC
-For the GCC toolchain add the following code snippet to the linker script (.ld file), in the part specifying RAM sections (usually before Heap section):
---Note
-
-- The code snippet above expects defined RAM memory region, if RAM region is not defined then adapt the script accordingly.
-
To setup this uninitialized RAM in the µVision, follow the steps below:
---Note
-
-- If the Event Recorder data buffer is not in uninitialized memory, the Command window of the debugger displays:
-Warning: Event Recorder not located in uninitialized memory!".-- Knowledgebase article 4012 explains how to create custom memory areas in Keil uVision.
-- If your RAM is not big enough to separate the Event Recorder area from the Flash programming area, make sure that you enable "Reset and Run" for the Download Function:
--
-- If this still produces broken Event Recorder records after a reset, a power-cycle of the target system will help.
-
To avoid display problems in System Analyzer, set the Time Stamp Clock Frequency [Hz] to the initially expected value:
-The Event Recorder timer is a 32-bit counter that can overflow. To avoid overflow problems, send a "heartbeat" event within the limits of this 32-bit counter.
-Calculation Example
-Assuming that your application is running at 168 MHz, you can calculate the time between two heartbeats like the following:
-So you need to generate an event every 25 s. This can be an event with an event ID that you don't need and thus filter from the display in Event Recorder or an event that you use to check if your application is still running.
-To to stream dynamic event information, insert calls to the Event Data Recording functions on relevant code locations:
-These Event Data Recording functions receive as first parameter an id event identifier used for filtering and displaying. The macro EventID may be used to compose id values to include level and component numbers.
-Example:
-When executing this example in the µVision debugger, use the menu command View - Analysis Windows - Event Recorder to open the Event Recorder window. This should show the following output:
-You may create an *.SCVD (Software Component View Description) file to format the event output so that matches the application. The event output is created using the /component_viewer/events.
-SCVD file example
-In the µVision debugger, this *.SCVD file is specified in the dialog Options for Target - Debug - Manage Component Viewer Description Files. Click on Add Component Viewer Description File and add the related *.SCVD file.
-The Event Recorder displays the events as shown below.
-The described groups and events also show up in the filter dialog.
-The software packs for MDK-Middleware and CMSIS already contain SCVD files that match the related event annotations in the C source code. However, you need to select the right component Variant. For MDK-Middleware, you need to select the Debug variants, whereas for Keil RTX5, you need to add the Source variant.
-The example below enables event recording for the MDK-Middleware File System component:
-The Event Recorder can be used to retarget printf output. This is especially interesting for targets without ITM, such as Cortex-M0/M0+/M23. Steps to enable this:
-EventRecorderInitialize()
function in main()
.Also see CMSIS-Compiler documentation for addition details about printf redirecting.
-Filtering for events reduces the amount of data transmitted from the target to the debugger. To filter for events, use the button Configure Target Event Recording:
-A new window opens up that lets you filter for events that you are interested in:
-Semihosting is a mechanism that enables code running on an Arm target to communicate and use the input/output facilities on a host computer that is running a debugger.
-Examples of these facilities include keyboard input, screen output, and disk I/O. For example, you can use this mechanism to enable functions in the C library, such as printf
and scanf
, to use the screen and keyboard of the host instead of having a screen and keyboard on the target system.
With the Event Recorder, you can use semihosting with models to write the events into a file on your PC. This works with Arm Fast Models, Arm Fixed Virtual Platforms, and Arm Virtual Hardware alike.
-The file that is written is called EventRecorder.log
and is a binary file that is available in the root directory of your project. Use eventlist Utility to read and decode the binary data.
--Note
-
-- Your model needs to be configured for semihosting (refer to the documentation of your modeling technology on how to do that).
-- You can specify a different name for the log file by specifying a define called
-EVENT_LOG_FILENAME
.- In µVision, once you start a new debug session, the log file will be overwritten. While in debug, new messages will be appended to the currently open log file.
-- In µVision, the semihosting variant will not work with real target hardware. Instead, program execution will hit a breakpoint and stop there.
-- In µVision, you can still use the Event Recorder window in µVision to see the events coming in while the file is written to the hard drive of your PC.
-
The Event Execution Statistics functions allow you to collect and statistical data about the code execution. Any debug adapter can be used to record execution timing and number of calls for annotated code sections:
-Energy profiling is of annotated code sections is possible using ULINKplus. When combined with power measurement, the Event Statistics window displays the energy consumption of the code section with min/man/average values:
-For more information, refer to the EventStatistic example.
-Benefits of Event Statistics:
-Using a ULINKplus debug adapter, you can also record and analyze the energy that has been consumed in each execution slot. Using the above example on a hardware target with a ULINKplus, you get the following display in the Event Statistics window of µVision (the Event Recorder window does not change):
-eventlist is a command line tool for processing Event Recorder data stored to a log file.
-The utility is a Go application that is available for all major operating systems and is run from the command line. Refer to the eventlist source code for more information including the invocation details.
-eventlist functionality can be easily tested with the example project EventStatistic.
-Build and run the example. Then in the terminal run eventlist -s EventRecorder.log
to obtain the following human readable output:
The output can be improved with extra context as explained in the next section.
-When adding the AXF file and the SCVD file to the eventlist
command, the context of the program is shown.
For the event recorder log from the Usage example run in a terminal window:
-The output should look like the following:
-Customizing the SCVD file enables creating application specific output that can be easily read and analyzed for debugging purposes.
-The software component Event Recorder provides API functions for event annotations in the application code or software component libraries. These API functions record event timing and data information while the program is executing.
-The Event Filter which is controlled from the target application or the debugger allows to specify the event ids that are stored in the event buffer that is located in the memory of the target system. This event buffer may be continuously read by the debug unit and displayed in the Event Recorder window of the debugger.
-During program execution, the debugger reads the content of the event buffer using a standard debug unit that is connected via JTAG or SWD to the CoreSight Debug Access Port (DAP). The Event Recorder requires no trace hardware and can be therefore used on any Cortex-M processor.
-The software components CMSIS-View:Fault provide infrastructure and API function calls to store, record, and analyze the Cortex-M Exception Fault information.
-Arm Cortex-M processors raise an exception fault on critical system failures such as illegal memory write or read, access to an disabled peripheral, execution of an invalid instruction, or division by zero:
-A typical execution flow is shown in the diagram below.
-An application note is available that describes the Cortex-M fault exceptions from the programmers view and explains their usage during the software development cycle: KAN209 - Using Cortex-M3/M4/M7 Fault Exceptions.
-This example project shows Fault Analysis on an Arm Cortex-M33 based device. STMicroelectronics B-U585I-IOT02A evaluation board is used as the target platform.
-Build and run
-Follow the instructions in the example's README.md to build and run the project.
-Screenshots
-User Interface:
-Component View when no fault was saved yet:
-Component View when Memory Management fault has occurred:
-Event Recorder messages when Memory Management fault was decoded and output to Event Recorder:
-Serial Terminal output when Memory Management fault was decoded and output to STDIO:
-This example project shows Fault Analysis on an Arm Cortex-M7 based device, using Arm Virtual Hardware (AVH) processor simulation as the target platform.
-Build and run
-Follow the instructions in the example's README.md to build and run the project.
-Screenshots
-User Interface:
-EventRecorder.log file containing saved Memory Management fault information, processed with eventlist utility:
-This section describes how the Fault component operates and how the fault information can be analyzed.
-The Fault component is implemented in the target application using the software component CMSIS-View:Fault:Storage which adds the source file ARM_FaultStorage.c to the application.
-This source file provides an ARM_FaultSave function which is used to save the fault information into an uninitialized part of the RAM which can then be analyzed on-chip, or on a host computer using a debugger. When using semihosting, cloud storage, or another remote location for storing the log file, you can do post-processing using eventlist Utility.
-Fault information is stored in an ARM_FaultInfo structure, residing in uninitialized RAM memory, when the ARM_FaultSave function is executed from an exception handler.
-To see and analyze the details of a fault, there are the following options:
-This section contains the the technical data of the Fault component firmware.
-RAM:
-The Fault component uses the ARM_FaultInfo structure to save information when the fault occurs. The size depends on the Arm Cortex-M core for which the code was compiled:
-ROM:
-The functions of the Fault component require the following amounts of ROM memory:
-The following steps explain how to enable Fault component using the µVision. Other tools might use different ways to accomplish this.
-For User Code:
-To use the Fault component in an application, you need to:
-Code example:
-For preservation of the saved fault information after system reset, RAM for the ARM_FaultInfo structure should be placed to a memory region that is not cleared (or initialized) by a system restart (reset).
---Note
-
-- Make sure that you use normal, non-cacheable, and non-shareable memory for fault information data.
-
For size of this memory section take a look at Resource requirements.
-To setup this uninitialized RAM, use either Create memory region using linker script or Create memory region using µVision procedure.
-If the linker script does not contain provisions for uninitialized memory section then, for respective toolchain, add the necessary section like described below:
-Arm Compiler:
-For the Arm Compiler toolchain add the following code snippet to the linker script (.sct file), in the part specifying RAM sections (usually before Heap section):
---Note
-
-- <start_address> is the physical address in RAM where the section will start.
-- 0x800 is the size of the section covering also default Event Recorder data, adjust that as necessary
-
GCC:
-For the GCC toolchain add the following code snippet to the linker script (.ld file), in the part specifying RAM sections (usually before Heap section):
---Note
-
-- The code snippet above expects defined RAM memory region, if RAM region is not defined then adapt the script accordingly.
-
To setup this uninitialized RAM in the µVision, follow the steps below:
-Defines for parameter comp_no for EventID. -More...
--Macros | |
#define | EvtStatistics_No 0xEFU |
Component number for Event Execution Statistics in EventID. | |
#define | EvtPrintf_No 0xFEU |
Component number for Redirecting printf output in EventID. | |
Defines for parameter comp_no for EventID.
-The following defines refer to various component numbers. A list of component numbers is provided under Theory of operation.
-#define EvtStatistics_No 0xEFU | -
Component number for Event Execution Statistics in EventID.
- -#define EvtPrintf_No 0xFEU | -
Component number for Redirecting printf output in EventID.
- -Functions that record events along with data information. -More...
--Content | |
Event level | |
Defines for parameter level for EventID. | |
Component number | |
Defines for parameter comp_no for EventID. | |
-Macros | |
#define | EventID(level, comp_no, msg_no) ((level & 0x30000U) | ((comp_no & 0xFFU) << 8) | (msg_no & 0xFFU)) |
Composed event id from level, component number and message number. | |
-Functions | |
uint32_t | EventRecord2 (uint32_t id, uint32_t val1, uint32_t val2) |
Record an event with two 32-bit data values. | |
uint32_t | EventRecord4 (uint32_t id, uint32_t val1, uint32_t val2, uint32_t val3, uint32_t val4) |
Record an event with four 32-bit data values. | |
uint32_t | EventRecordData (uint32_t id, const void *data, uint32_t len) |
Record an event with variable data size. | |
Functions that record events along with data information.
-This section describes the functions that are called from the user application or middleware libraries to record events.
-Each event has an id that combines level, component number, and message number:
can have an additional event level that is used for filtering. The event level value is defined by EventLevelError, EventLevelAPI, EventLevelOp, or EventLevelDetail and added to the event ID number.
-Code example
#define EventID | -( | -- | level, | -
- | - | - | comp_no, | -
- | - | - | msg_no | -
- | ) | -((level & 0x30000U) | ((comp_no & 0xFFU) << 8) | (msg_no & 0xFFU)) | -
Composed event id from level, component number and message number.
-level | Event level of the id |
comp_no | component number of the id |
msg_no | message number of the id |
The macro EventID generates an id value that combines level, component number, and message number. The level value should be set to EventLevelError, EventLevelAPI, EventLevelOp, or EventLevelDetail.
-The id value is used by the functions EventRecordData, EventRecord2, and EventRecord4.
- -uint32_t EventRecord2 | -( | -uint32_t | -id, | -
- | - | uint32_t | -val1, | -
- | - | uint32_t | -val2 | -
- | ) | -- |
Record an event with two 32-bit data values.
-[in] | id | event identifier (level, component number, message number) |
[in] | val1 | first data value |
[in] | val2 | second data value |
Code Example
uint32_t EventRecord4 | -( | -uint32_t | -id, | -
- | - | uint32_t | -val1, | -
- | - | uint32_t | -val2, | -
- | - | uint32_t | -val3, | -
- | - | uint32_t | -val4 | -
- | ) | -- |
Record an event with four 32-bit data values.
-[in] | id | event identifier (level, component number, message number) |
[in] | val1 | first data value |
[in] | val2 | second data value |
[in] | val3 | third data value |
[in] | val4 | fourth data value |
Code Example
uint32_t EventRecordData | -( | -uint32_t | -id, | -
- | - | const void * | -data, | -
- | - | uint32_t | -len | -
- | ) | -- |
Record an event with variable data size.
-[in] | id | event identifier (level, component number, message number) |
[in] | data | event data buffer |
[in] | len | event data length |
Code Example
Functions that initialize and control the event recorder and configure event filtering. -More...
--Content | |
Recording Control | |
Defines for parameter recording of Event Recorder Setup functions. | |
-Functions | |
uint32_t | EventRecorderInitialize (uint32_t recording, uint32_t start) |
Initialize Event Recorder. | |
uint32_t | EventRecorderEnable (uint32_t recording, uint32_t comp_start, uint32_t comp_end) |
Enable recording of events with specified level and component range. | |
uint32_t | EventRecorderDisable (uint32_t recording, uint32_t comp_start, uint32_t comp_end) |
Disable recording of events with specified level and component range. | |
uint32_t | EventRecorderStart (void) |
Start event recording. | |
uint32_t | EventRecorderStop (void) |
Stop event recording. | |
Functions that initialize and control the event recorder and configure event filtering.
-This section contains the functions that initialize and control the event recorder and configure event filtering.
-uint32_t EventRecorderInitialize | -( | -uint32_t | -recording, | -
- | - | uint32_t | -start | -
- | ) | -- |
Initialize Event Recorder.
-[in] | recording | initial level mask for event record filter |
[in] | start | initial recording setup (1=start, 0=stop) |
Call the function EventRecorderInitialize from the user code to set up the Event Recorder. The function initializes all buffers and configures the timer (if configured).
-The parameter recording takes values from Recording Control.
-Code Example
uint32_t EventRecorderEnable | -( | -uint32_t | -recording, | -
- | - | uint32_t | -comp_start, | -
- | - | uint32_t | -comp_end | -
- | ) | -- |
Enable recording of events with specified level and component range.
-[in] | recording | level mask for event record filter |
[in] | comp_start | first component number of range |
[in] | comp_end | last Component number of range |
The function EventRecorderEnable configures the event filter for a software component.
-The events will be generated for the event level recording and between the range specified with comp_start and comp_end.
-The parameter recording takes values from Recording Control.
-Multiple calls to EventRecorderEnable are permitted and enable the recording of different event messages.
-Code Example
uint32_t EventRecorderDisable | -( | -uint32_t | -recording, | -
- | - | uint32_t | -comp_start, | -
- | - | uint32_t | -comp_end | -
- | ) | -- |
Disable recording of events with specified level and component range.
-[in] | recording | level mask for event record filter |
[in] | comp_start | first component number of range |
[in] | comp_end | last Component number of range |
The function EventRecorderDisable configures the event filter for a software component.
-The events will be generated for the event level recording and between the range specified with comp_start and comp_end.
-The parameter recording takes values from Recording Control.
-Multiple calls to EventRecorderDisable are permitted and disable the recording of event messages.
-Code Example
uint32_t EventRecorderStart | -( | -void | -) | -- |
Start event recording.
-The function EventRecorderStart enables the recording of the events that are configured for recording using EventRecorderEnable or EventRecorderInitialize
-Code Example
uint32_t EventRecorderStop | -( | -void | -) | -- |
Stop event recording.
-The function EventRecorderStop disables the recording of all events.
-Code Example
Functions that access a configurable hardware timer. -More...
--Functions | |
uint32_t | EventRecorderTimerSetup (void) |
Setup timer hardware. | |
uint32_t | EventRecorderTimerGetFreq (void) |
Get timer frequency. | |
uint32_t | EventRecorderTimerGetCount (void) |
Get timer count. | |
uint32_t | EventRecorderClockUpdate (void) |
Update Event Recorder timestamp clock. | |
Functions that access a configurable hardware timer.
-This section contains user-provided functions, which configure and provide timing information for recorded events. It is required to implement these functions, when User Timer is selected as time stamp source.
-The source file EventRecorder.c implements __WEAK
functions for EventRecorderTimerSetup, EventRecorderTimerGetFreq and EventRecorderTimerGetCount. This allows to overwrite the functions by a user application.
Code Example
uint32_t EventRecorderTimerSetup | -( | -void | -) | -- |
Setup timer hardware.
-This function is called by EventRecorderInitialize to initialize the timer that is used by the Event Recorder. For time stamp source User Timer (Power-On Reset) this function is only called for the first call to EventRecorderInitialize.
- -uint32_t EventRecorderTimerGetFreq | -( | -void | -) | -- |
Get timer frequency.
-This function is called by EventRecorderInitialize to initialize the timer that is used by the Event Recorder. For time stamp source User Timer (Power-On Reset) this function is only called for the first call to EventRecorderInitialize.
-EVENT_TIMESTAMP_FREQ
. uint32_t EventRecorderTimerGetCount | -( | -void | -) | -- |
Get timer count.
-This function should return a 32-bit timer value that is used to generate time stamp information for the Event Recorder.
- -uint32_t EventRecorderClockUpdate | -( | -void | -) | -- |
Update Event Recorder timestamp clock.
-Call this function when a clock change of the Event Recorder timer source has occurred. Typically, this happens when a clock source is switched (i.e. from XTAL to low-power clock).
-Defines for parameter level for EventID. -More...
--Macros | |
#define | EventLevelError 0x00000U |
Run-time error in the component. | |
#define | EventLevelAPI 0x10000U |
API function call. | |
#define | EventLevelOp 0x20000U |
Internal operation. | |
#define | EventLevelDetail 0x30000U |
Additional detailed information of operations. | |
Defines for parameter level for EventID.
-The following defines specify the level for the id. This defines may be used for:
Event filtering may be used to change the settings in the debugger. The event level define settings map as described in the following table:
-Recording level | Error | API | Op | Data |
---|---|---|---|---|
Event level define setting | EventRecordError | EventRecordAPI | EventRecordOp | EventRecordDetail |
#define EventLevelError 0x00000U | -
Run-time error in the component.
- -#define EventLevelAPI 0x10000U | -
API function call.
- -#define EventLevelOp 0x20000U | -
Internal operation.
- -#define EventLevelDetail 0x30000U | -
Additional detailed information of operations.
- -Defines for parameter recording of Event Recorder Setup functions. -More...
--Macros | |
#define | EventRecordNone 0x00U |
Record events is disabled. | |
#define | EventRecordError 0x01U |
Record events with level EventLevelError. | |
#define | EventRecordAPI 0x02U |
Record events with level EventLevelAPI. | |
#define | EventRecordOp 0x04U |
Record events with level EventLevelOp. | |
#define | EventRecordDetail 0x08U |
Record events with level EventLevelDetail. | |
#define | EventRecordAll 0x0FU |
Record events with any level. | |
Defines for parameter recording of Event Recorder Setup functions.
-The following controls specify event recording levels and supply values for the parameter recording of Event Recorder Setup functions.
-#define EventRecordNone 0x00U | -
Record events is disabled.
- -#define EventRecordError 0x01U | -
Record events with level EventLevelError.
- -#define EventRecordAPI 0x02U | -
Record events with level EventLevelAPI.
- -#define EventRecordOp 0x04U | -
Record events with level EventLevelOp.
- -#define EventRecordDetail 0x08U | -
Record events with level EventLevelDetail.
- -#define EventRecordAll 0x0FU | -
Record events with any level.
- -Macros that record start/stop events for the execution statistic display. -More...
--Macros | |
#define | EventStartA(slot) EventRecord2 (0xEF00U+EventLevelError+(slot), ((uint32_t) __FILE__), __LINE__) |
#define | EventStartAv(slot, v1, v2) EventRecord2 (0xEF10U+EventLevelError+((slot) & 0xFU), (v1), (v2)) |
#define | EventStopA(slot) EventRecord2 (0xEF20U+EventLevelError+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) |
#define | EventStopAv(slot, v1, v2) EventRecord2 (0xEF30U+EventLevelError+((slot) & 0xFU), (v1), (v2)) |
#define | EventStartB(slot) EventRecord2 (0xEF40U+EventLevelAPI+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) |
#define | EventStartBv(slot, v1, v2) EventRecord2 (0xEF50U+EventLevelAPI+((slot) & 0xFU), (v1), (v2)) |
#define | EventStopB(slot) EventRecord2 (0xEF60U+EventLevelAPI+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) |
#define | EventStopBv(slot, v1, v2) EventRecord2 (0xEF70U+EventLevelAPI+((slot) & 0xFU), (v1), (v2)) |
#define | EventStartC(slot) EventRecord2 (0xEF80U+EventLevelOp+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) |
#define | EventStartCv(slot, v1, v2) EventRecord2 (0xEF90U+EventLevelOp+((slot) & 0xFU), (v1), (v2)) |
#define | EventStopC(slot) EventRecord2 (0xEFA0U+EventLevelOp+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) |
#define | EventStopCv(slot, v1, v2) EventRecord2 (0xEFB0U+EventLevelOp+((slot) & 0xFU), (v1), (v2)) |
#define | EventStartD(slot) EventRecord2 (0xEFC0U+EventLevelDetail+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) |
#define | EventStartDv(slot, v1, v2) EventRecord2 (0xEFD0U+EventLevelDetail+((slot) & 0xFU), (v1), (v2)) |
#define | EventStopD(slot) EventRecord2 (0xEFE0U+EventLevelDetail+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) |
#define | EventStopDv(slot, v1, v2) EventRecord2 (0xEFF0U+EventLevelDetail+((slot) & 0xFU), (v1), (v2)) |
Macros that record start/stop events for the execution statistic display.
-This section describes the macros that call event recorder functions from the user application to record start/stop events for program execution statistics.
-The start/stop events allow to measure execution times with different slots (0 - 15) in four different groups (G = A - D). The call to 'EventStart' starts a timer slot; the call to 'EventStop' stops the related timer. A call to EventStop with slot 15 stops the timers of all slots in the specific group.
-The macros allow to record either:
The start/stop events are using The four event groups (G = A - D) that are available to the user are mapped to the level information in EventID and may be used for filtering. The mapping is as shown in the table below.
-Start/stop group | A | B | C | D |
---|---|---|---|---|
Event level | Error | API | Op | Data |
Parameter recording | EventRecordError | EventRecordAPI | EventRecordOp | EventRecordDetail |
It is required to call the EventRecorderInitialize function before using start/stop events. The parameter recording from the table above can be used in the functions EventRecorderInitialize, EventRecorderEnable, and EventRecorderDisable. Event filtering may be used to change the settings in the debugger.
-The following code shows the setup of the Event Recorder for start/stop events:
-Code example
#define EventStartA | -( | -- | slot | ) | -EventRecord2 (0xEF00U+EventLevelError+(slot), ((uint32_t) __FILE__), __LINE__) | -
The macro EventStartA generates a start event for group A with the specified slot number. The Event Recorder stores filename and line number of the call.
-[in] | slot | slot number (up to 16 slots, 0..15) |
#define EventStartAv | -( | -- | slot, | -
- | - | - | v1, | -
- | - | - | v2 | -
- | ) | -EventRecord2 (0xEF10U+EventLevelError+((slot) & 0xFU), (v1), (v2)) | -
The macro EventStartAv generates a start event for group A with the specified slot number. The Event Recorder stores the integer value parameters v1, v2.
-[in] | slot | slot number (up to 16 slots, 0..15) |
[in] | v1 | first data value |
[in] | v2 | second data value |
#define EventStopA | -( | -- | slot | ) | -EventRecord2 (0xEF20U+EventLevelError+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) | -
The macro EventStopA generates a stop event for group A with the specified slot number. The Event Recorder stores filename and line number of the call.
-[in] | slot | slot number (up to 16 slots, 0..15) |
#define EventStopAv | -( | -- | slot, | -
- | - | - | v1, | -
- | - | - | v2 | -
- | ) | -EventRecord2 (0xEF30U+EventLevelError+((slot) & 0xFU), (v1), (v2)) | -
The macro EventStopAv generates a stop event for group A with the specified slot number. The Event Recorder stores the integer value parameters v1, v2.
-[in] | slot | slot number (up to 16 slots, 0..15) |
[in] | v1 | first data value |
[in] | v2 | second data value |
#define EventStartB | -( | -- | slot | ) | -EventRecord2 (0xEF40U+EventLevelAPI+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) | -
The macro EventStartB generates a start event for group B with the specified slot number. The Event Recorder stores filename and line number of the call.
-[in] | slot | slot number (up to 16 slots, 0..15) |
#define EventStartBv | -( | -- | slot, | -
- | - | - | v1, | -
- | - | - | v2 | -
- | ) | -EventRecord2 (0xEF50U+EventLevelAPI+((slot) & 0xFU), (v1), (v2)) | -
The macro EventStartBv generates a start event for group B with the specified slot number. The Event Recorder stores the integer value parameters v1, v2.
-[in] | slot | slot number (up to 16 slots, 0..15) |
[in] | v1 | first data value |
[in] | v2 | second data value |
#define EventStopB | -( | -- | slot | ) | -EventRecord2 (0xEF60U+EventLevelAPI+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) | -
The macro EventStopB generates a stop event for group B with the specified slot number. The Event Recorder stores filename and line number of the call.
-[in] | slot | slot number (up to 16 slots, 0..15) |
#define EventStopBv | -( | -- | slot, | -
- | - | - | v1, | -
- | - | - | v2 | -
- | ) | -EventRecord2 (0xEF70U+EventLevelAPI+((slot) & 0xFU), (v1), (v2)) | -
The macro EventStopBv generates a stop event for group B with the specified slot number. The Event Recorder stores the integer value parameters v1, v2.
-[in] | slot | slot number (up to 16 slots, 0..15) |
[in] | v1 | first data value |
[in] | v2 | second data value |
#define EventStartC | -( | -- | slot | ) | -EventRecord2 (0xEF80U+EventLevelOp+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) | -
The macro EventStartC generates a start event for group C with the specified slot number. The Event Recorder stores filename and line number of the call.
-[in] | slot | slot number (up to 16 slots, 0..15) |
#define EventStartCv | -( | -- | slot, | -
- | - | - | v1, | -
- | - | - | v2 | -
- | ) | -EventRecord2 (0xEF90U+EventLevelOp+((slot) & 0xFU), (v1), (v2)) | -
The macro EventStartCv generates a start event for group C with the specified slot number. The Event Recorder stores the integer value parameters v1, v2.
-[in] | slot | slot number (up to 16 slots, 0..15) |
[in] | v1 | first data value |
[in] | v2 | second data value |
#define EventStopC | -( | -- | slot | ) | -EventRecord2 (0xEFA0U+EventLevelOp+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) | -
The macro EventStopC generates a stop event for group C with the specified slot number. The Event Recorder stores filename and line number of the call.
-[in] | slot | slot number (up to 16 slots, 0..15) |
#define EventStopCv | -( | -- | slot, | -
- | - | - | v1, | -
- | - | - | v2 | -
- | ) | -EventRecord2 (0xEFB0U+EventLevelOp+((slot) & 0xFU), (v1), (v2)) | -
The macro EventStopCv generates a stop event for group C with the specified slot number. The Event Recorder stores the integer value parameters v1, v2.
-[in] | slot | slot number (up to 16 slots, 0..15) |
[in] | v1 | first data value |
[in] | v2 | second data value |
#define EventStartD | -( | -- | slot | ) | -EventRecord2 (0xEFC0U+EventLevelDetail+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) | -
The macro EventStartD generates a start event for group D with the specified slot number. The Event Recorder stores filename and line number of the call.
-[in] | slot | slot number (up to 16 slots, 0..15) |
#define EventStartDv | -( | -- | slot, | -
- | - | - | v1, | -
- | - | - | v2 | -
- | ) | -EventRecord2 (0xEFD0U+EventLevelDetail+((slot) & 0xFU), (v1), (v2)) | -
The macro EventStartDv generates a start event for group D with the specified slot number. The Event Recorder stores the integer value parameters v1, v2.
-[in] | slot | slot number (up to 16 slots, 0..15) |
[in] | v1 | first data value |
[in] | v2 | second data value |
#define EventStopD | -( | -- | slot | ) | -EventRecord2 (0xEFE0U+EventLevelDetail+((slot) & 0xFU), ((uint32_t) __FILE__), __LINE__) | -
The macro EventStopD generates a stop event for group D with the specified slot number. The Event Recorder stores filename and line number of the call.
-[in] | slot | slot number (up to 16 slots, 0..15) |
#define EventStopDv | -( | -- | slot, | -
- | - | - | v1, | -
- | - | - | v2 | -
- | ) | -EventRecord2 (0xEFF0U+EventLevelDetail+((slot) & 0xFU), (v1), (v2)) | -
The macro EventStopDv generates a stop event for group D with the specified slot number. The Event Recorder stores the integer value parameters v1, v2.
-[in] | slot | slot number (up to 16 slots, 0..15) |
[in] | v1 | first data value |
[in] | v2 | second data value |
Decode and record the Cortex-M Exception Fault information via Event Recorder. -More...
--Functions | |
void | ARM_FaultRecord (void) |
Output decoded fault information via Event Recorder. | |
Decode and record the Cortex-M Exception Fault information via Event Recorder.
-For an overview see Exception Fault Analysis.
-This section contains the function of the component CMSIS-View:Fault:Record that decodes and records the Cortex-M Exception Fault information using the Event Recorder.
-ARM_FaultRecord | -( | -void | -) | -- |
Output decoded fault information via Event Recorder.
-Decode stored fault information and send information using Event Recorder events.
-Code Example
Functions that store the Cortex-M Exception Fault information into memory. -More...
--Content | |
Macros | |
Fault Storage macro definitions. | |
-Data Structures | |
struct | ARM_FaultInfo_t |
Fault information structure type definition. More... | |
struct | ARM_FaultInfo_t.Version |
struct | ARM_FaultInfo_t.Content |
struct | ARM_FaultInfo_t.Registers |
struct | ARM_FaultInfo_t.ExceptionState |
struct | ARM_FaultInfo_t.FaultRegisters |
-Functions | |
void | ARM_FaultClear (void) |
Clear the saved fault information. | |
uint32_t | ARM_FaultOccurred (void) |
Check if the fault occurred and if the fault information was saved properly. | |
void | ARM_FaultSave (void) |
Save the fault information. | |
void | ARM_FaultExit (void) |
Callback function called after fault information was saved. | |
void | ARM_FaultPrint (void) |
Output decoded fault information via STDIO. | |
-Variables | |
ARM_FaultInfo_t | ARM_FaultInfo |
Fault Information. | |
const char | ARM_FaultVersion [] |
Fault component version information. | |
Functions that store the Cortex-M Exception Fault information into memory.
-For an overview see Exception Fault Analysis.
-This section contains the functions of the component CMSIS-View:Fault:Storage that store the Cortex-M Exception Fault information in uninitialized RAM memory and auxiliary functions.
-struct ARM_FaultInfo_t | -
Fault information structure type definition.
-Structure for storing fault information. Exposed via ARM_FaultInfo.
-Data Fields | ||
---|---|---|
-uint32_t | --MagicNumber | --Magic number (ASCII "FltR") |
-uint32_t | --CRC32 | --CRC32 of the structure content (excluding MagicNumber and CRC32 fields) |
-uint32_t | --Count | --Saved faults counter. |
-struct ARM_FaultInfo_t.Version | --Version | -- |
-struct ARM_FaultInfo_t.Content | --Content | -- |
-struct ARM_FaultInfo_t.Registers | --Registers | -- |
-struct ARM_FaultInfo_t.ExceptionState | --ExceptionState | -- |
-struct ARM_FaultInfo_t.FaultRegisters | --FaultRegisters | -- |
struct ARM_FaultInfo_t.Version | -
Data Fields | ||
---|---|---|
-uint8_t | --Minor | --Fault information structure version: Minor, see ARM_FAULT_FAULT_INFO_VER_MINOR. |
-uint8_t | --Major | --Fault information structure version: Major, see ARM_FAULT_FAULT_INFO_VER_MAJOR. |
struct ARM_FaultInfo_t.Content | -
struct ARM_FaultInfo_t.Registers | -
struct ARM_FaultInfo_t.ExceptionState | -
struct ARM_FaultInfo_t.FaultRegisters | -
ARM_FaultClear | -( | -void | -) | -- |
Clear the saved fault information.
-Code Example
ARM_FaultOccurred | -( | -void | -) | -- |
Check if the fault occurred and if the fault information was saved properly.
-Call during startup to check if a fault occurred and if fault information is available, for example decode the fault information using ARM_FaultPrint or ARM_FaultRecord functions.
-Code Example
ARM_FaultSave | -( | -void | -) | -- |
Save the fault information.
-Call from a fault handler to save current fault information into uninitialized RAM memory.
-Make sure that function is called without changing the Stack Pointer (SP) and Link Register (LR) registers. This is usually done by branching directly to this function from the fault handler.
-This function does not use stack or heap memories.
-Code Example
ARM_FaultExit | -( | -void | -) | -- |
Callback function called after fault information was saved.
-The default implementation will do a system reset.
-If a system reset is not desired, you need to provide a custom implementation of this function with the desired functionality.
-Code Example of overriding ARM_FaultExit function not to reset the system but to loop endlessly:
ARM_FaultPrint | -( | -void | -) | -- |
Output decoded fault information via STDIO.
-To use ARM_FaultPrint, add the ARM_FaultPrint template implementation to the project.
-Code Example
ARM_FaultInfo_t ARM_FaultInfo | -
Fault Information.
-Variable for storing fault information.
- -const char ARM_FaultVersion[] | -
Fault component version information.
-Variable for storing Arm Fault component version.
- -Fault Storage macro definitions. -More...
--Macros | |
#define | ARM_FAULT_FAULT_INFO_VER_MAJOR (1U) |
#define | ARM_FAULT_FAULT_INFO_VER_MINOR (0U) |
Fault Storage macro definitions.
-#define ARM_FAULT_FAULT_INFO_VER_MAJOR (1U) | -
ARM Fault major version used in ARM_FaultInfo_t.Version Major
- -#define ARM_FAULT_FAULT_INFO_VER_MINOR (0U) | -
ARM Fault minor version used in ARM_FaultInfo.Version Minor
- -Collect time-stamped event data about code execution. -More...
--Content | |
Event Recorder Setup | |
Functions that initialize and control the event recorder and configure event filtering. | |
Event Data Recording | |
Functions that record events along with data information. | |
Event Execution Statistics | |
Macros that record start/stop events for the execution statistic display. | |
Event Recorder - Timer | |
Functions that access a configurable hardware timer. | |
Collect time-stamped event data about code execution.
-For an overview see Event Recorder.
-This section explains the functions of the component CMSIS-View:Event Recorder for event annotations in the code.
-Store, record, and analyze Cortex-M Exception Fault information. -More...
--Content | |
Fault Storage | |
Functions that store the Cortex-M Exception Fault information into memory. | |
Fault Record | |
Decode and record the Cortex-M Exception Fault information via Event Recorder. | |
Store, record, and analyze Cortex-M Exception Fault information.
-For an overview see Fault Analysis.
-This section contains the functions of the component CMSIS-View:Fault that store, record, and analyze the Cortex-M Exception Fault information.
-CMSIS-View equips software developers with software components, utilities and methodologies that provide visibility into internal operation of embedded applications and software components.
-With the software components of CMSIS-View, developers can collect time-accurate event-based information, display program execution status, and analyze fault exceptions. It allows to analyze execution flows, debug potential issues, and measure execution times. The data can be observed in real-time in an IDE or can be saved as a log file during program execution.
-A Software Component Viewer Description (*.SCVD) file in SCVD file format (XML) defines the content that is displayed in the Component Viewer and Event Recorder.
-In addition, using the Event Recorder API, you can annotate your code so that you can get statistical data on the time spent in a loop or on the energy consumption (ULINKplus required).
-Key elements of CMSIS-View are:
---Note
-
-- CMSIS-View replaces and extends functionality previously provided as part of Keil::ARM_Compiler pack.
-- See Migrating projects from CMSIS v5 to CMSIS v6 for a guidance on updating existing projects to CMSIS-View.
-
CMSIS-View is actively maintained in CMSIS-View GitHub repository and is released as a standalone CMSIS-View pack in the CMSIS-Pack format.
-The table below explains the content of ARM::CMSIS-View pack.
-Directory | Description |
---|---|
📂 Documentation | Folder with this CMSIS-View documenation |
📂 EventRecorder | Event Recorder implementation |
📂 Examples | Examples projects using CMSIS-View |
📂 Fault | Implementation of the Fault component |
📄 ARM.CMSIS-View.pdsc | Pack description file in CMSIS-Pack format |
📄 LICENSE | License Agreement (Apache 2.0) |
See CMSIS Documentation for an overview of CMSIS software components, tools and specifications.
-This user's guide contains the following chapters:
-eventlist
, a command line tool for processing Event Recorder records stored to a log file.CMSIS-View is provided free of charge by Arm under the Apache 2.0 License.
-