move all the debug codes from port.c to debug_uart.c.
This commit is contained in:
parent
9df0f439f3
commit
372c98626a
@ -95,11 +95,9 @@ else
|
|||||||
CFLAGS += -flto -flto-partition=none
|
CFLAGS += -flto -flto-partition=none
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(MY_DBG), 1)
|
|
||||||
CFLAGS += -DMY_DBG
|
|
||||||
endif
|
|
||||||
ifeq ($(MY_DEBUGUART), 1)
|
ifeq ($(MY_DEBUGUART), 1)
|
||||||
CFLAGS += -DMY_DEBUGUART=1
|
CFLAGS += -DMY_DEBUGUART=1
|
||||||
|
SRC_SUPERVISOR += supervisor/debug_uart.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# option to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
|
# option to override compiler optimization level, set in boards/$(BOARD)/mpconfigboard.mk
|
||||||
|
106
ports/nrf/supervisor/debug_uart.c
Normal file
106
ports/nrf/supervisor/debug_uart.c
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
/*
|
||||||
|
* debug functions
|
||||||
|
* (will be removed)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifdef MY_DEBUGUART
|
||||||
|
|
||||||
|
#define DEBUG_UART_TXPIN 26
|
||||||
|
#define DEBUG_UART_RXPIN 15
|
||||||
|
|
||||||
|
#include "nrfx.h"
|
||||||
|
#include "nrf_uart.h"
|
||||||
|
#include "nrf_gpio.h"
|
||||||
|
#include "nrf_rtc.h"
|
||||||
|
#include "nrfx_uarte.h"
|
||||||
|
#include "nrfx_rtc.h"
|
||||||
|
#include "supervisor/serial.h" // dbg_printf()
|
||||||
|
|
||||||
|
extern const nrfx_rtc_t rtc_instance; // port.c
|
||||||
|
extern volatile int rtc_woke_up_counter; // port.c
|
||||||
|
|
||||||
|
const nrfx_uarte_t _dbg_uart_inst = NRFX_UARTE_INSTANCE(1);
|
||||||
|
static int _dbg_uart_initialized = 0;
|
||||||
|
#define DBG_PBUF_LEN 80
|
||||||
|
static char _dbg_pbuf[DBG_PBUF_LEN+1];
|
||||||
|
|
||||||
|
void _debug_uart_init(void) {
|
||||||
|
//if (_dbg_uart_initialized) return;
|
||||||
|
nrfx_uarte_config_t config = {
|
||||||
|
.pseltxd = DEBUG_UART_TXPIN,
|
||||||
|
.pselrxd = DEBUG_UART_RXPIN,
|
||||||
|
.pselcts = NRF_UARTE_PSEL_DISCONNECTED,
|
||||||
|
.pselrts = NRF_UARTE_PSEL_DISCONNECTED,
|
||||||
|
.p_context = NULL,
|
||||||
|
.baudrate = NRF_UART_BAUDRATE_115200,
|
||||||
|
.interrupt_priority = 7,
|
||||||
|
.hal_cfg = {
|
||||||
|
.hwfc = NRF_UARTE_HWFC_DISABLED,
|
||||||
|
.parity = NRF_UARTE_PARITY_EXCLUDED
|
||||||
|
}
|
||||||
|
};
|
||||||
|
nrfx_uarte_init(&_dbg_uart_inst, &config, NULL);
|
||||||
|
// drive config
|
||||||
|
nrf_gpio_cfg(config.pseltxd,
|
||||||
|
NRF_GPIO_PIN_DIR_OUTPUT,
|
||||||
|
NRF_GPIO_PIN_INPUT_DISCONNECT,
|
||||||
|
NRF_GPIO_PIN_PULLUP, // orig=NOPULL
|
||||||
|
NRF_GPIO_PIN_H0H1, // orig=S0S1
|
||||||
|
NRF_GPIO_PIN_NOSENSE);
|
||||||
|
_dbg_uart_initialized = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void _debug_print_substr(const char* text, uint32_t length) {
|
||||||
|
char* data = (char*)text;
|
||||||
|
int siz;
|
||||||
|
while(length != 0) {
|
||||||
|
if (length <= DBG_PBUF_LEN) {
|
||||||
|
siz = length;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
siz = DBG_PBUF_LEN;
|
||||||
|
}
|
||||||
|
memcpy(_dbg_pbuf, data, siz);
|
||||||
|
_dbg_pbuf[siz] = 0;
|
||||||
|
nrfx_uarte_tx(&_dbg_uart_inst, (uint8_t const*)_dbg_pbuf, siz);
|
||||||
|
data += siz;
|
||||||
|
length -= siz;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _debug_uart_deinit(void) {
|
||||||
|
nrfx_uarte_uninit(&_dbg_uart_inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
int dbg_printf(const char *fmt, ...) {
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
int ret = vprintf(fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void dbg_dumpRTC(void) {
|
||||||
|
dbg_printf("\r\nRTC2\r\n");
|
||||||
|
NRF_RTC_Type *r = rtc_instance.p_reg;
|
||||||
|
dbg_printf("PRESCALER=%08X, ", (int)r->PRESCALER);
|
||||||
|
dbg_printf("COUNTER=%08X ", (int)r->COUNTER);
|
||||||
|
dbg_printf("INTENSET=%08X ", (int)r->INTENSET);
|
||||||
|
dbg_printf("EVTENSET=%08X\r\n", (int)r->EVTENSET);
|
||||||
|
dbg_printf("EVENTS_COMPARE[0..3]=%X,%X,%X,%X ", (int)r->EVENTS_COMPARE[0], (int)r->EVENTS_COMPARE[1], (int)r->EVENTS_COMPARE[2], (int)r->EVENTS_COMPARE[3]);
|
||||||
|
dbg_printf("CC[0..3]=%08X,%08X,%08X,%08X\r\n", (int)r->CC[0], (int)r->CC[1], (int)r->CC[2], (int)r->CC[3]);
|
||||||
|
dbg_printf("woke_up=%d\r\n", rtc_woke_up_counter);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /*!MY_DEBUGUART*/
|
||||||
|
int dbg_printf(const char *fmt, ...) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /*!MY_DEBUGUART*/
|
@ -27,10 +27,6 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "supervisor/port.h"
|
#include "supervisor/port.h"
|
||||||
#include "supervisor/board.h"
|
#include "supervisor/board.h"
|
||||||
#ifdef MY_DEBUGUART
|
|
||||||
#include "supervisor/serial.h" // dbg_printf()
|
|
||||||
extern void _debug_uart_init(void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "nrfx/hal/nrf_clock.h"
|
#include "nrfx/hal/nrf_clock.h"
|
||||||
#include "nrfx/hal/nrf_power.h"
|
#include "nrfx/hal/nrf_power.h"
|
||||||
@ -78,82 +74,12 @@ static void power_warning_handler(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MY_DEBUGUART
|
#ifdef MY_DEBUGUART
|
||||||
#include <stdio.h>
|
extern void _debug_uart_init(void);
|
||||||
#include <stdarg.h>
|
|
||||||
#include "nrfx.h"
|
|
||||||
#include "nrf_uart.h"
|
|
||||||
#include "nrfx_uart.h"
|
|
||||||
const nrfx_uarte_t _dbg_uart_inst = NRFX_UARTE_INSTANCE(1);
|
|
||||||
static int _dbg_uart_initialized = 0;
|
|
||||||
#define DBG_PBUF_LEN 80
|
|
||||||
static char _dbg_pbuf[DBG_PBUF_LEN+1];
|
|
||||||
|
|
||||||
void _debug_uart_init(void) {
|
|
||||||
//if (_dbg_uart_initialized) return;
|
|
||||||
nrfx_uarte_config_t config = {
|
|
||||||
.pseltxd = 26,
|
|
||||||
.pselrxd = 15,
|
|
||||||
.pselcts = NRF_UARTE_PSEL_DISCONNECTED,
|
|
||||||
.pselrts = NRF_UARTE_PSEL_DISCONNECTED,
|
|
||||||
.p_context = NULL,
|
|
||||||
.baudrate = NRF_UART_BAUDRATE_115200,
|
|
||||||
.interrupt_priority = 7,
|
|
||||||
.hal_cfg = {
|
|
||||||
.hwfc = NRF_UARTE_HWFC_DISABLED,
|
|
||||||
.parity = NRF_UARTE_PARITY_EXCLUDED
|
|
||||||
}
|
|
||||||
};
|
|
||||||
nrfx_uarte_init(&_dbg_uart_inst, &config, NULL);
|
|
||||||
// drive config
|
|
||||||
nrf_gpio_cfg(config.pseltxd,
|
|
||||||
NRF_GPIO_PIN_DIR_OUTPUT,
|
|
||||||
NRF_GPIO_PIN_INPUT_DISCONNECT,
|
|
||||||
NRF_GPIO_PIN_PULLUP, // orig=NOPULL
|
|
||||||
NRF_GPIO_PIN_H0H1, // orig=S0S1
|
|
||||||
NRF_GPIO_PIN_NOSENSE);
|
|
||||||
_dbg_uart_initialized = 1;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void _debug_print_substr(const char* text, uint32_t length) {
|
|
||||||
char* data = (char*)text;
|
|
||||||
int siz;
|
|
||||||
while(length != 0) {
|
|
||||||
if (length <= DBG_PBUF_LEN) {
|
|
||||||
siz = length;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
siz = DBG_PBUF_LEN;
|
|
||||||
}
|
|
||||||
memcpy(_dbg_pbuf, data, siz);
|
|
||||||
_dbg_pbuf[siz] = 0;
|
|
||||||
nrfx_uarte_tx(&_dbg_uart_inst, (uint8_t const*)_dbg_pbuf, siz);
|
|
||||||
data += siz;
|
|
||||||
length -= siz;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void _debug_uart_deinit(void) {
|
|
||||||
nrfx_uarte_uninit(&_dbg_uart_inst);
|
|
||||||
}
|
|
||||||
|
|
||||||
int dbg_printf(const char *fmt, ...) {
|
|
||||||
va_list ap;
|
|
||||||
va_start(ap, fmt);
|
|
||||||
int ret = vprintf(fmt, ap);
|
|
||||||
va_end(ap);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern void _debug_led_init(void);
|
|
||||||
extern void _debug_led_set(int v);
|
|
||||||
#else /*!MY_DEBUGUART*/
|
|
||||||
int dbg_printf(const char *fmt, ...) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
uint32_t reset_reason_saved = 0;
|
||||||
const nrfx_rtc_t rtc_instance = NRFX_RTC_INSTANCE(2);
|
const nrfx_rtc_t rtc_instance = NRFX_RTC_INSTANCE(2);
|
||||||
|
volatile int rtc_woke_up_counter = 0;
|
||||||
|
|
||||||
const nrfx_rtc_config_t rtc_config = {
|
const nrfx_rtc_config_t rtc_config = {
|
||||||
.prescaler = RTC_FREQ_TO_PRESCALER(0x8000),
|
.prescaler = RTC_FREQ_TO_PRESCALER(0x8000),
|
||||||
@ -170,9 +96,6 @@ static volatile struct {
|
|||||||
uint32_t suffix;
|
uint32_t suffix;
|
||||||
} overflow_tracker __attribute__((section(".uninitialized")));
|
} overflow_tracker __attribute__((section(".uninitialized")));
|
||||||
|
|
||||||
uint32_t reset_reason_saved = 0;
|
|
||||||
volatile int rtc_woke_up_counter = 0;
|
|
||||||
|
|
||||||
void rtc_handler(nrfx_rtc_int_type_t int_type) {
|
void rtc_handler(nrfx_rtc_int_type_t int_type) {
|
||||||
if (int_type == NRFX_RTC_INT_OVERFLOW) {
|
if (int_type == NRFX_RTC_INT_OVERFLOW) {
|
||||||
// Our RTC is 24 bits and we're clocking it at 32.768khz which is 32 (2 ** 5) subticks per
|
// Our RTC is 24 bits and we're clocking it at 32.768khz which is 32 (2 ** 5) subticks per
|
||||||
@ -190,20 +113,6 @@ void rtc_handler(nrfx_rtc_int_type_t int_type) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MY_DEBUGUART
|
|
||||||
void dbg_dumpRTC(void) {
|
|
||||||
dbg_printf("\r\nRTC2\r\n");
|
|
||||||
NRF_RTC_Type *r = rtc_instance.p_reg;
|
|
||||||
dbg_printf("PRESCALER=%08X, ", (int)r->PRESCALER);
|
|
||||||
dbg_printf("COUNTER=%08X ", (int)r->COUNTER);
|
|
||||||
dbg_printf("INTENSET=%08X ", (int)r->INTENSET);
|
|
||||||
dbg_printf("EVTENSET=%08X\r\n", (int)r->EVTENSET);
|
|
||||||
dbg_printf("EVENTS_COMPARE[0..3]=%X,%X,%X,%X ", (int)r->EVENTS_COMPARE[0], (int)r->EVENTS_COMPARE[1], (int)r->EVENTS_COMPARE[2], (int)r->EVENTS_COMPARE[3]);
|
|
||||||
dbg_printf("CC[0..3]=%08X,%08X,%08X,%08X\r\n", (int)r->CC[0], (int)r->CC[1], (int)r->CC[2], (int)r->CC[3]);
|
|
||||||
dbg_printf("woke_up=%d\r\n", rtc_woke_up_counter);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void tick_init(void) {
|
void tick_init(void) {
|
||||||
if (!nrf_clock_lf_is_running(NRF_CLOCK)) {
|
if (!nrf_clock_lf_is_running(NRF_CLOCK)) {
|
||||||
nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_LFCLKSTART);
|
nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_LFCLKSTART);
|
||||||
|
Loading…
Reference in New Issue
Block a user