Skip to content
Snippets Groups Projects
Verified Commit 9cd56629 authored by rahix's avatar rahix
Browse files

docs: Update a few pieces of outdated information


- 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>
parent f3296ad6
No related branches found
No related tags found
No related merge requests found
......@@ -93,8 +93,8 @@ formatted, don't be afraid to do so.
.. warning::
When writing you calls, **never** make assumptions about which FreeRTOS task
you are running in. While all calls from core 1 will end up in the
When writing your calls, **never** make assumptions about which FreeRTOS
task you are running in. While all calls from core 1 will end up in the
"Dispatcher" task, other FreeRTOS tasks might might call your code at any
time just as well.
......
.. _epicardium_api:
Epicardium API
==============
......
......@@ -9,17 +9,28 @@ Dependencies
* **gcc**, **binutils** & **newlib** for ``arm-none-eabi``: The packages have
slightly different names on different distros.
- Ubuntu / Debian: ``apt install gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi``
- Arch: ``pacman -S arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib``
- Ubuntu / Debian:
.. code-block:: shell-session
apt install gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi
- Arch:
.. code-block:: shell-session
pacman -S arm-none-eabi-gcc arm-none-eabi-binutils arm-none-eabi-newlib
- Alternative: Download `ARM's GNU toolchain`_. **TODO**
* **python3**: For meson and various scripts needed for building.
* **ninja**: Needed for meson.
* **ninja**: Needed for meson. If you install meson via *pip*, you need to
install ninja manually as well:
- Ubuntu / Debian: ``apt install ninja-build``
- Arch: ``pacman -S ninja``
* **meson** (>0.43.0): Unfortunately most distros only have very old versions
of meson in their repositories. Instead, you'll probably save yourself a lot
of headaches by installing meson from ``pip3 install --user meson``.
- Ubuntu / Debian: ``apt install meson``
* **python3-crc16**: Install with ``pip3 install --user crc16``.
.. _ARM's GNU toolchain: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
......
......@@ -18,22 +18,18 @@ If you did everything correctly, the bootloader will display:
.. code-block:: text
Bootloader
Jul 12 2019
Jul 28 2019
USB activated.
Waiting.
Ready.
On your host, you should now see an 8MB flash-device appear. You can now drop
the firmware's ``.bin`` (from ``build/pycardium/pycardium_epicardium.bin`` in
most cases) into this flash-storage. You **must** call the file ``card10.bin``
for the bootloader to use it.
Afterwards **eject** the flash device and reboot card10. You should now see
your new firmware boot up!
.. warning::
**You must EJECT the flash device!** ``umount`` & ``sync`` is **not**
enough and will result in the bootloader not loading the new binary.
The bootloader will then display ``Writing.`` in red while it is actually
writing the file to external flash. Please wait until it displays ``Ready.``
again before resetting card10 by pressing the power button again.
Flash Using Debugger
--------------------
......
......@@ -45,15 +45,16 @@ 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.
\*cardium
---------
.. warning::
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`.
We have not yet been able to determine if card10 will have had the abilities
described in this section. And if yes, how they will have been implemented.
.. todo::
Next to Pycardium, other bare-metal code can also run on core 1. For example,
a Rustcardium or Cccardium.
Provide more details how this works
Program Flow Diagram
--------------------
......
......@@ -40,13 +40,9 @@ the output of
ls -lh build/pycardium/*@@frozen.c@*/
If your module contains some kind of big lookup-table or data-block, consider
pushing that into external flash.
.. todo::
External flash is not yet accessible by Pycardium (ref `#11`_).
.. _#11: https://git.card10.badge.events.ccc.de/card10/firmware/issues/11
pushing that into external flash. You can then read the data using standard
Python ``open()`` and if you need to decode it, use the ``ustruct`` or ``ujson``
module.
Creating a new C module
-----------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment