From c6b4fa4646442020152c0316ea69c95be88c9ee3 Mon Sep 17 00:00:00 2001 From: Sean Cross Date: Tue, 24 Oct 2023 16:51:46 +0800 Subject: [PATCH] initial commit Signed-off-by: Sean Cross --- .gitignore | 1 + .gitmodules | 3 +++ Cargo.lock | 25 +++++++++++++++++++++ Cargo.toml | 9 ++++++++ blackmagic | 1 + build.rs | 56 ++++++++++++++++++++++++++++++++++++++++++++++ include/gdb_if.h | 29 ++++++++++++++++++++++++ include/general.h | 18 +++++++++++++++ include/platform.h | 38 +++++++++++++++++++++++++++++++ include/target.h | 3 +++ src/main.rs | 3 +++ 11 files changed, 186 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 160000 blackmagic create mode 100644 build.rs create mode 100644 include/gdb_if.h create mode 100644 include/general.h create mode 100644 include/platform.h create mode 100644 include/target.h create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..eee2999 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "blackmagic"] + path = blackmagic + url = https://github.com/blackmagic-debug/blackmagic.git diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..0801e1d --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,25 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "blackmagic-sys" +version = "0.1.0" +dependencies = [ + "cc", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "libc" +version = "0.2.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..4e68c1f --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "blackmagic-sys" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[build-dependencies] +cc = "1" \ No newline at end of file diff --git a/blackmagic b/blackmagic new file mode 160000 index 0000000..41bce05 --- /dev/null +++ b/blackmagic @@ -0,0 +1 @@ +Subproject commit 41bce050ea2cb44bae509b6ccd9daf9c59b569e3 diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..7b74a22 --- /dev/null +++ b/build.rs @@ -0,0 +1,56 @@ +fn main() { + cc::Build::new() + .files(&[ + "blackmagic/src/crc32.c", + "blackmagic/src/target/adiv5_jtag.c", + "blackmagic/src/target/adiv5_swd.c", + "blackmagic/src/target/adiv5.c", + "blackmagic/src/target/ch32f1.c", + "blackmagic/src/target/cortex.c", + "blackmagic/src/target/cortexa.c", + "blackmagic/src/target/cortexm.c", + "blackmagic/src/target/efm32.c", + "blackmagic/src/target/gdb_reg.c", + "blackmagic/src/target/hc32l110.c", + "blackmagic/src/target/imxrt.c", + "blackmagic/src/target/jtag_devs.c", + "blackmagic/src/target/jtag_scan.c", + "blackmagic/src/target/kinetis.c", + "blackmagic/src/target/lmi.c", + "blackmagic/src/target/lpc11xx.c", + "blackmagic/src/target/lpc15xx.c", + "blackmagic/src/target/lpc17xx.c", + "blackmagic/src/target/lpc40xx.c", + "blackmagic/src/target/lpc43xx.c", + "blackmagic/src/target/lpc546xx.c", + "blackmagic/src/target/lpc55xx.c", + "blackmagic/src/target/lpc_common.c", + "blackmagic/src/target/msp432e4.c", + "blackmagic/src/target/msp432p4.c", + "blackmagic/src/target/nrf51.c", + "blackmagic/src/target/nrf91.c", + "blackmagic/src/target/nxpke04.c", + "blackmagic/src/target/renesas.c", + "blackmagic/src/target/rp.c", + "blackmagic/src/target/sam3x.c", + "blackmagic/src/target/sam4l.c", + "blackmagic/src/target/samd.c", + "blackmagic/src/target/samx5x.c", + "blackmagic/src/target/sfdp.c", + "blackmagic/src/target/spi.c", + "blackmagic/src/target/stm32f1.c", + "blackmagic/src/target/stm32f4.c", + "blackmagic/src/target/stm32g0.c", + "blackmagic/src/target/stm32h5.c", + "blackmagic/src/target/stm32h7.c", + "blackmagic/src/target/stm32l0.c", + "blackmagic/src/target/stm32l4.c", + "blackmagic/src/target/stm32mp15.c", + "blackmagic/src/target/target.c", + "blackmagic/src/target/target_flash.c", + "blackmagic/src/target/target_probe.c", + ]) + .includes(&["include/", "blackmagic/src/include/"]) + .define("PC_HOSTED", Some("0")) + .compile("blackmagic"); +} diff --git a/include/gdb_if.h b/include/gdb_if.h new file mode 100644 index 0000000..0a1ad7c --- /dev/null +++ b/include/gdb_if.h @@ -0,0 +1,29 @@ +/* + * This file is part of the Black Magic Debug project. + * + * Copyright (C) 2011 Black Sphere Technologies Ltd. + * Written by Gareth McMullin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __GDB_IF_H +#define __GDB_IF_H + +int gdb_if_init(void); +unsigned char gdb_if_getchar(void); +unsigned char gdb_if_getchar_to(int timeout); +void gdb_if_putchar(unsigned char c, int flush); + +#endif \ No newline at end of file diff --git a/include/general.h b/include/general.h new file mode 100644 index 0000000..cf011e3 --- /dev/null +++ b/include/general.h @@ -0,0 +1,18 @@ +#undef _GNU_SOURCE +#include_next + +#ifndef __BLACKMAGIC_SYS_GENERAL_H +#define __BLACKMAGIC_SYS_GENERAL_H + +#include +#include +#include + +// #define PRINT_NOOP() do {} while(0) +// #define DEBUG_WARN(x, ...) PRINT_NOOP() +// #define DEBUG_ERROR(x, ...) PRINT_NOOP() +// #define DEBUG_INFO(x, ...) PRINT_NOOP() +// #define DEBUG_GDB(x, ...) PRINT_NOOP() +// #define DEBUG_TARGET(x, ...) PRINT_NOOP() + +#endif /* __BLACKMAGIC_SYS_GENERAL_H */ \ No newline at end of file diff --git a/include/platform.h b/include/platform.h new file mode 100644 index 0000000..8b74cb4 --- /dev/null +++ b/include/platform.h @@ -0,0 +1,38 @@ +#ifndef __BLACKMAGIC_SYS_PLATFORM_H +#define __BLACKMAGIC_SYS_PLATFORM_H + +#include + +#define SWDIO_MODE_FLOAT() \ + do \ + { \ + } while (0) + +#define SWDIO_MODE_DRIVE() \ + do \ + { \ + } while (0) + +#define TMS_SET_MODE() \ + do \ + { \ + } while (0) + +#define TMS_PIN 1 +#define TCK_PIN 2 +#define TDI_PIN 3 +#define TDO_PIN 4 + +#define SWDIO_PIN 5 +#define SWCLK_PIN 6 +#define SRST_PIN 7 + +#define SWCLK_PORT 0 +#define SWDIO_PORT 0 + +#define gpio_set(port, pin) +#define gpio_clear(port, pin) +#define gpio_get(port, pin) 0 +#define gpio_set_val(port, pin, value) + +#endif /* __BLACKMAGIC_SYS_PLATFORM_H */ \ No newline at end of file diff --git a/include/target.h b/include/target.h new file mode 100644 index 0000000..b53f165 --- /dev/null +++ b/include/target.h @@ -0,0 +1,3 @@ +#ifndef __BLACKMAGIC_SYS_TARGET_H +#define __BLACKMAGIC_SYS_TARGET_H +#endif /* __BLACKMAGIC_SYS_TARGET_H */ \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +}