Skip to content
This repository was archived by the owner on Jan 30, 2024. It is now read-only.
This repository was archived by the owner on Jan 30, 2024. It is now read-only.

Add support for EFM32TG11B family #376

@n8tlarsen

Description

@n8tlarsen

Describe the bug
I'm trying to add support for the EFM32TG11B family of MCUs, and have successfully built a local version on probe-rs and probe-run which include the yaml configurations. However, when connecting to the target device using probe-run I get errors after flashing the code completes. I'm able to flash the code using cargo-flash, then connect to the device using openOCD and GDB and debug without issue. I've also reported this on probe-rs/probe-rs.

To Reproduce
Compile probe-run v0.3.6 patched with probe-rs v0.14.2 and the attached EFM32TG11B_Series.yaml.txt. Enter the project directory and execute cargo run while the debug probe and target device are connected and powered.

Expected and observed behavior
I expected to see a backtrace but instead, the cargo run command produced the following error:

    Finished dev [optimized + debuginfo] target(s) in 0.04s
     Running `probe-run --chip EFM32TG11B120F128GM64 target/thumbv6m-none-eabi/debug/un200`
(HOST) INFO  flashing program (8 pages / 8.00 KiB)
(HOST) INFO  success!
Error: Error communicating with probe: A ARM specific error occured.

Caused by:
    0: A ARM specific error occured.
    1: Error using access port
    2: Failed to write register CSW at address 0x00000000
    3: An error occured in the communication with an access port or debug port.
    4: Target device responded with a FAULT response to the request.

config.toml

[target.'cfg(all(target_arch = "arm", target_os = "none"))']
runner = "probe-run --chip EFM32TG11B120F128GM64"
# runner = "arm-none-eabi-gdb -x openocd.gdb"
rustflags = [
  "-C", "linker=flip-link",
  "-C", "link-arg=-Tlink.x",
  "-C", "link-arg=-Tdefmt.x",
  # This is needed if your flash or ram addresses are not aligned to 0x10000 in memory.x
  # See https://github.com/rust-embedded/cortex-m-quickstart/pull/95
  "-C", "link-arg=--nmagic",
]

[build]
target = "thumbv6m-none-eabi"    # Cortex-M0 and Cortex-M0+
# target = "thumbv7m-none-eabi"    # Cortex-M3
# target = "thumbv7em-none-eabi"   # Cortex-M4 and Cortex-M7 (no FPU)
# target = "thumbv7em-none-eabihf" # Cortex-M4F and Cortex-M7F (with FPU)

[alias]
rb = "run --bin"
rrb = "run --release --bin"

Probe details

$ probe-rs-cli list
The following devices were found:
[0]: J-Link (J-Link) (VID: 1366, PID: 0101, Serial: 000051013408, JLink)

Operating System:
Ubuntu 22.04.1 LTS on WSL2 in Windows 11

Additional context
My target device is an EFM32TG11B120F128GM64 deployed on a custom PCB which I have previously tested extensively with C code, J-Link tools, openOCD and GDB.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions