...
The Zeropilot design document serves to explain explains the overall software architecture and the functionality of each part of the design using intuitive words and graphical representation. This document is also responsible for recording the design changes that have been made since the beginning of this project. Hopefully, by recording the reasonings for design decisions here, this document could enhance the current EFS members' understanding of ZP3.5 to the current EFS members and drive ZP towards better.
Structure for Milestones 1 & 2
Drawio | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
Unintuitive to Flash the Code: To compile with the former code is easy, we only need to run the script. But flashing the code is a little cumbersome. The way we did it, is by making a dummy stm32 project and directing the elf file we compile in the stm32 setting
Difficult to Debug Difficulty in Debugging the Code: With the The newer version of stm32 ide , it no longer supports opening directories that don’t belong to a stm32 project. And since our board files are inside the ZP, all other main folders don’t show up in the stm32 ide, causing difficulties in debugging with stm32 ide. Unit tests in this version of zp
Driver Dev Blocking Software Dev: No proper driver interface layer is defined for current drivers. That means the software doesn’t know what the driver interface function is supposed to look like before it is done. The software couldn’t mock the driver function since drivers are missing an abstraction layer.
Confusing to Manage: This is more of a leader’s(my) issue. I found that since basically, each people manage their task, and different people have different implementations in their code. It makes ZP a difficult project to manage. Sometimes, we don’t know what we want, or sometimes we don’t know where we are supposed to implement the functionality we wantThe lack of design restrictions made this project difficult to integrate and caused incoherence.
Strucuture of Milestone M3
Inc drawio | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
Board Files at the same level as the Software Package
The idea here is to compile Zeropilot Software as an external library, so it fits any board file we wish to flash
Isolates hardware and software by folder structure
Driver Interface and FreeRTOS Interface
Provide interface layers that define the data types and methods required by managers.
Removed the dependencies between manager development and driver code development
Allowing mock driver and mock FreeRTOS to be run in unit test since the real code is not unit testable.
Mock Drivers
Mock FreeRTOS
...