Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge in MicroPython 1.13 #4720

Merged
merged 1,816 commits into from
May 8, 2021
Merged

Merge in MicroPython 1.13 #4720

merged 1,816 commits into from
May 8, 2021

Conversation

tannewt
Copy link
Member

@tannewt tannewt commented May 6, 2021

Progress on #2999

shenki and others added 30 commits May 29, 2020 22:54
Microwatt may have firmware that places data in r3, which was used to
detect microwatt vs powernv.  This breaks the existing probing of the UART
type in this powerpc port.

Instead build only the appropriate UART into the firmware, selected by
passing the option UART=potato or UART=lpc_serial to the Makefile.

A future enhancement would be to parse the device tree and configure
MicroPython based on the settings.
The powerpc port can be built with two different UART drivers, so build
both in CI.

The default compiler is now powerpc64le-linux-gnu- so it does not need to
be specified on the command line.
This adds a new command line option `-v` to `tools/codeformat.py` to enable
verbose printing of all files that are scanned.

Normally `uncrustify` and `black` are called with the `-q` option so
setting verbose suppresses the `-q` option and on `black` also enables the
`-v` option which makes it print out all file names matching the filter
similar to how `uncrustify` does by default.
Just disallow changing the rxbuf which will be some static RAM (can't free
it and soft-reset would lose any dynamically allocated buffer).
For now SYSCLK cannot be changed and must remain at 64MHz.
These features are now supported (although machine.ADC is recommended over
pyb.ADC).
New releases have moved from launchpad to developer.arm.com.
Changes are:
- string0 is no longer built when building for host as the target, because
  it'll be provided by the system libc and may in some cases clash with the
  system one (eg on OSX).
- mp_int_t/mp_uint_t are defined in terms of intptr_t/uintptr_t to support
  both 32-bit and 64-bit builds.
- Configuration values which are the default in py/mpconfig.h are removed
  from mpconfigport.h to make the configuration a bit more minimal, eg as
  a better starting point for new ports.
This commit implements an LED class with rudimentary parts of a pin C API
to support it.  The LED class does not yet support setting an intensity.

This LED class is put in the machine module for the time being, until a
better place is found.

One LED is supported on TEENSY40 and MIMXRT1010_EVK boards.
There doesn't appear to be any use for only triggering on specific events,
so it's just easier to number them sequentially.  This makes them smaller
values so they take up only 1 byte in the ringbuf, only 1 byte for the
opcode in the bytecode, and makes room for more events.

Also add a couple of new event types that need to be implemented (to avoid
re-numbering later).

And rename _COMPLETE and _STATUS to _DONE for consistency.

In the future the "trigger" keyword argument can be reinstated by requiring
the user to compute the bitmask, eg:

    ble.irq(handler, 1 << _IRQ_SCAN_RESULT | 1 << _IRQ_SCAN_DONE)
Without this it's difficult to implement a state machine correctly if the
desired services are not found.
In most situations this is a more efficient way of going straight to the
service and characteristic you need.
On btstack there's no status associated with the read result, it comes
through as a separate event.  This allows you to detect read failures or
timeouts.
Updates the tests to use non-bitmask events, event renames, as well as some
of the new completion events to improve reliability of the tests.
This commit makes sure that all discovery complete and read/write status
events set the status to zero on success.

The status value will be implementation-dependent on non-success cases.
The ring buffer previously used a single unsigned byte field to save the
length, meaning that it would overflow for large characteristic value
responses.

With this commit it now use a 16-bit length instead and has code to
explicitly truncate at UINT16_MAX (although this should be impossible to
achieve in practice).
According to Supplement to the Bluetooth Core Specification v8 Part A
1.3.1, to support BR/EDR the code should set the fifth bit (Simultaneous LE
and BR/EDR to Same Device Capable (Controller)) and fourth bit
(Simultaneous LE and BR/EDR to Same Device Capable (Host)) of the flag.
With this commit the code should work correctly regardless of the size of
StackType_t (it's actually 1 byte in size for the esp32's custom FreeRTOS).

Fixes issue micropython#6072.
This builds docs, but only on pull requests that change a file in the
docs/ directory.
@tannewt tannewt added this to the 7.0.0 milestone May 6, 2021
@tannewt tannewt requested a review from jepler May 6, 2021 18:06
docs/library/errno.rst Outdated Show resolved Hide resolved
docs/library/errno.rst Outdated Show resolved Hide resolved
Copy link
Collaborator

@dhalbert dhalbert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ignore the MP_ERROR_TEXT comment; I can't find it in the sea of files.

Definitely getting simpler. Thanks for continuing to do this!

docs/library/errno.rst Outdated Show resolved Hide resolved
docs/library/errno.rst Outdated Show resolved Hide resolved
docs/library/errno.rst Outdated Show resolved Hide resolved
docs/library/errno.rst Outdated Show resolved Hide resolved
extmod/modubinascii.c Show resolved Hide resolved
extmod/modure.c Show resolved Hide resolved
py/argcheck.c Outdated Show resolved Hide resolved
py/objint_mpz.c Show resolved Hide resolved
py/objtuple.c Outdated Show resolved Hide resolved
@tannewt
Copy link
Member Author

tannewt commented May 7, 2021

Ignore the MP_ERROR_TEXT comment; I can't find it in the sea of files.

Definitely getting simpler. Thanks for continuing to do this!

For the record MP_ERROR_TEXT is here for CP: https://github.com/tannewt/circuitpython/blob/merge_1.13/supervisor/shared/translate.h#L84 (I deleted the MP version.)

@tannewt tannewt requested review from dhalbert and jepler May 7, 2021 20:15
Copy link
Collaborator

@dhalbert dhalbert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything I had has been addressed. Thanks for taking on this! Onward!

@jepler jepler merged commit 446169e into adafruit:main May 8, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.