Software Detailed Design
Table of Contents
The software team is responsible for writing the software that will run on all of the different boards. The software currently only includes C code written to run in a FreeRTOS environment, but will eventually include Linux applications written in other languages.
The first major board that needs custom software is the BioCell, which consists of a MSP432, a collection of sensors, and some peripheral devices for controlling the cell.
The software on the MSP432 will be running FreeRTOS, which will handle the scheduling of all the different tasks that the BioCell needs to perform. Between these different tasks communication will be carried out through the use of shared variables. Shared variables are effective in this application because all of the shared data is only updated by a single process since most of it will be either sensor data or sample rates.
In addition to the application code, the BioCell software will also rely on some serial libraries that mostly exist outside of FreeRTOS and will be implement with a combination of custom code and calls to libraries provided by TI.
Most of the tasks that need to be implemented for the application are pretty simple and flowcharts representing sample implementations so some of the BioCell's programs are shown below.
Of these flowcharts the only one that is likely to involve any significant amount of work is the taking of the picture, which could involve some configuration of the camera before it is possible to take an image.
Power Management Board
Much like the BioCell, the Power Management Board (PMB) also uses a MSP432 running FreeRTOS, meaning that it's overall system is very similar to the BioCell.
The flowcharts for the PMB are very similar to those of the BioCell, except that the PMB doesn't actuate any control and doesn't need to take pictures.
Cluster Breakout Board
The Cluster Breakout Board (CBOB) is a board designed around a PocketBeagle running Linux. This changes the system's organization because the different tasks being run are complete programs within the operating system and resources such as the serial I/O's and file-system will be controlled by that operating system.
Data Acquisition Board
The Data ACQuisition (DACQ) board is very similar to the CBOB in that it is also based around a PocketBeagle running Linux and as such all of it's I/O will be done through the operating system instead of directly via a function call.
The communications (comms) board is the most complicated board and is based on designs from previous senior design teams. This board will include a Raspberry Pi Zero running Linux that will be connected to the DACQ, the CBOBs, a radio transceiver, and several other peripherals.
Because the board is complicated, the accompanying software is complicated too. Instead of having several small independent programs, the comms board will run a single monolithic program based on the program used in previous years. A flowchart showing the operation of this program is shown in the image below.
In addition to the diagrams that were created in order to describe the different software systems, there was also a code review in order to ensure the quality of our code stays high and also to help make sure that teams members who aren't currently writing code can get familiarized with the code base and how it works. A screen capture from the code review is shown below.