• No se han encontrado resultados

Resultados de los proyectos de investigación

y de coordinación internacional 3.7 Reuniones internacionales

REUNIONES NO ASIGNADAS A UN PROGRAMA ESPECÍFICO

4.2 Resultados de los proyectos de investigación

6.1.2 Fault Injection Characterization of the Tool ... 97 6.2 WdgM Implementations Assessment ... 98 6.2.1 Error Detection and Error Recovery Coverage ... 98 6.2.2 Timing Evaluation of the WdgM... 99 6.2.3 Robustness of the implementation of the WdgM ... 100 6.3 Front-Light Software Verification ... 103 6.3.1 Verification of one Line of FMECA: S-Shaped Verification ... 103 6.3.2 Global Verification of the FMECA Spreadsheet ... 104 6.4 Conclusion ... 105

6.1 Fault Injection Platform

A fault injection tool has been developed at Valeo, in order to implement the FI campaigns designs from the safety analyses. We mainly focus on the integration of two techniques: Software- Implemented Fault Injection (SWIFI) and Nexus-Based Fault Injection. These two methods have been introduced in Chapter 1.

6.1.1 Fault Injection Environment

Figure 6.1 shows an overview of the FI Environment

FIGURE 6.1FAULT INJECTION ENVIRONMENT

This environment encompasses:

The Target System is composed of the Front-Light Manager application (binary files

ELF compiled from sources with Wind River Compiler) running on the SPC56EL70

microcontroller described before.

The Controller is composed of the interface of the debugger Lauterbach TRACE 32. It

enables fault injection experiments via scripts (PRACTICE Language). It also captures the execution trace of the target, controls the access to the memory for monitoring some variables, and provides commands to start the fault injection test cases according to a specified workload.

 The Lauterbach debugger (Lauterbach, 2015) is a central component of the

Environment. It is connected to the controller via a USB link and to the target throughout a Nexus Probe. The debugger provides access to all memory sections of the microcontroller, particularly by monitoring the trace of the execution of the application (Monitor). Data Collector Data Analyzer FI Tests Logs

ECU external

fault injection

ECU internal

fault injection

+

(Lauterbach tool : Debugger)

NEXUS / JTAG Adapter

Debugger Interface (Trace 32) USB Microcontroller SPC 56EL70 Application Binary files FI Tests Logs FI Tests Logs Application Source filesSource filesApplication Application

Source files Application Source files FI Specific modification Workload library Funct. Req. & Behavioral models Fault library Safety Analyses (FMECA, FTA…) Measures Manual Compiler

Wind River Flashing

FI Tests Logs FI Tests Logs FI Tests Scripts

Fault injector, Monitor and Workload generator

Controller

The Lauterbach debugger is also a Fault Injector, as it allows corrupting/modifying memory locations of the application. These capabilities are provided by the

implementation of Nexus Class 3+ defined by the Nexus 5001 ForumTM (Nexus5001,

2015). This class of debugger enables two important features to perform read/write into the memory without any impact on the real-time execution of the application. This “On- the-fly” runtime memory access does not add temporal overhead. Moreover, the debugger also takes advantages of on-chip watch points (a watch point enables the activation of the fault injection experiments to be triggered or signaling application events without stopping the application). Finally, the debugger enables monitoring the behavior of the execution of the Software through the memory to collect observation data (readouts) and to synchronize the activation of the experiments (Workload Generator), and finally, modifying the memory to inject fault in memory, registers, etc. (Fault Injector)

 We also use SWIFI method to inject specific fault/error/failure. Hence, we instrument

the code to mimic the faulty behavior directly by modifying the source code of the faulty software module, and finaly compiling the mutant application.

The Data Collector stores the data collected during the experiments into log files. The-

se are timing information, variables values and events.

The Data Analyzer in our environment is mostly manual. The data is gathered automat-

ically in the logs, however the analysis of the results has to be done manually, e.g., the categorization of the experiments.

6.1.2 Fault Injection Characterization of the Tool

We present the characterization of the fault injection techniques integrated in tool by considering the following properties, defined in (Arlat, et al., 2003):

Reachability: Using both pre-runtime SWIFI and Nexus-based fault injection, we are

able to manage a high level of reachability. Indeed, we are able to inject fault directly in the memory, the CPU registers using the debugger. It is also possible using SWIFI to corrupt higher levels of granularity, by injecting information explicitely processed by the computing system.

Controllability, with respect to space and time: The controllability is also high as the fault can be triggered using low-level mechanisms from the debuggers (break and watch points in the program flow, writing/reading access to specific data). It may also be used together with SWIFI, for instance to trigger a branch of instrumented code.

Repeatability (with respect to experiments) and Reproductibility (with respect to

results): A high repeatability is attained thanks to the high level of controllability. However, a distributed architecture with complex environment (multiple ECU on the network) may be more difficult to synchronize and thus, it would be more difficult to ensure repeadability in this case. In our case the microcontroller behavior allows a high repeatability

Non-intrusiveness: The intrusiveness of the Nexus capabilities is very low. The

intrusion can also be related to the use of watch points, but there are few “real-time” watch points in practice. In addition considering the SWIFI, it is clear that the intrusiveness depends on the size of the corruption made in the source code. In our case, this second type of intrusion is negligible. Then, the use of SWIFI does not modify the behaviour or the structure of the safety mechanisms. Otherwise, the experiment results may be biased.

Time measurement (e.g., error detection latency): Here, time measurements are

performed by the debugger. It is possible to get the execution time between two events.

Efficacy to generate significant experiments: Generally, this property aims at

characterizing a fault injection technique together with a fault model. In our approach, the efficacy is based on the identification of the tests cases, more precisely the selection of the fault to be injected.

To conclude, the tool enables handling most of the Fault Injection experiments on any target application running on any micro-controller.