Giter Club home page Giter Club logo

odroid-go-multi-firmware's Introduction

Description

Odroid-go-multi-firmware is an improvement of the official Odroid GO firmware. It allows you to keep multiple applications installed in the flash and switch instantly between them. You can think of it as a multi-boot loader.

Usage

Holding B while powering up the device will bring you to the boot menu.

Installation

Note: There is no risk in flashing your Odroid GO. You can always recover and return to the stock firmware by following ODROID's guide (method 2 below).

Method 1: Self-installer

This is the easiest method, no need for drivers or flashing software. But it isn't as well tested.

  1. Copy the file odroid-go-multi-firmware-XXX.fw to your sdcard in the folder /odroid/firmware
  2. Power up your device while holding B
  3. Flash the self-installer and run it

Method 2: USB flashing

Follow these instructions: https://wiki.odroid.com/odroid_go/firmware_update but use the .img provided here.

Note: If you are familiar with esptool, you just have to flash odroid-go-multi-firmware-XXX.fw to offset 0x0.

Compilation

The official esp-idf version 3.1 or newer is required and to improve SD Card support you should this patch:

  • tools/patches/esp-idf-sdcard-patch.diff

Note: Those patches do not introduce breaking changes to non-GO (standard ESP32) projects and can safely be applied to your global esp-idf installation.

Build Steps:

  1. Compile firmware: idf.py build
  2. And then:
    • To produce image files: python tools/pack.py
    • To flash and debug: idf.py flash monitor

Technical information

Creating .fw files

The mkfw.py tool is used to package your application in a .fw file.

Usage:
mkfw.py output_file.fw 'description' tile.raw type subtype size label file.bin [type subtype size label file.bin, ...]

  • tile.raw must be a RAW RGB565 86x48 image

  • type is 0 for application and 1 for data

  • subtype can be set to 0 for auto

  • size must be equal to or bigger than your app's .bin and a multiple of 65536. Can be set to 0 for auto

  • label is a label for your own usage

  • file.bin contains the partition's data

.fw format:

 Header:
   "ODROIDGO_FIRMWARE_V00_01"  24 bytes
   Firmware Description        40 bytes
   RAW565 86x48 tile           8256 bytes
 Partition [, ...]:
   Type                        1 byte
   Subtype                     1 byte
   Padding                     2 bytes
   Label                       16 bytes
   Flags                       4 bytes
   Size                        4 bytes
   Data length                 4 bytes
   Data                        <Data length> bytes
 Footer:
   CRC32                       4 bytes

Questions

Q: How does it work?

A: When you select an application to boot, the ESP32's partition table is rewritten to make it seem like the app is the only thing there. That way any existing, unmodified, Odroid-GO applications will work. The firmware keeps track of what is installed and where. The app will then boot every time you power up the system, until you change it.

odroid-go-multi-firmware's People

Contributors

ducalex avatar othercrashoverride avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.