90 lines
3.0 KiB
Markdown
90 lines
3.0 KiB
Markdown
Yann Sierro - Rémi Heredero
|
|
|
|
AdvEmbSoft/HESSO-Master/2024
|
|
|
|
# BikeComputer
|
|
This is a project done in the course of AdvEmbSoft during the master's degree. It contains a program for spinning bikes.
|
|
|
|
# Configuration
|
|
## Libraries
|
|
Add disco libraries :
|
|
|
|
```terminal
|
|
mbed add https://github.com/SergeAyer/DISCO_H747I.git
|
|
```
|
|
Add sensor libraries :
|
|
|
|
```terminal
|
|
mbed add https://github.com/SergeAyer/advdembsof_library.git
|
|
```
|
|
|
|
Test sensor libraries :
|
|
```terminal
|
|
mbed test -m DISCO_H747I -t GCC_ARM -n advdembsof_library-tests-sensors-hdc1000 --compile --run
|
|
```
|
|
|
|
## Run static scheduling
|
|
On `.mbedignore` put at the end of the file
|
|
```
|
|
static_scheduling_with_event/*
|
|
```
|
|
|
|
On main.cpp include `"static_scheduling/bike_system.hpp"` and use :
|
|
```cpp
|
|
static_scheduling::BikeSystem bikeSystem;
|
|
bikeSystem.start();
|
|
```
|
|
|
|
## Run static scheduling with event queue
|
|
On `.mbedignore` put at the end of the file :
|
|
```
|
|
static_scheduling_with_event/*
|
|
```
|
|
|
|
On main.cpp include `"static_scheduling/bike_system.hpp"` and use :
|
|
```cpp
|
|
static_scheduling::BikeSystem bikeSystem;
|
|
bikeSystem.startWithEventQueue();
|
|
```
|
|
|
|
## Run static scheduling with event scheduling
|
|
On `.mbedignore` put at the end of the file
|
|
```
|
|
static_scheduling/*
|
|
```
|
|
|
|
On main.cpp include `"static_scheduling_with_event/bike_system.hpp"` and use :
|
|
```cpp
|
|
static_scheduling_with_event::BikeSystem bikeSystem;
|
|
bikeSystem.start();
|
|
```
|
|
|
|
# Some questions
|
|
## Question 1
|
|
`If you print CPU statistics at the end of every major cycle (in the super-loop), what CPU usage do you observe? How can you explain the observed CPU uptime?`
|
|
|
|
We observe a 100% usage because on each CPU cycle it compare if time is done.
|
|
|
|
## Question 2
|
|
`If you run the program after the change from busy wait to sleep calls, what CPU usage do you observe? How can you explain the observed CPU uptime?`
|
|
|
|
We can observe only a usage of 75% because the CPU is more on Idle with Thread sleep.
|
|
|
|
## Question 3
|
|
`If you run the static_scheduling_with_event program, what CPU usage do you observe? How can you explain the observed CPU uptime?`
|
|
|
|
We observe a light usage of 1% of CPU. The CPU is now sleeping all the time and doing small task only on event.
|
|
|
|
## Question 4
|
|
`When you run multiple tests for computing the response time of the reset event, what do you observe? Is there an improvement as compared to the static_scheduling::BikeSystem implementation?`
|
|
|
|
` - If you do not press long enough on the push button, the event may be missed and no reset happens.`
|
|
|
|
`Based on the program itself and on the task scheduling, explain these two behaviors. Explain also why such behaviors may be problematic.`
|
|
|
|
We notice, that we miss such less event when is event driven (or not at all). But with a static scheduling the response time is still long because the reset task is call with a certain period.
|
|
|
|
# Issues
|
|
When compile with GCC, the full loop of static scheduling is 2 to 3 ms faster than expected.
|
|
This problem doesn't occur if we compile with ARMC6.
|
|
As the acceptable delta is 2ms and the teacher test is done with GCC, we modify the delta on the test to be 3ms |