summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2015-12-29 20:44:55 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2016-03-05 11:30:15 +0200
commit8ab16b6af041ffd756c66e05bfc3068064dcda06 (patch)
treefb1c7b723c12b9b899037384efec3d300bbb6fda
parentc70637bc00425a0b0076e4f7cb7ba5553b54335d (diff)
downloadmicropython-8ab16b6af041ffd756c66e05bfc3068064dcda06.tar.gz
micropython-8ab16b6af041ffd756c66e05bfc3068064dcda06.zip
esp8266: Add custom _assert() function.
Enabling standard assert() (by removing -DNDEBUG) produces non-bootable binary (because all messages go to .rodata which silently overflows). So, for once-off debugging, have a custom _assert().
-rw-r--r--esp8266/esp_mphal.c8
-rw-r--r--esp8266/mpconfigport.h2
2 files changed, 10 insertions, 0 deletions
diff --git a/esp8266/esp_mphal.c b/esp8266/esp_mphal.c
index 1a46c5f243..cc0eb3eae1 100644
--- a/esp8266/esp_mphal.c
+++ b/esp8266/esp_mphal.c
@@ -30,6 +30,8 @@
#include "uart.h"
#include "esp_mphal.h"
#include "user_interface.h"
+#include "py/obj.h"
+#include "py/mpstate.h"
extern void ets_wdt_disable(void);
extern void wdt_feed(void);
@@ -98,3 +100,9 @@ void mp_hal_delay_ms(uint32_t delay) {
void mp_hal_set_interrupt_char(int c) {
// TODO
}
+
+void __assert_func(const char *file, int line, const char *func, const char *expr) {
+ printf("assert:%s:%d:%s: %s\n", file, line, func, expr);
+ nlr_raise(mp_obj_new_exception_msg(&mp_type_AssertionError,
+ "C-level assert"));
+}
diff --git a/esp8266/mpconfigport.h b/esp8266/mpconfigport.h
index 1f823c02e9..1f7ab09e27 100644
--- a/esp8266/mpconfigport.h
+++ b/esp8266/mpconfigport.h
@@ -113,3 +113,5 @@ extern const struct _mp_obj_module_t mp_module_machine;
#define MICROPY_HW_BOARD_NAME "ESP module"
#define MICROPY_HW_MCU_NAME "ESP8266"
#define MICROPY_PY_SYS_PLATFORM "ESP8266"
+
+#define _assert(expr) ((expr) ? (void)0 : __assert_func(__FILE__, __LINE__, __func__, #expr))