Small fixes (#260)
* pico_stdio_usb: be more explicit about includes, fix warning (#257)
* pico_base: NDEBUG backwards for absolute_time_t (#255)
* pico_util: missing extern C in queue.h (#249)
* build: remove -march which was masking -mcpu, now SVC available (#253)
diff --git a/cmake/preload/toolchains/pico_arm_gcc.cmake b/cmake/preload/toolchains/pico_arm_gcc.cmake
index 4fc0950..b0c2648 100644
--- a/cmake/preload/toolchains/pico_arm_gcc.cmake
+++ b/cmake/preload/toolchains/pico_arm_gcc.cmake
@@ -52,8 +52,9 @@
option(PICO_DEOPTIMIZED_DEBUG "Build debug builds with -O0" 0)
# todo move to platform/Generix-xxx
-set(ARM_GCC_COMMON_FLAGS " -march=armv6-m -mcpu=cortex-m0plus -mthumb")
-#set(ARM_GCC_COMMON_FLAGS " -mcpu=cortex-m0plus -mthumb")
+
+# on ARM -mcpu should not be mixed with -march
+set(ARM_GCC_COMMON_FLAGS " -mcpu=cortex-m0plus -mthumb")
foreach(LANG IN ITEMS C CXX ASM)
set(CMAKE_${LANG}_FLAGS_INIT "${ARM_GCC_COMMON_FLAGS}")
if (PICO_DEOPTIMIZED_DEBUG)
diff --git a/src/common/pico_base/include/pico/types.h b/src/common/pico_base/include/pico/types.h
index 51debf2..6b8e66f 100644
--- a/src/common/pico_base/include/pico/types.h
+++ b/src/common/pico_base/include/pico/types.h
@@ -25,7 +25,7 @@
\see update_us_since_boot()
\ingroup timestamp
*/
-#ifndef NDEBUG
+#ifdef NDEBUG
typedef uint64_t absolute_time_t;
#else
typedef struct {
@@ -40,7 +40,7 @@
* \ingroup timestamp
*/
static inline uint64_t to_us_since_boot(absolute_time_t t) {
-#ifndef NDEBUG
+#ifdef NDEBUG
return t;
#else
return t._private_us_since_boot;
@@ -55,7 +55,7 @@
* \ingroup timestamp
*/
static inline void update_us_since_boot(absolute_time_t *t, uint64_t us_since_boot) {
-#ifndef NDEBUG
+#ifdef NDEBUG
*t = us_since_boot;
#else
assert(us_since_boot <= INT64_MAX);
@@ -63,7 +63,7 @@
#endif
}
-#ifndef NDEBUG
+#ifdef NDEBUG
#define ABSOLUTE_TIME_INITIALIZED_VAR(name, value) name = value
#else
#define ABSOLUTE_TIME_INITIALIZED_VAR(name, value) name = {value}
diff --git a/src/common/pico_util/include/pico/util/queue.h b/src/common/pico_util/include/pico/util/queue.h
index 8281d8b..60a450a 100644
--- a/src/common/pico_util/include/pico/util/queue.h
+++ b/src/common/pico_util/include/pico/util/queue.h
@@ -18,6 +18,10 @@
* \ingroup pico_util
*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
typedef struct {
spin_lock_t *lock;
uint8_t *data;
@@ -69,7 +73,7 @@
static inline uint queue_get_level_unsafe(queue_t *q) {
int32_t rc = (int32_t)q->wptr - (int32_t)q->rptr;
if (rc < 0) {
- rc += + q->element_count + 1;
+ rc += q->element_count + 1;
}
return (uint)rc;
}
@@ -181,4 +185,7 @@
*/
void queue_peek_blocking(queue_t *q, void *data);
+#ifdef __cplusplus
+}
+#endif
#endif
diff --git a/src/rp2_common/pico_stdio_usb/reset_interface.c b/src/rp2_common/pico_stdio_usb/reset_interface.c
index 2525486..1232857 100644
--- a/src/rp2_common/pico_stdio_usb/reset_interface.c
+++ b/src/rp2_common/pico_stdio_usb/reset_interface.c
@@ -60,7 +60,7 @@
#if PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_FLASH_BOOT
if (request->bRequest == RESET_REQUEST_FLASH) {
- watchdog_reboot(0, SRAM_END, PICO_STDIO_USB_RESET_RESET_TO_FLASH_DELAY_MS);
+ watchdog_reboot(0, 0, PICO_STDIO_USB_RESET_RESET_TO_FLASH_DELAY_MS);
return true;
}
#endif
diff --git a/src/rp2_common/pico_stdio_usb/stdio_usb.c b/src/rp2_common/pico_stdio_usb/stdio_usb.c
index c122b44..d86879f 100644
--- a/src/rp2_common/pico_stdio_usb/stdio_usb.c
+++ b/src/rp2_common/pico_stdio_usb/stdio_usb.c
@@ -10,12 +10,13 @@
#include "pico/time.h"
#include "pico/stdio/driver.h"
#include "pico/binary_info.h"
+#include "pico/mutex.h"
#include "hardware/irq.h"
static_assert(PICO_STDIO_USB_LOW_PRIORITY_IRQ > RTC_IRQ, ""); // note RTC_IRQ is currently the last one
static mutex_t stdio_usb_mutex;
-static void low_priority_worker_irq() {
+static void low_priority_worker_irq(void) {
// if the mutex is already owned, then we are in user code
// in this file which will do a tud_task itself, so we'll just do nothing
// until the next tick; we won't starve
diff --git a/test/kitchen_sink/kitchen_sink.c b/test/kitchen_sink/kitchen_sink.c
index 7c19b1e..033df3d 100644
--- a/test/kitchen_sink/kitchen_sink.c
+++ b/test/kitchen_sink/kitchen_sink.c
@@ -83,6 +83,7 @@
dma_channel_configure(0, &config, &dma_to, &dma_from, 1, true);
dma_channel_set_config(0, &config, false);
+ // note this loop expects to cause a breakpoint!!
for (int i = 0; i < 20; i++) {
puts("sleepy");
sleep_ms(1000);
@@ -94,4 +95,6 @@
irq_remove_handler(DMA_IRQ_1, dma_handler_b);
}
}
+ // this should compile as we are Cortex M0+
+ __asm volatile("SVC #3");
}