This enables the _stage library and adds stage and ugame modules to the
frozen modules, so that all Stage games should work.
I had to do several hacks:
* Since displayio.release_displays doesn't release the pins, I couldn't
re-initialize the display inside the ugame module. Instead I changed
the default display initialization for the board to match what Stage
expects.
* I wanted to make the MENU key works as K_Z, but when I try to use it
with the keypad module, I get "pin in use" error. So for now only the
A and B buttons are used.
A board can now define the following to fully customise the extended block
device interface provided by the storage sub-system:
- MICROPY_HW_BDEV_BLOCKSIZE_EXT
- MICROPY_HW_BDEV_READBLOCKS_EXT
- MICROPY_HW_BDEV_WRITEBLOCKS_EXT
- MICROPY_HW_BDEV_ERASEBLOCKS_EXT
Signed-off-by: Damien George <damien@micropython.org>
Add a new board type for ESP32-C3 revision 3 and up that implement the USB
serial/JTAG port on pin 18 and 19. This variant uses the USB serial for
programming and console, leaving the UART free.
- Pins 18 and 19 are correctly reserved for this variant. Also pins 14-17
are reserved for flash for any ESP32-C3 so they can't be reconfigured
anymore to crash the system.
- Added usb_serial_jtag.c and .h to implement this interface.
- Interface was tested to work correctly together with webrepl.
- Interface was tested to work correctly when sending and receiving
large files with ampy.
- Disconnecting terminal or USB will not hang the system when it's
trying to print.
Flash erase/program functions disable the XIP bit. If any code runs from
flash at the same time (eg an IRQ or code it calls) it will fail and cause
a lockup.
this is only tested to come up to the REPL & mount CIRCUITPY. Pin
assignments should be right but were not double-checked. The screen
is unsupported so far.
This board depends on the I/O pull ups for the I2C bus (verified by
schematic) so this adds a compile time option that enables pull ups
for ANY i2c bus on a board.
The old way mapped each byte of nvm onto a distinct nvs key, but this
allowed storage of only a very small number of bytes out of the
theoretical capacity.
Reworked like this, about half of the nvs capacity can be used for
nvm, so you're guaranteed the ability to store 9kB this way.