diff --git a/DoxyGen/overview/src/benefits.md b/DoxyGen/overview/src/benefits.md index 27af9cb..b400b32 100644 --- a/DoxyGen/overview/src/benefits.md +++ b/DoxyGen/overview/src/benefits.md @@ -2,19 +2,19 @@ ## Test without Hardware {#No_Hardware} -AVH allows to verify your code without the need for physical hardware which provides a robust test environment that enables: +AVH FVP models allow to verify your code without the need for physical hardware which provides a robust test environment that enables: - Early software development for faster time-to-market - Select optimal target device once the software workload is analysed - Re-target applications to production hardware with driver abstractions -## Verify Correctness {#Verify} +## Verify Correctness {#Verify_Benefits} -**AVH FVP** simulation models are validated with the same process as the CPU IP. Specially it allows you to: +AVH FVP simulation models are validated with the same process as the CPU IP. Specially it allows you to: - Perform algorithm testing with identical logical behaviour of the target device - Precisely repeat complex input patterns in CI/CD test environments - Analyse software behaviour with event annotations -## Evaluate Performance {#Evaluate} +## Evaluate Performance {#Perf_Benefits} Software algorithms for Digital Signal Processing (DSP) or Machine Learning (ML) frequently require significant CPU resources and need to be optimized for the target hardware. Comparing performance of such "load heavy" algorithms requires that they can be automatically executed with different configurations parameters but using identical input. The timing in AVH FVP models is based on a instruction could, therefore it is not timing accurate. However the results can still be used for performance estimation and A/B comparison of algorithms. @@ -22,13 +22,13 @@ Software algorithms for Digital Signal Processing (DSP) or Machine Learning (ML) - Compare speed of different implementations of an algorithm (A/B test). - Optimize resources (i.e. RTOS memory buffers for stream processing) towards application requirements. -## Continuous Testing {#CI} +## Continuous Testing {#CI_Benefits} Applying continuous integration work flows for embedded applications can be complicated by the specifics of development environments and the need of executing the program on target hardware. Development teams are often reluctant to spend initial effort setting up the continuous integration (CI) workflow even though the long-term benefits are undisputed as shown on the figure below. ![Comparison of test efforts in CI and no CI workflows](./images/effort_comparison.png) -**AVH FVP** simplifies the setup and use of CI workflows in embedded projects. The integration in tools such as Keil MDK and GitHub Actions simplifies setup of CI workflows. +[AVH FVP Infrastructure](../../infrastructure/html/index.html) with integration in tools such as Keil MDK and GitHub Actions simplifies setup of CI workflows. For unit and integration tests virtual targets offer additional advantages over hardware, including: - **Speed** - no overhead for flashing the application on physical hardware. This saves time on small and fast unit tests. diff --git a/DoxyGen/overview/src/images/img_src.pptx b/DoxyGen/overview/src/images/img_src.pptx index 9484728..7e54e5c 100644 Binary files a/DoxyGen/overview/src/images/img_src.pptx and b/DoxyGen/overview/src/images/img_src.pptx differ diff --git a/DoxyGen/overview/src/images/vht_overview.png b/DoxyGen/overview/src/images/vht_overview.png deleted file mode 100644 index e516512..0000000 Binary files a/DoxyGen/overview/src/images/vht_overview.png and /dev/null differ diff --git a/DoxyGen/overview/src/main.md b/DoxyGen/overview/src/main.md index b51896c..d16188b 100644 --- a/DoxyGen/overview/src/main.md +++ b/DoxyGen/overview/src/main.md @@ -6,10 +6,10 @@ AVH supports the software development cycle of embedded, IoT, and ML applications and provides essential components for effective integration into Continuous Integration/Continuous Delivery ([CI/CD](https://en.wikipedia.org/wiki/CI/CD)) and [MLOps](https://en.wikipedia.org/wiki/MLOps) development flows. -**This documentation** is dedicated to the **AVH FVPs**: Arm Virtual Hardware with Fixed Virtual Platforms, for details about AVH Corellium refer to [AVH Corellium Users's Guide](https://developer.arm.com/docs/107660). - ![AVH FVP: Arm Virtual Hardware with Fixed Virtual Platforms - Overview](./images/avh_overview.png) +Note that this documentation is dedicated to the **AVH FVPs**: Arm Virtual Hardware with Fixed Virtual Platforms, for details about AVH Corellium refer to [AVH Corellium Users's Guide](https://developer.arm.com/docs/107660). + # AVH FVP Models {#avh_models} AVH FVP simulation models are standalone programs that gets executed in the target environment and enable execution of firmware programs on virtual targets. diff --git a/DoxyGen/overview/src/workflow.md b/DoxyGen/overview/src/workflow.md index 2574dfb..c126bb3 100644 --- a/DoxyGen/overview/src/workflow.md +++ b/DoxyGen/overview/src/workflow.md @@ -1,12 +1,21 @@ # Development Workflow {#Development_Workflow} -Arm Virtual Hardware enables a flexible approach that combines desktop and cloud-native development tools thus simplifying and accelerating the development workflow. +Using AVH FVP models enables a flexible approach that combines desktop and cloud-native development tools thus simplifying and accelerating the development of embedded software. -Using software layers, it is possible to develop a new functionality with a physical board and the commit the changes to a cloud based version control system which executes a complete CI/CD integration flow. This ensures that new product innovations are thoroughly tested before they are integrate into final systems. +# Continuous Integration (CI) {#CI_workflow} -![Development Workflow](./images/workflow.png "Development Workflow") +New functionality can be quickly developed on a simulation model with frequent changes being automatically verified upon the code commits to a cloud based version control system such as GitHub which executes a complete CI/CD integration flow. Figure below illustrates the concept. -For ailure analysis, it is currently recommended to use desktop tools such as [Keil MDK](https://www.keil.arm.com/). +![Continuous Integration (CI) workflow](./images/basic_ci_workflow.png "Continuous Integration (CI) workflow") + +1. **Local development** is done by engineers on local machines using common embedded tools such as Keil MDK with AVH FVP models used for MCU simulation. See [AVH FVPs on Desktop](../../infrastructure/html/avh_desktop.html) for details. The software can also be already prepared for real hardware as explained in \ref Physical_Hardware. +2. **Code repository** is used as a source code management system for synchronization, storage and version control. For example GitHub. +3. **CI pipeline** implements the Continuous Integration flow (for example GitHub Actions) that gets triggered on every code update in the target repository. +4. **CI execution** includes automated program build and testing and is performed in the cloud using the AVH Infrastructure, with results being reported back to the repository and user. See [Infrastructure](../../infrastructure/html/index.html) for details. +5.**Failure analysis and local debug**: developer can observe the CI test results and in case of any failures also uses local setup to reproduce + and debug the issues. + +Learn more about benefits from CI workflow at \ref CI_Benefits. # Migration to Physical Hardware {#Physical_Hardware}