Skip to content
Snippets Groups Projects
Select Git revision
  • 9cd56629baabcda88f51d2e1ade9e959d0c906aa
  • master default protected
  • patch-1
  • rahix/simple_menu
  • koalo/bhi160
  • ch3/splashscreen
  • genofire/ble-rewrite
  • koalo/bhi160-works-but-dirty
  • ios-workarounds
  • koalo/wip/i2c-for-python
  • renze/safe_mode
  • renze/hatchery_apps
  • schneider/fundamental-test
  • koalo/factory-reset
  • msgctl/gfx_rle
  • msgctl/faultscreen
  • msgctl/textbuffer_api
  • schneider/bonding
  • schneider/bootloader-update-9a0d158
  • schneider/bsec
  • rahix/bma
  • v1.3
  • v1.2
  • v1.1
  • v1.0
  • release-1
  • bootloader-v1
  • v0.0
28 results

overview.rst

Blame
  • Forked from card10 / firmware
    1534 commits behind the upstream repository.
    Rahix's avatar
    rahix authored
    - The bootloader will now write files immediately, you
      no longer need to make sure you eject properly.
    - *cardium is called l0dables and will definitely
      happen!
    - External flash is now available from Pycardium
    
    Signed-off-by: default avatarRahix <rahix@rahix.de>
    9cd56629
    History
    overview.rst 2.27 KiB

    Overview

    To make the most of card10's dual-core processor, its firmware will have been divided into two parts: The "main" firmware running on core 0 which will have been called Epicardium and the "user-code" running on core 1. In most cases this will have been Pycardium, our MicroPython port.

    Epicardium

    Epicardium is based on FreeRTOS. There are a number of tasks that will have been keeping card10 running. These are:

    • Dispatcher: The dispatcher task handles API calls from core 1.
    • PMIC: The power manager task checks the battery level and other interesting statistics that can be gathered from our power manager IC (MAX77650).
    • Serial: Handles serial communication via UART, CDC ACM and possibly Bluetooth.
    • BHI160: Housekeeping task for interaction with the BHI160.

    Epicardium API

    Epicardium exposes lots of functionality via the Epicardium API. The technical details if this API can be found in this :ref:`overview <epicardium_api_overview>`. If you are interesting in adding new API calls, you should probably read the :ref:`epicardium_api_guide` guide.

    Pycardium

    Pycardium is our MicroPython fork. Its purpose is to make it as easy as possible to interact with card10. If you are interested in working on Pycardium, take a look at the :ref:`pycardium_guide` guide.

    L0dables

    Next to Pycardium, other bare-metal code can also run on core 1. For example, a Rustcardium or C-cardium. These l0dables must be compiled using our special linker script and should link against the api-caller library so they can interface with the :ref:`epicardium_api`.

    Program Flow Diagram

    The following diagram is a rough overview of the program flow in this fimware: