-
Notifications
You must be signed in to change notification settings - Fork 427
Firmware m1200
Target
Purpose
Versions
Structure
Boot process
OS and Libraries
Flashing
Interfaces
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
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.
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 |
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.
No analysis of the booting procedure were performed.
No signatures of known libraries were found in the code.
Many ESC firmwares contain "Hello,world!" string, written backwards.
TODO
TODO
This page is created by drone enthusiasts for drone enthusiasts.
If you see a mistake, or you know more about specific subject, or you see an area for improvement for the wiki - create an issue in this project and attach your patch (or describe the change you propose).