Micropython on nRF5340?

I understand that Nordic has completely converted to Zephyr going forward, and will only support that OS for future development, but are there any technical limitations preventing community ports of Micropython for the nRF5340?

The nRF51 and nRF52 series already have ports of Micro/Circuitpython available, but I've found absolutely nothing regarding the nRF53. Obviously the SoC's complexity and full feature set can't be completely supported, but I'm surprised that there's not even a basic single-core build for this powerful platform at all.

Is it possible to reuse the nRF52 port on the nRF53, or are the architectural differences between them too pronounced? I'm not nearly proficient enough yet to attempt implementing a port myself, but I'm curious why seemingly no one else has tried. Is it simply not possible due to reasons beyond my novice comprehension?

  • Hi,

    I understand that Nordic has completely converted to Zephyr going forward, and will only support that OS for future development, but are there any technical limitations preventing community ports of Micropython for the nRF5340?

    I do not see any limitations myself. The nRF5340 is just two Cortex cores, and those will run code compiled by micropython.
    Drivers for inter-core communication will be a bit complicated to use I think, but should be technically possible.

    Other than that, remember to follow our Erratas when implementing it, those Errata fixes are one of the things that are easy to forget you get for free with our supported software.

    Obviously the SoC's complexity and full feature set can't be completely supported, but I'm surprised that there's not even a basic single-core build for this powerful platform at all.

    The Radio is only available to the network core, so to use both the application core (the powerful core) and the Radio, you need some type of intercore functionality.

    Is it possible to reuse the nRF52 port on the nRF53, or are the architectural differences between them too pronounced? I'm not nearly proficient enough yet to attempt implementing a port myself, but I'm curious why seemingly no one else has tried. Is it simply not possible due to reasons beyond my novice comprehension?

    I suspect you could reuse some but not all.
    I will leave this answer up to the community.

    Regards,
    Sigurd Hellesvik

  • Your thoughts are definitively understandable, and thanks for wording them in such an orderly manner.

    Here are some of my thoughts on the subject:

    One of the large drawbacks of the nRF Connect SDK is the high learning curve. We are aware of this, and are working on improving this as best we can. https://academy.nordicsemi.com/ is one of my favorite efforts for this.

    For the nRF52 series, we had one SDK, which we officially supported. I do not know how much resources we put into supporting other solutions, but I guess a lot of the support for the nRF52 series is not direct from us, but because it is so popular. A popular product has a higher chance of getting support in different places.

    And speaking of popularity, while Zephyr can be hard to work with, it has become the largest RTOS. From wikipedia :
    "As of January 2022, Zephyr had the largest number of contributors and commits compared to other RTOSes".
    With so many people, I think and hope that it will become easier to use over time, both because a lot of people are working on improving it, and because a lot of guides will be made.

    In a perfect work, we in Nordic would want to support other environments for our products as well.
    However, we do not have unlimited resources and are forced to prioritize. We have chosen to focus on improving the nRF Connect SDK instead of splitting our focus into other stuff, such as Micropython.

    None of the above are direct fixes for your complaints, but I hope that you get some value from them still

  • I have linked this ticket to our User Experience team; think it will be useful feedback to them.
    I cannot promise that anything will change, but know that you have been heard.

Related