Skip to content

Firmware m1200

mefistotelis edited this page Jul 30, 2021 · 6 revisions

Table of Contents

Target
Purpose
Versions
Structure
Boot process
OS and Libraries
Flashing
Interfaces

Target

The firmwares m1200-m1203 are all copy of the same ESC firmware. Location of the chip:

  • in P3X and P3S, it programs TMS320F280 micro-controller, often rebranded as IESC2000, which is located on P3X ESC center board
  • in P3C and P3XW, it it programs micro-controller located on P3C ESC center board
  • in other products, the location is unknown

Purpose

Electronic Speed Control circuit for each motor has its own micro-controller which communicates with motor driver. The micro-controller controls status of the motor driver and finds possible issues and parameters outside of acceptable ranges. It is connected via UART to the Flight Controller, and periodically sends reports about the ESC status. Speed of the motor is controlled by a PWM line, separate to the UART communication.

ESC mmicro-controller firmware contains a verification function to be performed before the motor starts, as well as in-flight parameters verification function. Based on verification results, ESC firmware shares ESC Status bits with the Flight Controller. Flight Controller typically disallows arming motors if any status bits are set before the flight starts.

UART interface is also used to update firmware within the ESC micro-controller.

Versions

There are multiple versions, usually encrypted.

Marking Packages Timestamp Overview
01.00.0001 ESC_FW_V01.00.00.11 2017-01-03 Unencrypted
01.06.0515 A3_FW_V01.06.00.00 A3_FW_V01.06.00.01 AM603_FW_V01.00.00.43(ESC) 2016-10-20 ... 2016-10-26
01.07.0000 P3S_FW_V01.01.0008 P3X_FW_V01.01.0006 P3X_FW_V01.01.0008 P3X_FW_V01.01.1003 2015-04-30 ... 2015-05-06
01.08.0000 P3S_FW_V01.01.0009 P3S_FW_V01.02.0007 P3S_FW_V01.02.0008 P3S_FW_V01.03.0020 P3X_FW_V01.01.0009 P3X_FW_V01.01.1007 P3X_FW_V01.02.0006 P3X_FW_V01.03.0020 P3X_FW_V01.04.0005 2015-05-12 ... 2015-08-21
01.10.0000 P3S_FW_V01.04.0010 P3S_FW_V01.05.0030 P3S_FW_V01.06.0040 P3S_FW_V01.07.0060 P3S_FW_V01.08.0080 P3S_FW_V01.09.0060 P3X_FW_V01.04.0010 P3X_FW_V01.05.0030 P3X_FW_V01.06.0040 P3X_FW_V01.07.0043_beta P3X_FW_V01.07.0060 P3X_FW_V01.08.0080 P3X_FW_V01.09.0060 2015-09-02 ... 2016-05-19
01.11.0000 P3S_FW_V01.10.0090 P3X_FW_V01.10.0090 WM610_FC350Z_FW_V01.09.01.40 WM610_FC550_FW_V01.08.00.92 WM610_FW_V01.08.00.92 2016-03-24 ... 2016-11-09
01.12.0000 MATRICE100_FW_V01.02.00.60 MATRICE100_FW_V01.02.00.70 MATRICE100_FW_V01.02.00.80 MATRICE100_FW_V01.02.00.90 MATRICE100_FW_V01.03.01.00_pc MATRICE100_FW_V01.03.02.55_pc 2016-02-18 ... 2016-06-30
01.31.0000 MATRICE600_FW_V01.00.00.27 MATRICE600_FW_V01.00.00.27_nw MATRICE600_FW_V01.00.00.28 MATRICE600_FW_V01.00.00.39 MATRICE600_FW_V01.00.00.39_nw 2016-04-18 ... 2016-08-18
01.35.0000 MATRICE600PRO_FW_V01.00.00.01 MATRICE600PRO_FW_V01.00.00.51 MATRICE600PRO_FW_V01.00.00.53 MATRICE600PRO_FW_V01.00.00.54 MATRICE600PRO_FW_V01.00.00.55 2016-10-17 ... 2016-11-20
01.35.0000 MATRICE600PRO_FW_V01.00.00.62 MATRICE600PRO_FW_V01.00.00.63 2016-12-19 Unencrypted
01.35.0000 MATRICE600_FW_V01.00.00.42 MATRICE600_FW_V01.00.00.43 MATRICE600_FW_V01.00.00.44 MATRICE600_FW_V01.00.00.51 MATRICE600_FW_V01.00.00.53 MATRICE600_FW_V01.00.00.54 MATRICE600_FW_V01.00.0090 MATRICE600_FW_V02.00.00.21 MATRICE600_FW_V02.00.00.95(polar) MG1S_FW_V01.00.00.02 2016-09-27 ... 2016-11-29
01.36.0004 MATRICE600_FW_V01.00.00.56 2016-12-06 Unencrypted
01.37.0000 MATRICE600PRO_FW_V01.00.00.60 MATRICE600PRO_FW_V01.00.00.61 2016-12-14 ... 2016-12-16 Unencrypted
01.37.0000 MATRICE600PRO_FW_V01.00.00.64 2016-12-19
01.37.0000 MATRICE600PRO_FW_V01.00.00.80 MATRICE600_FW_V01.00.00.60 MATRICE600_FW_V01.00.00.80 2016-12-14 ... 2017-01-04 Unencrypted
05.05.0000 P3C_FW_V01.00.0014_Beta 2015-07-21 Unencrypted
05.08.0000 P3C_FW_V01.00.0017_Beta 2015-07-30 Unencrypted
05.09.0000 P3C_FW_V01.00.0020 P3C_FW_V01.01.0030 P3C_FW_V01.02.0040 P3C_FW_V01.03.0050 P3C_FW_V01.04.0060 P3C_FW_V01.04.0060 P3C_FW_V01.05.0070 P3C_FW_V01.05.0074 P3C_FW_V01.06.0083 P3C_FW_V01.06.0086 P3C_FW_V01.07.0082 P3C_FW_V01.07.0084 P3C_FW_V01.07.0086 P3C_FW_V01.07.0090 P3XW_FW_V01.01.0000 P3XW_FW_V01.02.0010 P3XW_FW_V01.03.0020 P3XW_FW_V01.04.0030 P3XW_FW_V01.04.0036 P3XW_FW_V01.05.0040 2015-08-12 ... 2016-11-08 Unencrypted

Structure

The unencrypted firmware in most platforms has 64-byte header, mostly filled with zeros. The header starts with 7F 00, then contains 32-bit firmware version marking, followed by release number (an integer which increases with each firmware release).

After the header, code part starts. That code is loaded at constant offset by a bootloader which resides in ROM programmed during chip production.

Boot process

No analysis of the booting procedure were performed.

OS and Libraries

No signatures of known libraries were found in the code.

Many ESC firmwares contain "Hello,world!" string, written backwards.

Flashing

TODO

Interfaces

TODO

Clone this wiki locally