MSB2 Firmware: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 13: | Line 13: | ||
== State Diagram == | == State Diagram == | ||
The system has two main states, the default wait state and the running state. The other states are used for setting up various components of the system. Once everything is working; however, the user simply enters the running state and begins recording data. | The system has two main states, the default wait state and the running state. The other states are used for setting up various components of the system. Once everything is working; however, the user simply enters the running state and begins recording data. In addition to the command states shown here available here several other commands are available (depending upon the hardware) which can be used to manipulate various parts of the system. | ||
<ul> | <ul> | ||
[[image:MSB_Firmware_State_Diagram.png|thumb|left|800px|System state diagram for communicating with the MSB firmware, the power point version is available [[media:MSB_Firmware_State_Diagram-ppt.png|here]] ]] | [[image:MSB_Firmware_State_Diagram.png|thumb|left|800px|System state diagram for communicating with the MSB firmware, the power point version is available [[media:MSB_Firmware_State_Diagram-ppt.png|here]] ]] | ||
Line 62: | Line 62: | ||
|style="width:35px"| '#' || 0x23 || style="width:35px"| '|' || 0x7C || style="width:35px"| || 0x10 || style="width:35px"| 0 || 0x00 | |style="width:35px"| '#' || 0x23 || style="width:35px"| '|' || 0x7C || style="width:35px"| || 0x10 || style="width:35px"| 0 || 0x00 | ||
|} | |} | ||
</ul> | </ul> |
Revision as of 01:07, 25 March 2007
Overview
The MSB2 and LSB both use the same firmware core with custom modifications to support the sensors and other subsystems specific to each platform. The goals of the firmware are:
- Encapsulate all low level functions in easily accessible commands
- Hides all startup/initialization routines
- Provide a variable sampling schedule (with some constraints) that automatically handles powering off unused sensors
- Provide commands for accessing calibration and other sensor metadata
- Sample and send data via a hi-speed binary uart interface
- Communicates with any embedded platform
- Communicates with any desktop/laptop/handheld/cell phone with a available uart port
State Diagram
The system has two main states, the default wait state and the running state. The other states are used for setting up various components of the system. Once everything is working; however, the user simply enters the running state and begins recording data. In addition to the command states shown here available here several other commands are available (depending upon the hardware) which can be used to manipulate various parts of the system.
Communication protocol
Communication with the MSB Firmware takes place over the first uart on the atmel, at 921,600 baud, with an option of having flow control.
Commands
-
Commands are 6-character sequences where '!' (hex 0x21) indicates the start of a command. If you make a mistake when sending a command you can send another '!' this resets the internal parser which will then wait for your 5-character command.
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
'!' | 0x21 | Command and arguments |
Note: '!' is a reserved character and may not be used as an argument for any command. In cases where '!' may be a possible arguments other means of indicating this value have been added.
Packet format (from the MSB Firmware)
-
All MSB firmware responses will be sent back as packets that begin with 2 characters '#' followed by '|', then an identifier byte describing what the packet is and how it should be interpreted.
Byte 0 | Byte 1 | Byte 3 | |||
---|---|---|---|---|---|
'#' | 0x23 | '|' | 0x7C | ID |
Example Communication Sequence
-
Here's an example of what a host computer would send to query the state of the LED and what it would receive from the MSB:
Host sends: '!query' + 0x10 [query command + 0x10 to indicate a LED query]
Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
'!' | 0x21 | 'q' | 0x71 | 'u' | 0x75 | 'e' | 0x65 | 'r' | 0x72 | 'y' | 0x79 | 0x10 |
MSB Firmware responds with: ['#|' start header + 0x10 to indicate a LED packet and 0x00 the current state of the LEDs
Byte 0 | Byte 1 | Byte 2 | Byte 3 | ||||
---|---|---|---|---|---|---|---|
'#' | 0x23 | '|' | 0x7C | 0x10 | 0 | 0x00 |