knurling-rs / probe-run

Run embedded programs just like native ones
Apache License 2.0
646 stars 75 forks source link

Error: `.vector_table` section is missing on ESP32-C3 #350

Open TheButlah opened 2 years ago

TheButlah commented 2 years ago

Describe the bug Flashing firmware for ESP32-C3 fails with an error. This happens regardless of whether the direct-boot feature is provided to the esp-hal (direct-boot bypasses the second stage bootloader on the esp32c3).

Cargo flash works, although it only works in direct-boot mode due to https://github.com/probe-rs/probe-rs/issues/1194

To Reproduce

❯ probe-run --chip esp32c3 target/riscv32imac-unknown-none-elf/debug/firmware
Error: `.vector_table` section is missing

Expected and observed behavior Expected the program to flash successfully.

config.toml The contents of your project's .cargo/config.toml file

[target.riscv32imac-unknown-none-elf]
# runner = "espflash --monitor"
runner = "probe-run --chip esp32c3"

[build]
rustflags = [
  # Required to obtain backtraces (e.g. when using the "esp-backtrace" crate.)
  # NOTE: May negatively impact performance of produced code
  "-C",
  "force-frame-pointers",

  "-C",
  "link-arg=-Tlinkall.x",

  # For defmt
  # "-C",
  # "link-arg=-Tdefmt.x",
]
target = "riscv32imac-unknown-none-elf"

[unstable]
build-std = ["core", "alloc"]

Probe details

❯ probe-rs-cli list
The following devices were found:
[0]: ESP JTAG (VID: 303a, PID: 1001, Serial: 84:F7:03:33:50:60, EspJtag)
❯ probe-rs-cli info
No DAP interface was found on the connected probe. Thus, ARM info cannot be printed.
RISCV Chip:
        IDCODE: 0000005c25
         Version:      0
         Part:         5
         Manufacturer: 1554 (Espressif Systems (Shanghai)  Co Ltd)

Operating System: MacOS 12.5

ELF file (attachment) firmware.zip

Source Code: https://github.com/SlimeVR/SlimeVR-Rust/tree/5e7e8e60175d37eac35ac7f5d636f4a97c8784fb/firmware

jonas-schievink commented 2 years ago

I'm afraid we don't support RISC-V at the moment