diff --git a/flake.nix b/flake.nix index 888c9a5..e785fb9 100644 --- a/flake.nix +++ b/flake.nix @@ -26,6 +26,8 @@ rootFileContent = builtins.readFile rootdir.outPath; in pkgs.lib.mkIf (rootFileContent != "") rootFileContent; + + ocdInterface = mcu/tigard-swd.cfg; in { devenv.shells.mcu = { @@ -34,6 +36,7 @@ packages = with pkgs; [ gnumake cmake + pkgsCross.arm-embedded.buildPackages.gdb # ARM one is broken gcc-arm-embedded python3 picotool @@ -43,6 +46,27 @@ env = { PICO_SDK_PATH = "${pkgs.pico-sdk}/lib/pico-sdk"; }; + + scripts = { + build.exec = '' + cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -D PICO_STDIO_SEMIHOSTING=1 + cmake --build build --parallel + ''; + build-rel.exec = '' + cmake -S . -B build-release -D CMAKE_BUILD_TYPE=Release + cmake --build build-release --parallel + ''; + clean.exec = '' + rm -rf build/ build-release/ + ''; + + ocd.exec = '' + openocd -f ${ocdInterface} -f target/rp2040.cfg + ''; + gdb.exec = '' + arm-none-eabi-gdb -x .gdbinit build/qclk.elf + ''; + }; }; }; }; diff --git a/mcu/.gdbinit b/mcu/.gdbinit new file mode 100644 index 0000000..e0da8fd --- /dev/null +++ b/mcu/.gdbinit @@ -0,0 +1,4 @@ +target extended-remote localhost:3333 +monitor arm semihosting enable +monitor reset init +monitor debug_level -2 diff --git a/mcu/.gitignore b/mcu/.gitignore index 84c048a..8898bd1 100644 --- a/mcu/.gitignore +++ b/mcu/.gitignore @@ -1 +1,2 @@ /build/ +/build-release/ diff --git a/mcu/CMakeLists.txt b/mcu/CMakeLists.txt index a73804c..4c8f2c9 100644 --- a/mcu/CMakeLists.txt +++ b/mcu/CMakeLists.txt @@ -6,14 +6,14 @@ include(pico_sdk_import.cmake) project(test_project C CXX ASM) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) -set(CMAKE_C_COMPILER_WORKS ON) -set(CMAKE_CXX_COMPILER_WORKS ON) pico_sdk_init() add_executable(qclk main.c ) + pico_enable_stdio_usb(qclk 1) -pico_enable_stdio_uart(qclk 1) +pico_enable_stdio_uart(qclk 0) + pico_add_extra_outputs(qclk) target_link_libraries(qclk pico_stdlib) diff --git a/mcu/main.c b/mcu/main.c index f36b163..98c45bd 100644 --- a/mcu/main.c +++ b/mcu/main.c @@ -1,13 +1,16 @@ #include -#include "pico/stdlib.h" + #include "hardware/gpio.h" +#include "pico/stdlib.h" #include "pico/binary_info.h" -const uint LED_PIN = 25; +const uint PIN_DIGIT_BASE = 18; +const uint PIN_SEGMENT_BASE = 2; + +const uint DIGITS = 4; int main() { - bi_decl(bi_program_description("This is a test binary.")); - bi_decl(bi_1pin_with_name(LED_PIN, "On-board LED")); + bi_decl(bi_program_description("qCLK driver.")); stdio_init_all(); diff --git a/mcu/tigard-swd.cfg b/mcu/tigard-swd.cfg new file mode 100644 index 0000000..489d257 --- /dev/null +++ b/mcu/tigard-swd.cfg @@ -0,0 +1,8 @@ +adapter driver ftdi +transport select swd +ftdi_vid_pid 0x0403 0x6010 +ftdi_channel 1 +adapter speed 2000 +ftdi_layout_init 0x0028 0x002b +ftdi_layout_signal SWD_EN -data 0 +ftdi_layout_signal nSRST -data 0x0020