| Interrupt-driven embedded systems are used in high reliable and stable fields widely.Because the data processing in this kind of systems depends on interrupts frequently,some concurrent problems are often caused.This kind of concurrent problems can be roughly divided into four categories:data race problem,over time problem,shared identification problem and data integrity problem.Data race problem is one of the most challenge problems between them.At present,lots of researchers have tried to resolve this topic.Some researches focused on the dynamic interrupt triggering,and some focus on model checking.Additionally,other researches tried to use static analysis or dynamic execution.But there is still no proper solution until now.Based on a host of investigations and surveys,this thesis introduces a data race detection method that combines static and dynamic strategy,which takes advantage of the results of static analysis to guide the dynamic execution,in order to reduce the false positives.In this thesis,we use a simple example to exhibit our main ideas,and have implemented a prototype named iRacer to demonstrate this work.At the last,six cases are provided to affirm the value of our work.The main work of this thesis is as follows:1.We propose a static analysis method which is based on control flow graph.After the pre-processing,the corresponding reduced control flow graphs can be built.With those graphs,interrupt-triggering-analysis and shared-resources-accessing analysis can be done,and then output the potential data race results and their corresponding execution paths.2.We propose a dynamic method that can use the results of static analysis to check their correctness.With the help of simulation tool,we can track and control the executing trace,even sort the execution results.3.Based on the methods above,we implement a prototype named iRacer and use six cases to test its correctness and efficiency. |