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