Skip to content
Snippets Groups Projects
README.md 2.88 KiB
Newer Older
# DIOT Monitoring Module (MoniMod)

This is a SAMD21-based monitoring module for the DI/OT power supply
and fan tray.
Christos Gentsos's avatar
Christos Gentsos committed

*Disclaimer: this README is still incomplete, it will be properly
populated in time.*
Christos Gentsos's avatar
Christos Gentsos committed

## Repository structure

Apart from the MoniMod PCB that can be found in the `monimod-pcb`
directory, there are currently three separate programs in this
repository:

1. The main FW, that will implement most functionality. This lives in
   the `main_fw` directory.
2. The bootloader, that will implement remote programming (it doesn't
   yet). It lives in the `bootloader` directory.
3. The simple I2C master written to help develop the main FW lives in
   the `test_master` directory.

Apart from these four program directories, there is a `common`
directory that hosts some code that is shared between different
programs and a `utils` directory that will be used to host some
general development utilities. There is also a `build` directory which
hosts a very simple top-level makefile that simply builds and gathers
all FW binaries in one place.

Each program directory has an `atmel_start_prj` subdirectory: this is
a testament to the use of the [Atmel START](https://start.atmel.com/)
tool to generate drivers, other supporting code, linker scripts and
makefiles. The structure of the generated files has been slightly
altered, creating the `src`, `include` and `build` subdirectories
outside of `atmel_start_prj`.


## Draft but indicative FW TODO checklist

- [x] Use USB as a terminal to print debug messages and possibly
      interact with the program
- [x] Use the ADC to read the output of an
      [LM61](http://www.ti.com/lit/ds/symlink/lm61.pdf) temperature
      sensor
- [x] Develop a simple I2C master to help with the development of the
      main FW
- [x] Have basic I2C communication between the test master and the
      main FW
- [x] Develop the [SMBus](http://smbus.org/specs/smbus20.pdf) write /
      read commands for the master and slave sides
- [x] Add extended commands compatible with
      [PMBus](pmbus.org/Assets/PDFS/Public/PMBus_Specification_Part_II_Rev_1_0_20050328.pdf)
      to add remote reprogramming capabilities
- [x] Add (per-command) callback support on command writes and reads
- [x] Reset over I2C
- [x] Have remote reprogramming working as part of the main FW
- [x] Add I2C functionality to the bootloader, move remote
      reprogramming functionality entirely there
- [x] Implement SMBus block write and block read commands
- [x] Refactor the PMBus commands model to make it more practical
- [x] Add I2C Packet Error Checking (PEC) for robustness (as described
      in the [SMBus
      specification](http://smbus.org/specs/smbus20.pdf), pp. 26-27)
- [x] Implement the PMBus command subset for voltage, current and
      temperature monitoring
- [x] Implement the PMBus command subset for fan control and
- [x] Add extra radiation fault mitigation measures
- [ ] . . . ?