Skip to content

Firmware m0400

mefistotelis edited this page Jul 30, 2021 · 12 revisions

Table of Contents

Target
Purpose
Versions
Structure
Boot process
OS and Libraries
Flashing
Interfaces

Target

The module programs internal flash of a micro-controller. Location and type of the chip:

Purpose

Gimbal master control. The programming is responsible of getting data from sensor and user commands from the internal bus, then using this information to properly drive three gimbal arms: yaw, roll and pitch. Each of these arms contains its own micro-controller, connected to gimbal master control via serial interface. The arm controllers are sharing status information using the same serial interface.

Versions

There are multiple versions, unencrypted for most products, but for P3 usually encrypted.

Marking Packages Timestamp Overview
01.29.0000 OSMO_FW_V01.00.01.19 2015-10-15
01.29.0063 OSMO_FW_V01.04.01.80 2015-12-26
01.29.0073 OSMO_FC550_FW_V01.01.00.02 2016-01-19
01.29.0077 OSMO_FW_V01.05.01.88 OSMO_FW_V01.05.01.89 2016-01-31 ... 2016-02-05
01.29.0081 OSMO_FC550_FW_V01.01.00.03 OSMO_FC550_FW_V01.01.00.04 2016-02-24
01.29.0085 OSMO_FW_V01.05.01.92 2016-02-25
01.29.0087 OSMO_FC550_FW_V01.01.00.05 OSMO_FW_V01.05.01.93 2016-02-26 ... 2016-03-01
01.29.0088 OSMO_FW_V01.05.01.94 OSMO_FW_V01.05.01.95 OSMO_FW_V01.05.01.96 2016-03-02 ... 2016-03-10
01.29.0089 OSMO_FC550_FW_V01.01.00.07 OSMO_FW_V01.05.01.97 2016-03-11 ... 2016-03-14
01.29.0091 OSMO_FW_V01.05.02.00 2016-03-16
01.29.0092 OSMO_FC550R_FW_V01.01.00.01 OSMO_FC550_FW_V01.01.00.08 OSMO_FC550_FW_V01.01.00.09 OSMO_FC550_FW_V01.01.00.11 SMO_FC550_FW_V01.01.00.13 OSMO_FW_V01.06.02.10 WM610_FC550_FW_V01.08.00.92 WM610_FW_V01.08.00.92 2016-03-24 ... 2016-04-14
01.30.0256 HG300_FW_V01.01.00.01 OSMO_FC550R_FW_V01.01.00.03 OSMO_FC550R_FW_V01.01.00.04 OSMO_FC550R_FW_V01.01.00.10 OSMO_FC550R_FW_V01.02.00.11 2016-04-21 ... 2016-05-09
01.30.0258 HG300_FW_V01.01.00.02 2016-05-06
01.30.0260 HG300_FW_V01.01.00.04 OSMO_FC350Z_FW_V01.00.00.03 2016-05-19 ... 2016-05-25
01.30.0263 HG300_FW_V01.01.00.05 HG300_FW_V01.01.00.06 HG300_FW_V01.01.00.06_PC 2016-05-30 ... 2016-06-03
01.30.0265 OSMO_FC350Z_FW_V01.00.00.05 2016-06-06
01.30.0266 HG300_FW_V01.01.00.07 HG300_FW_V01.01.00.07_PC OSMO_FC550R_FW_V01.03.00.30 OSMO_FC550_FW_V01.03.00.30 OSMO_FW_V01.08.02.30 2016-06-16 ... 2016-06-17
01.30.0267 HG300_FW_V01.01.00.08 HG300_FW_V01.01.00.08_PC 2016-06-23
01.30.0268 HG300_FW_V01.01.00.11 HG300_FW_V01.01.00.11_PC OSMO_FC350Z_FW_V01.00.00.06 2016-06-29 ... 2016-06-30
01.30.0270 HG300_FW_V01.01.00.12 HG300_FW_V01.01.00.12_PC 2016-07-05
01.30.0272 OSMO_FC350Z_FW_V01.00.00.07 2016-07-08
01.30.0273 HG300_FW_V01.01.00.13 HG300_FW_V01.01.00.13_PC 2016-07-11
01.30.0274 HG300_FW_V01.01.00.14 HG300_FW_V01.01.00.14_PC HG300_FW_V01.01.00.15 HG300_FW_V01.01.00.15_PC 2016-07-18 ... 2016-07-21
01.30.0277 HG300_FW_V01.01.00.17 OSMO_FC350Z_FW_V01.00.00.08 OSMO_FC350Z_FW_V01.00.00.09 2016-07-22 ... 2016-08-04
01.30.0278 OSMO_FC350Z_FW_V01.00.00.11 OSMO_FC350Z_FW_V01.00.00.12 2016-08-04 ... 2016-08-08
01.30.0279 HG300_FW_V01.01.00.18 OSMO_FC350Z_FW_V01.00.00.13 2016-08-15
01.30.0280 OSMO_FC350Z_FW_V01.00.00.14 OSMO_FC350Z_FW_V01.00.00.15 2016-08-15 ... 2016-08-26
01.30.0284 OSMO_FC550R_FW_V01.03.00.40 OSMO_FC550_FW_V01.03.00.40 2016-08-24
01.30.0285 HG300_FW_V01.01.00.19 2016-08-19
01.30.0286 HG300_FW_V01.01.00.21 2016-08-25
01.30.0287 HG300_FW_V01.01.00.16 HG300_FW_V01.01.00.22 2016-08-25 ... 2016-08-30
01.30.0288 OSMO_FC350Z_FW_V01.00.00.16 2016-08-26
01.30.0289 HG300_FW_V01.01.00.23 HG300_FW_V01.01.00.24 HG300_FW_V01.01.00.30 HG300_FW_V01.01.00.30_1 OSMO_FC350Z_FW_V01.00.00.17 OSMO_FC350Z_FW_V01.00.00.20 2016-08-26 ... 2016-10-17
01.30.0291 OSMO_FC350Z_FW_V01.01.00.21 OSMO_FC350Z_FW_V01.01.00.30 OSMO_FC350Z_FW_V01.02.00.32 OSMO_FC350Z_FW_V01.02.00.33 OSMO_FC350Z_FW_V01.02.00.38 2016-09-06 ... 2016-10-08
01.30.0295 HG300_FW_V01.02.00.31 2016-09-21
01.30.0296 OSMO_FW_V01.08.02.35 OSMO_FW_V01.08.02.36 2016-09-21 ... 2016-09-24
01.30.0299 HG300_FW_V01.02.00.33 OSMO_FW_V01.08.02.40 2016-09-26
01.30.0300 HG300_FW_V01.02.00.34 HG300_FW_V01.02.00.40 HG300_FW_V01.03.00.45_new 2016-10-10 ... 2016-11-17
01.30.0303 OSMO_FC350Z_FW_V01.02.00.40 OSMO_FC350Z_FW_V01.03.00.50 WM610_FC350Z_FW_V01.09.01.40 2016-10-17 ... 2016-11-14
01.30.0305 HG300_FW_V01.03.00.41 HG300_FW_V01.03.00.42 HG300_FW_V01.03.00.44 HG300_FW_V01.03.00.45 HG300_FW_V01.03.00.46 HG300_FW_V01.03.00.50 2016-10-25 ... 2016-11-22
01.30.0306 HG300_FW_V01.03.00.43 HG300_FW_V01.03.00.43_3 HG300_FW_V01.04.00.51 HG300_FW_V01.04.00.52 HG300_FW_V01.04.00.53 HG300_FW_V01.04.00.54 2016-11-11 ... 2016-12-21
01.30.0308 HG300_FW_V01.04.00.55 HG300_FW_V01.04.00.56 HG300_FW_V01.04.00.60 2016-12-22 ... 2017-01-09
01.30.0309 HG300_FW_V01.04.00.60-4 2017-01-09
01.36.0000 P3S_FW_V01.01.0008 P3S_FW_V01.01.0009 P3X_FW_V01.01.0006 P3X_FW_V01.01.0008 P3X_FW_V01.01.0009 P3X_FW_V01.01.1003 2015-04-30 ... 2015-05-12
01.38.0000 P3S_FW_V01.02.0007 P3S_FW_V01.02.0008 P3X_FW_V01.01.1007 P3X_FW_V01.02.0006 2015-06-12 ... 2015-07-10 Encrypted
01.40.0000 P3C_FW_V01.00.0014_Beta P3C_FW_V01.00.0017_Beta P3C_FW_V01.00.0020 P3S_FW_V01.03.0020 P3X_FW_V01.03.0020 P3X_FW_V01.04.0005 2015-07-21 ... 2015-08-21 Encrypted
01.41.0000 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 P3S_FW_V01.04.0010 P3S_FW_V01.05.0030 P3S_FW_V01.06.0040 P3S_FW_V01.07.0060 P3XW_FW_V01.01.0000 P3XW_FW_V01.02.0010 P3XW_FW_V01.03.0020 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 2015-09-02 ... 2016-03-15 Encrypted
01.44.0000 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 P3S_FW_V01.08.0080 P3S_FW_V01.09.0060 P3XW_FW_V01.04.0030 P3XW_FW_V01.04.0036 P3XW_FW_V01.05.0040 P3X_FW_V01.08.0080 P3X_FW_V01.09.0060 2016-04-05 ... 2016-09-27 Encrypted
01.48.0000 P3C_FW_V01.07.0086 P3S_FW_V01.10.0090 P3X_FW_V01.10.0090 2016-09-18 ... 2016-11-07
01.51.0000 P3C_FW_V01.07.0090 2016-11-08

Structure

The module is usually unencrypted, but there are encrypted versions too.

The unencrypted firmware is a memory image of ARM binary. During startup, it is being loaded into memory at constant address and executed by a loader. Such memory images are usually prepared by first linking the file with all libraries, and then using objcopy -O binary to get the final file without ELF header. The ELF header can be re-created if the address and boundaries of sections are known.

Base address is:

  • 0x08008000 in P3X and P3S

Boot process

No analysis of the booting procedure were performed.

OS and Libraries

TODO

Flashing

TODO

Interfaces

TODO

Clone this wiki locally