Skip to content

Firmware m1300

mefistotelis edited this page Oct 7, 2017 · 39 revisions

Table of Contents

Target
Purpose
Versions
Structure
OS and Libraries
Flashing
Interfaces

Target

The module programs the TMS320DM365 firmware. Location of this chip is GL300 Interface board.

Complementary DM36x chip exists within the drone gimbal; the air part is programmed by module m0800.

Purpose

The DaVinci firmware handles video transcoding between Lightbridge compression and the compression for mobile app. In the boards with HDMI output, it also prepares the uncompressed video signal for that output.

Versions

There are multiple versions, always unencrypted.

Marking Packages Timestamp Overview
02.12.0000 P3X_FW_V01.01.0006 P3X_FW_V01.01.1003 2015-04-30 ... 2015-05-01
02.13.0000 P3S_FW_V01.01.0008 P3S_FW_V01.01.0009 P3S_FW_V01.02.0007 P3S_FW_V01.02.0008 P3X_FW_V01.01.0008 P3X_FW_V01.01.0009 P3X_FW_V01.01.1007 P3X_FW_V01.02.0006 2015-05-06 ... 2015-07-10
02.18.0001 C1_FW_V01.03.0020 P3S_FW_V01.03.0020 P3XS_FW_RC_V01.03.0020 P3X_FW_V01.03.0020 2015-07-24 ... 2015-08-04
02.18.0002 C1_FW_V01.02.0021 C1_FW_V01.03.00.21 C1_FW_V01.04.0030 2015-07-28 ... 2015-09-29
02.24.0000 C1_FW_V01.05.0070 C1_FW_v01.05.0071 2015-11-24 ... 2016-02-01
02.26.0000 C1_FW_V01.01.0020 C1_FW_V01.01.0092 C1_FW_V01.05.0080 C1_FW_V01.06.0000 C1_FW_v01.01.0030 C1_FW_v01.01.0035 C1_FW_v01.01.0040 C1_FW_v01.01.0050 C1_FW_v01.01.0051 C1_FW_v01.01.0053 C1_FW_v01.01.0054 C1_FW_v01.01.0055 C1_FW_v01.01.0060 C1_FW_v01.01.0080 C1_FW_v01.01.0090 C1_FW_v01.07.0002 C1_FW_v01.07.0030 C1_FW_v01.07.0040 2016-03-15 ... 2016-12-08
02.29.0000 C1_FW_v01.06.0001 C1_FW_v01.07.0000 C1_FW_v01.08.0000 2016-08-13 ... 2016-09-12
02.31.0000 C1_FW_v01.09.0000 2016-11-08
02.32.0000 C1_FW_V01.01.0093 C1_FW_v01.07.0060 2016-11-10 ... 2016-12-29

Structure

The module is encrypted using OpenSSL salted format. Password is "Dji123456". Here is an example decryption command:

openssl des3 -d -k Dji123456 -in C1_FW_V01.06.0000_m1300.bin -out C1_FW_V01.06.0000_m1300_decrypted.tar.gz

Unencrypted firmware is a TAR GZip archive containing some Linux tools, boot configuration and kernel modules. It also contains partition images which can be flashed.

In order to use the decrypted images dji/data/*.img with sfh_DM36x or other chip manufacturers tools, first 0x800 bytes of the files have to be removed.

OS and Libraries

The firmware consists of U-Boot boot loader and DaVinci Linux as OS.

Flashing

Here are the known ways to flash the U-Boot bootloader and DaVinci Linux. Some of the flashing methods may not be listed here.

By official package through mobile app

The official way of flashing the firmware is by selecting upgrade (or downgrade) in the mobile app. The app will download the firmware, extract modules from the package and distribute them to proper target components. In older versions of the firmware, it was also possible to update by inserting a flash drive containing new firmware to the USB port.

By service serial port

It is also possible to boot the chip into a mode which allows programming it via serial port. Since the board requires 3.3V serial interface, you will need USB to TTL converter (aka FTDI adapter) which supports this voltage.

To switch the boot mode, short the Boot Select service pad to 3.3V. Connect your 3.3V TTL converter to service pads 368_RX, 368_TX and GND. Don't worry about connecting RX and TX incorrectly, switching them will not damage anything, it just won't work. Then, use TI utilities on connected PC to flash your new image:

sfh_DM36x -nandflash -v -p "COM21" ubl1.img u-boot.img

You will need the unencrypted images of TI DaVinci Linux and the U-boot bootloader to do the flashing.

You can look at the description of the flashing procedure for Lightbridge for some details.

This method is based on Serial Boot and Flash Loading Utility provided by Texas Instruments.

By chip maker method

Texas Instruments maintains an extensive Wiki with information about ways of Writing Image to NAND Flash for their processors.

What they propose as primary method is to update the firmware via Ethernet controller by using U-Boot boot loader functionalities. The wiki also discusses flashing the U-Boot itself, and contains links to descriptions of other flashing methods.

Interfaces

TODO

Clone this wiki locally