@@ -11,14 +11,18 @@ QSTR_DEFS = qstrdefsport.h
11
11
12
12
# MicroPython feature configurations
13
13
MICROPY_ROM_TEXT_COMPRESSION ?= 1
14
+ FROZEN_MANIFEST ?= "freeze('test-frzmpy')"
14
15
15
16
# include py core make definitions
16
17
include $(TOP ) /py/py.mk
17
18
include $(TOP ) /extmod/extmod.mk
18
19
20
+ CFLAGS += -DMICROPY_HW_BOARD_NAME='"$(BOARD ) "'
21
+
19
22
ifeq ($(BOARD ) ,netduino2)
20
23
CFLAGS += -mthumb -mcpu=cortex-m3 -mfloat-abi=soft
21
24
CFLAGS += -DQEMU_SOC_STM32
25
+ CFLAGS += -DMICROPY_HW_MCU_NAME='"STM32"'
22
26
LDSCRIPT = stm32.ld
23
27
SRC_BOARD_O = shared/runtime/gchelper_native.o shared/runtime/gchelper_thumb2.o
24
28
MPY_CROSS_FLAGS += -march=armv7m
27
31
ifeq ($(BOARD ) ,microbit)
28
32
CFLAGS += -mthumb -mcpu=cortex-m0 -mfloat-abi=soft
29
33
CFLAGS += -DQEMU_SOC_NRF51
34
+ CFLAGS += -DMICROPY_HW_MCU_NAME='"nRF51"'
30
35
LDSCRIPT = nrf51.ld
31
36
QEMU_EXTRA = -global nrf51-soc.flash-size=1048576 -global nrf51-soc.sram-size=262144
32
37
SRC_BOARD_O = shared/runtime/gchelper_native.o shared/runtime/gchelper_thumb1.o
36
41
ifeq ($(BOARD ) ,mps2-an385)
37
42
CFLAGS += -mthumb -mcpu=cortex-m3 -mfloat-abi=soft
38
43
CFLAGS += -DQEMU_SOC_MPS2
44
+ CFLAGS += -DMICROPY_HW_MCU_NAME='"Cortex-M3"'
39
45
LDSCRIPT = mps2.ld
40
46
SRC_BOARD_O = shared/runtime/gchelper_native.o shared/runtime/gchelper_thumb2.o
41
47
MPY_CROSS_FLAGS += -march=armv7m
@@ -44,11 +50,16 @@ endif
44
50
ifeq ($(BOARD ) ,sabrelite)
45
51
CFLAGS += -mcpu=cortex-a9
46
52
CFLAGS += -DQEMU_SOC_IMX6
53
+ CFLAGS += -DMICROPY_HW_MCU_NAME='"Cortex-A9"'
47
54
LDSCRIPT = imx6.ld
48
55
QEMU_EXTRA = -m 128M
49
56
SRC_BOARD_O = shared/runtime/gchelper_generic.o
50
57
# It's really armv7a but closest supported value is armv6.
51
58
MPY_CROSS_FLAGS += -march=armv6
59
+ # Cortex-A9 should support unaligned-access, but qemu doesn't seem to.
60
+ CFLAGS += -mno-unaligned-access
61
+ # These don't work on Cortex-A9.
62
+ TESTS_EXCLUDE = --exclude '(asmdiv|asmspecialregs).py'
52
63
endif
53
64
54
65
CROSS_COMPILE ?= arm-none-eabi-
@@ -81,16 +92,18 @@ LIBS = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
81
92
SRC_COMMON_C = \
82
93
startup.c \
83
94
uart.c \
95
+ mphalport.c \
84
96
shared/libc/string0.c \
97
+ shared/readline/readline.c \
98
+ shared/runtime/interrupt_char.c \
99
+ shared/runtime/pyexec.c \
100
+ shared/runtime/semihosting_arm.c \
101
+ shared/runtime/stdout_helpers.c \
85
102
shared/runtime/sys_stdio_mphal.c \
86
103
87
104
SRC_RUN_C = \
88
105
main.c \
89
106
90
- SRC_TEST_C = \
91
- test_main.c \
92
- lib/tinytest/tinytest.c \
93
-
94
107
LIB_SRC_C += $(SRC_LIB_LIBM_C )
95
108
LIB_SRC_C += $(SRC_LIB_LIBM_SQRT_SW_C )
96
109
@@ -116,10 +129,21 @@ OBJ = $(OBJ_COMMON) $(OBJ_RUN) $(OBJ_TEST)
116
129
# List of sources for qstr extraction
117
130
SRC_QSTR += $(SRC_COMMON_C ) $(SRC_RUN_C ) $(LIB_SRC_C )
118
131
119
- all : run
132
+ all : $( BUILD ) /firmware.elf
120
133
134
+ .PHONY : repl
135
+ repl : $(BUILD ) /firmware.elf
136
+ $(ECHO ) " Use machine.reset() to exit"
137
+ qemu-system-arm -machine $(BOARD ) $(QEMU_EXTRA ) -nographic -monitor null -semihosting -serial mon:stdio -kernel $<
138
+
139
+ .PHONY : run
121
140
run : $(BUILD ) /firmware.elf
122
- qemu-system-arm -machine $(BOARD ) $(QEMU_EXTRA ) -nographic -monitor null -semihosting -kernel $<
141
+ qemu-system-arm -machine $(BOARD ) $(QEMU_EXTRA ) -nographic -monitor null -semihosting -serial pty -kernel $<
142
+
143
+ .PHONY : test
144
+ test : $(BUILD ) /firmware.elf
145
+ $(eval DIRNAME=ports/$(notdir $(CURDIR ) ) )
146
+ cd $(TOP ) /tests && ./run-tests.py --target qemu-arm --device execpty:" qemu-system-arm -machine $( BOARD) $( QEMU_EXTRA) -nographic -monitor null -semihosting -serial pty -kernel ../$( DIRNAME) /$<" $(TESTS_EXCLUDE )
123
147
124
148
# # `$(LD)` doesn't seem to like `--specs` for some reason, but we can just use `$(CC)` here.
125
149
$(BUILD ) /firmware.elf : $(LDSCRIPT ) $(ALL_OBJ_RUN )
0 commit comments