Skip to content

Conversation

urish
Copy link

@urish urish commented Oct 6, 2018

When I tried to enable the @micropython.arm_thumb decorator for the nrf port, the compilation failed with many pointer type errors, such as the one below:

In file included from ../../py/reader.h:29:0,
                 from ../../py/lexer.h:33,
                 from ../../py/emit.h:29,
                 from ../../py/emitinlinethumb.c:33:
../../py/obj.h:651:10: note: expected 'const compressed_string_t * {aka const struct <anonymous> *}' but argument is of type 'const char *'
 mp_obj_t mp_obj_new_exception_msg(const mp_obj_type_t *exc_type, const compressed_string_t *msg);
          ^~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
../../py/mkrules.mk:55: recipe for target 'build-pca10059-s140/py/emitinlinethumb.o' failed

This PR fixes these errors. Now the code compiles successfully, and it also runs well - I managed to blink an LED on the nRF52840 dongle using the following test code:

import board
import digitalio
import time

digitalio.DigitalInOut(board.LED2_R).switch_to_output(False)

@micropython.asm_thumb
def ledOn():
    movwt(r1, 0x50000000 + 0x50c)
    movw(r2, 1 << 8)
    strh(r2, [r1, 0])

@micropython.asm_thumb
def ledOff():
    movwt(r1, 0x50000000 + 0x508)
    movw(r2, 1 << 8)
    strh(r2, [r1, 0])

while True:
    ledOn()
    time.sleep(0.5)
    ledOff()
    time.sleep(0.5)

@dhalbert
Copy link
Collaborator

dhalbert commented Oct 6, 2018

The translations have changed since your commits, causing the translate build to fail. Could you rebase or merge with the latest, run make translate, and then recommit? Thanks.

@urish
Copy link
Author

urish commented Oct 6, 2018

Thanks for the feedback @dhalbert , rebase + make translate done !

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.

Great! We've completely ignored the inline stuff, but thanks for making it work for those who want and need it.

Note to others: that this doesn't turn on inline thumb by default, it just makes it work if it is turned on.

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.

2 participants