Setup stdio to use RTT for debug purposes

This commit is contained in:
Erin Shepherd 2023-04-23 23:18:58 +02:00
parent f7b10dd6d6
commit 84c5da36ba
7 changed files with 45 additions and 3 deletions

3
.gitmodules vendored
View file

@ -1,3 +1,6 @@
[submodule "lib/pico-sdk"] [submodule "lib/pico-sdk"]
path = lib/pico-sdk path = lib/pico-sdk
url = https://github.com/raspberrypi/pico-sdk url = https://github.com/raspberrypi/pico-sdk
[submodule "lib/rtt"]
path = lib/rtt
url = https://github.com/adfernandes/segger-rtt

View file

@ -7,7 +7,13 @@ project(vibe-check)
pico_sdk_init() pico_sdk_init()
include_directories(
${CMAKE_SOURCE_DIR}/lib/rtt/RTT
)
add_executable(vibe-check add_executable(vibe-check
lib/rtt/RTT/SEGGER_RTT.c
src/stdio_rtt.c
src/main.c src/main.c
) )

1
lib/rtt Submodule

@ -0,0 +1 @@
Subproject commit 660fa2589a67cc87c9a112e405531c53b77504ad

View file

@ -1,7 +1,7 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import <nixpkgs> {} }:
pkgs.mkShell { pkgs.mkShell {
buildInputs = with pkgs; [ buildInputs = with pkgs; [
cmake ninja python3 gcc-arm-embedded cmake cmakeCurses ninja python3 gcc-arm-embedded
picotool picotool
]; ];
} }

View file

@ -1,7 +1,9 @@
#include <stdio.h> #include <stdio.h>
#include "pico/stdlib.h" #include "pico/stdlib.h"
#include "pico/cyw43_arch.h" #include "pico/cyw43_arch.h"
#include "btstack.h" #include "stdio_rtt.h"
// #include "btstack.h"
#ifndef CYW43_WL_GPIO_LED_PIN #ifndef CYW43_WL_GPIO_LED_PIN
#error no WiFi LED on board, wrong -DPICO_BOARD? #error no WiFi LED on board, wrong -DPICO_BOARD?
@ -11,7 +13,9 @@
// https://github.com/buttplugio/buttplug/blob/master/buttplug/src/server/device/protocol/sakuraneko.rs // https://github.com/buttplugio/buttplug/blob/master/buttplug/src/server/device/protocol/sakuraneko.rs
int main() { int main() {
stdio_init_all(); // stdio_init_all();
stdio_rtt_init();
if (cyw43_arch_init()) { if (cyw43_arch_init()) {
printf("WiFi init failed"); printf("WiFi init failed");
return -1; return -1;

20
src/stdio_rtt.c Normal file
View file

@ -0,0 +1,20 @@
#include "pico/stdio/driver.h"
#include "stdio_rtt.h"
#include "SEGGER_RTT.h"
void stdio_rtt_init(void) {
stdio_set_driver_enabled(&stdio_rtt, true);
}
static void stdio_rtt_out_chars(const char *buf, int length) {
SEGGER_RTT_Write(0, buf, length);
}
static int stdio_rtt_in_chars(char *buf, int length) {
return SEGGER_RTT_Read(0, buf, length);
}
stdio_driver_t stdio_rtt = {
.out_chars = stdio_rtt_out_chars,
.in_chars = stdio_rtt_in_chars,
};

8
src/stdio_rtt.h Normal file
View file

@ -0,0 +1,8 @@
#ifndef STDIO_RTT_H
#define STDIO_RTT_H
#include "pico/stdio.h"
extern stdio_driver_t stdio_rtt;
void stdio_rtt_init(void);
#endif