diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2022-09-23 10:31:27 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2022-09-23 10:31:27 +0200 |
commit | eb814997947baab1a4559f8fbc69858614fe1424 (patch) | |
tree | f9a6d07fb1a92a77f4a92e693f41eb1d96f8fc52 /README.md | |
parent | 4023936418a70b760f68b0fd4a9db86caa4108ba (diff) |
markdown
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 32 |
1 files changed, 11 insertions, 21 deletions
@@ -1,26 +1,16 @@ # NFP Model Generation for Peripherals and Software Product Lines -**dfatool** is a set of utilities for automated measurement of non-functional -properties of software product lines and embedded peripherals, and automatic -generation of performance models based upon those. - -Measurements and models for peripherals generally focus on energy and timing -behaviour expressed as a [Priced Timed Automaton (PTA)](https://ess.cs.uos.de/static/papers/Friesel_2018_sies.pdf) -with [Regression Model Trees (RMT)](https://ess.cs.uos.de/static/papers/Friesel-2022-CPSIoTBench.pdf). - -Measurements and models for software product lines focus on ROM/RAM usage and -may also include attributes such as throughput, latency, or energy. The -variability model of the software product line must be expressed in the -[Kconfig -language](https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt). +**dfatool** is a set of utilities for automated measurement of non-functional properties of software product lines and embedded peripherals, and automatic generation of performance models based upon those. + +Measurements and models for peripherals generally focus on energy and timing behaviour expressed as a [Priced Timed Automaton (PTA)](https://ess.cs.uos.de/static/papers/Friesel_2018_sies.pdf) with [Regression Model Trees (RMT)](https://ess.cs.uos.de/static/papers/Friesel-2022-CPSIoTBench.pdf). + +Measurements and models for software product lines focus on ROM/RAM usage and may also include attributes such as throughput, latency, or energy. +The variability model of the software product line must be expressed in the [Kconfig language](https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt). Generated models can be used with [kconfig-webconf](https://ess.cs.uos.de/git/software/kconfig-webconf). This allows for [Retrofitting Performance Models onto Kconfig-based Software Product Lines](https://ess.cs.uos.de/static/papers/Friesel-2022-SPLC.pdf). -The name **dfatool** comes from the fact that benchmark generation for embedded -peripherals relies on a deterministic finite automaton (DFA) that specifies the -peripheral's behaviour (i.e., states and transitions caused by driver functions -or signalled by interrupts). It is meaningless in the context of software -product lines. +The name **dfatool** comes from the fact that benchmark generation for embedded peripherals relies on a deterministic finite automaton (DFA) that specifies the peripheral's behaviour (i.e., states and transitions caused by driver functions or signalled by interrupts). +It is meaningless in the context of software product lines. ## Energy Model Generation @@ -30,13 +20,13 @@ to be documented. ### Running Benchmarks -**bin/explore-kconfig.py** works with any product line that supports kconfig and is capable of describing the non-functional properties of individual products. -To do so, it needs to support the **make**, **make clean**, **make randconfig**, **make nfpvalues** and **make nfpkeys** commands. +[[bin/explore-kconfig.py]] works with any product line that supports Kconfig and is capable of describing the non-functional properties of individual products. +To do so, it needs to provide the **make**, **make clean**, **make randconfig**, **make nfpvalues** and **make nfpkeys** commands. **make nfpvalues** is expected to print a JSON dict describing the non-functional property values of the current build; **make nfpkeys** is expected to print a JSON dict with meta-data about those. All of these commands can be changed, see `bin/explore-kconfig.py --help`. -See **examples/kconfig-static** for a simple example project, and **examples/busybox.sh** for a more complex one. +See [[examples/kconfig-static]] for a simple example project, and [[examples/busybox.sh]] for a more complex one. The `make_benchmark` section of **.gitlab-ci.yml** shows how to run benchmarks and generate a model for the example project. As benchmark generation employs frequent recompilation, using a tmpfs is recommended. |