Difference between revisions of "Firmware spelunking"

From Sonic Potions Wiki
Jump to: navigation, search
(Created page with "This page was not written by Julian! These are just my notes from a beginning microcontroller programmer exploring the firmware. == Overview == The drumsynth firmware (ie., ...")
 
(Communications)
 
Line 135: Line 135:
  
 
== Communications ==
 
== Communications ==
 +
mainboard (stm32) <-> frontpanel(AVR) => UART
 +
 +
SD-Card (AVR + STM32) => SPI
 +
 +
Codec <-> STM32 => I2S
  
 
== Sound ==
 
== Sound ==
  
 
== Sequencer ==
 
== Sequencer ==

Latest revision as of 18:53, 27 February 2014

This page was not written by Julian! These are just my notes from a beginning microcontroller programmer exploring the firmware.

Overview

The drumsynth firmware (ie., not the interface board) is divided into a few logical parts: the hardware handling, the communications interfaces (MIDI via UART and USB, SD over SPI), the sound generation and the sequencer.

Files and folders

 
  ├── AudioCodecManager
  │   ├── AudioCodecManager.c
  │   └── AudioCodecManager.h
  ├── config.h
  ├── datatypes.h
  ├── DSPAudio 
  │   ├── 1PoleLp.c 
  │   ├── 1PoleLp.h
  │   ├── automationNode.c
  │   ├── automationNode.h
  │   ├── BufferTools.c
  │   ├── BufferTools.h 
  │   ├── CymbalVoice.c 
  │   ├── CymbalVoice.h
  │   ├── Decay.c
  │   ├── Decay.h
  │   ├── distortion.c
  │   ├── distortion.h
  │   ├── dither.c
  │   ├── dither.h
  │   ├── DrumVoice.c
  │   ├── DrumVoice.h
  │   ├── HiHat.c
  │   ├── HiHat.h
  │   ├── lfo.c
  │   ├── lfo.h
  │   ├── mixer.c
  │   ├── mixer.h
  │   ├── modulationNode.c
  │   ├── modulationNode.h
  │   ├── Oscillator.c
  │   ├── Oscillator.h
  │   ├── random.c
  │   ├── random.h
  │   ├── ResonantFilter.c
  │   ├── ResonantFilter.h
  │   ├── Samples.c
  │   ├── Samples.h
  │   ├── SlopeEg2.c
  │   ├── SlopeEg2.h
  │   ├── snapEg.c
  │   ├── snapEg.h
  │   ├── Snare.c
  │   ├── Snare.h
  │   ├── squareRootLut.c
  │   ├── squareRootLut.h
  │   ├── transientGenerator.c
  │   ├── transientGenerator.h
  │   ├── transientTables.c
  │   ├── transientTables.h
  │   ├── wavetable.c
  │   └── wavetable.h
  ├── globals.h
  ├── hardfaultHandler.c
  ├── hardfault.S
  ├── Hardware
  │   ├── cs4344_cs5343.c
  │   ├── cs4344_cs5343.h
  │   ├── FIFO.c
  │   ├── FIFO.h
  │   ├── SD_FAT
  │   │   ├── diskIo.c
  │   │   ├── diskio.h
  │   │   ├── ff.c
  │   │   ├── ffconf.h
  │   │   ├── ff.h
  │   │   ├── integer.h
  │   │   ├── SD_Manager.c
  │   │   ├── SD_Manager.h
  │   │   ├── SD_routines.c
  │   │   ├── sd_routines.h
  │   │   ├── SPI_routines.c
  │   │   └── SPI_routines.h
  │   ├── TriggerOut.c
  │   ├── TriggerOut.h
  │   └── USB
  │       ├── usb_bsp.c
  │       ├── usbd_desc.c
  │       ├── usbd_desc.h
  │       ├── usbd_usr.c
  │       ├── usb_manager.c
  │       ├── usb_manager.h
  │       ├── usb_midi_core.c
  │       └── usb_midi_core.h
  ├── main.c
  ├── MIDI
  │   ├── frontPanelParser.c
  │   ├── frontPanelParser.h
  │   ├── MidiMessages.h
  │   ├── MidiNoteNumbers.h
  │   ├── MidiParser.c
  │   ├── MidiParser.h
  │   ├── MidiVoiceControl.c
  │   ├── MidiVoiceControl.h
  │   ├── ParameterArray.c
  │   ├── ParameterArray.h
  │   ├── Uart.c
  │   ├── Uart.h
  │   └── valueShaper.h
  ├── SampleRom
  │   ├── flash_if.c
  │   ├── flash_if.h
  │   ├── SampleMemory.c
  │   └── SampleMemory.h
  ├── Sequencer
  │   ├── clockSync.c
  │   ├── clockSync.h
  │   ├── EuklidGenerator.c
  │   ├── EuklidGenerator.h
  │   ├── sequencer.c
  │   ├── sequencer.h
  │   ├── SomData.c
  │   ├── SomData.h
  │   ├── SomGenerator.c
  │   └── SomGenerator.h
  ├── startup_stm32f4xx.S
  ├── stm32f4xx_conf.h
  ├── stm32f4xx_it.c
  ├── stm32f4xx_it.h
  └── system_stm32f4xx.c


Hardware handling

Communications

mainboard (stm32) <-> frontpanel(AVR) => UART

SD-Card (AVR + STM32) => SPI

Codec <-> STM32 => I2S

Sound

Sequencer