ESP32-C3-DevKit-RUST-1 board

I bought a ESP32-C3-DevKit-RUST-1 devkit aka the RUST ESP board.

  • SoC: ESP32-C3-MINI-1
  • 6DoF IMU
  • a temperature and humidity sensor
  • a Li-Ion battery charger
  • Type-C USB

features

  • 32-bit RISC-V single-core processor, up to 160MHz
  • 384KB ROM
  • 400KB SRAM (16KB for cache)
  • 8KB SRAM in RTC
  • 22× programmable GPIOs
  • 3× SPI
  • 2× UART
  • 1× I2C
  • 1× I2S
  • 1× TWAI
  • 2× 12-bit SAR ADCs, up to 6 channels
  • 1× temperature sensor
  • Full-speed USB Serial/JTAG controller
  • General DMA controller (GDMA)
  • LED PWM controller (LEDC)
  • Remote Control Peripheral (RMT)
  • 1× 52-bit system timer
  • 2× 54-bit general-purpose timers
  • 3× watchdog timers

wireless

  • IEEE 802.11 b/g/n-compliant
  • bluetooth 5, Bluetooth mesh

pins on the board

left  right
Reset             1   1  VBAT
3V3               2   2  EN - LDO enable
NC                3   3  VBUS
GND               4   4  NC
IO0 / ADC1-0      5   5  NC
IO1 / ADC1-1      6   6  NC
IO2 / ADC1-2      7   7  NC
IO3 / ADC1-3      8   8  NC
IO4 / ADC2-0      9   9  IO18 / USB_D-
IO5 / ADC2-1     10  10  IO19 / USB_D+
IO6 / MTCK       11  11  IO8  / SCL
IO7 / MTDO / LED 12  12  IO10 / SDA
IO8 / LOG        13  
IO21 / U0RXD     14  
IO20 / U0TXD     15  
IO9 / BOOT       16  

I2C bus

  • SDA GPIO10
  • SCL GPIO8

I2C peripherals

  • 0x68 IMU ICM-42670-P
  • 0x70 Temperature and Humidity SHTC3

other peripherals

  • WS2812 LED GPIO2
  • LED GPIO7
  • button / boot GPIO9

back to microcontrollers page.

Links

Espressif Systems ESP32-C3-DevKit-RUST-1, Github Rust ESP board User Guide, hardware, Ferrous Systems Espressif trainings, Mouser info about ESP32-C3-DevKit-RUST-1 Board,

awesome-embedded-rust, crates.io mandown lib.rs mandown,

local links

c1, c2, eb, vm4,

History

2023-12-20: c2 - I have a 1.28 inch round TFT display (the box is labeled 30420), 240 x 240, GC9A01 driver, 4 wire SPI. The pins are labeled (top to bottom): RST, CS, DC, SDA, SCL, GND, VCC. There are crates: gc9a01-rs, gc9a01a,

2023-12-15: c2 - also works nicely with rustc 1.74

tingo@kg-core2:~/personal/projects/2023/rust/embedded/riscv/ESP32-C3-DevKit-RUST-1/esp32c3-blink $ rustc --version
rustc 1.74.0 (79e9716c9 2023-11-13)

test hello world

tingo@kg-core2:~/personal/projects/2023/rust/embedded/riscv/ESP32-C3-DevKit-RUST-1/esp32c3-blink $ cargo run --example hello
   Compiling esp32c3-blink v0.1.0 (/zs/tingo/personal/projects/2023/rust/embedded/riscv/ESP32-C3-DevKit-RUST-1/esp32c3-blink)
    Finished dev [unoptimized + debuginfo] target(s) in 0.14s
     Running `espflash flash --monitor target/riscv32imc-unknown-none-elf/debug/examples/hello`
[2023-12-15T19:41:24Z INFO ] Detected 2 serial ports
[2023-12-15T19:41:24Z INFO ] Ports which match a known common dev board are highlighted
[2023-12-15T19:41:24Z INFO ] Please select a port
[2023-12-15T19:41:27Z INFO ] Serial port: '/dev/cuaU0'
[2023-12-15T19:41:27Z INFO ] Connecting...
[2023-12-15T19:41:27Z INFO ] Using flash stub
Chip type:         esp32c3 (revision v0.4)
Crystal frequency: 40MHz
Flash size:        4MB
Features:          WiFi, BLE
MAC address:       34:85:18:01:62:40
App/part. size:    153,696/4,128,768 bytes, 3.72%
[00:00:00] [========================================]      13/13      0x0                                                                                                [00:00:00] [========================================]       1/1       0x8000                                                                                             [00:00:01] [========================================]      48/48      0x10000                                                                                            [2023-12-15T19:41:29Z INFO ] Flashing has completed!
Commands:
    CTRL+R    Reset chip
    CTRL+C    Exit

ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x15 (USB_UART_CHIP_RESET),boot:0xc (SPI_FAST_FLASH_BOOT)
Saved PC:0x40380836
0x40380836 - esp_hal_common::interrupt::riscv::vectored::handle_interrupts
    at /home/tingo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/esp-hal-common-0.13.1/src/interrupt/riscv.rs:214
SPIWP:0xee
mode:DIO, clock div:2
load:0x3fcd5820,len:0x171c
0x3fcd5820 - _stack_start
    at ??:??
load:0x403cc710,len:0x968
0x403cc710 - 
    at ??:??
load:0x403ce710,len:0x2f68
0x403ce710 - 
    at ??:??
SHA-256 comparison failed:
Calculated: 1d06b938c0222bf626e0bdf46178b1b37ab24d03f0360fc8fcf7153c2571deaf
Expected: 68d7bdf643ba446b8ed7ae8423241d442fd052b2bc77091100ba06fd65dcf8d5
Attempting to boot anyway...
entry 0x403cc710
0x403cc710 - 
    at ??:??
I (43) boot: ESP-IDF v5.1-beta1-378-gea5e0ff298-dirt 2nd stage bootloader
I (43) boot: compile time Jun  7 2023 07:59:10
I (44) boot: chip revision: v0.4
I (48) boot.esp32c3: SPI Speed      : 40MHz
I (53) boot.esp32c3: SPI Mode       : DIO
I (57) boot.esp32c3: SPI Flash Size : 4MB
I (62) boot: Enabling RNG early entropy source...
I (68) boot: Partition Table:
I (71) boot: ## Label            Usage          Type ST Offset   Length
I (78) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (86) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (93) boot:  2 factory          factory app      00 00 00010000 003f0000
I (101) boot: End of partition table
I (105) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=02a80h ( 10880) map
I (116) esp_image: segment 1: paddr=00012aa8 vaddr=40380000 size=00f9ch (  3996) load
I (123) esp_image: segment 2: paddr=00013a4c vaddr=00000000 size=0c5cch ( 50636) 
I (141) esp_image: segment 3: paddr=00020020 vaddr=42000020 size=15818h ( 88088) map
I (161) boot: Loaded app from partition at offset 0x10000
I (161) boot: Disabling RNG early entropy source...
Hello world!

test blinky

tingo@kg-core2:~/personal/projects/2023/rust/embedded/riscv/ESP32-C3-DevKit-RUST-1/esp32c3-blink $ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.03s
     Running `espflash flash --monitor target/riscv32imc-unknown-none-elf/debug/esp32c3-blink`
[2023-12-15T19:45:30Z INFO ] Detected 2 serial ports
[2023-12-15T19:45:30Z INFO ] Ports which match a known common dev board are highlighted
[2023-12-15T19:45:30Z INFO ] Please select a port
[2023-12-15T19:45:34Z INFO ] Serial port: '/dev/cuaU0'
[2023-12-15T19:45:34Z INFO ] Connecting...
[2023-12-15T19:45:34Z INFO ] Using flash stub
Chip type:         esp32c3 (revision v0.4)
Crystal frequency: 40MHz
Flash size:        4MB
Features:          WiFi, BLE
MAC address:       34:85:18:01:62:40
App/part. size:    164,912/4,128,768 bytes, 3.99%
[00:00:00] [========================================]      13/13      0x0                                                                                                [00:00:00] [========================================]       1/1       0x8000                                                                                             [00:00:01] [========================================]      52/52      0x10000                                                                                            [2023-12-15T19:45:36Z INFO ] Flashing has completed!
Commands:
    CTRL+R    Reset chip
    CTRL+C    Exit

ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x15 (USB_UART_CHIP_RESET),boot:0xc (SPI_FAST_FLASH_BOOT)
Saved PC:0x40380832
0x40380832 - esp_hal_common::interrupt::riscv::vectored::handle_interrupts
    at /home/tingo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/esp-hal-common-0.13.1/src/interrupt/riscv.rs:214
SPIWP:0xee
mode:DIO, clock div:2
load:0x3fcd5820,len:0x171c
0x3fcd5820 - _stack_start
    at ??:??
load:0x403cc710,len:0x968
0x403cc710 - 
    at ??:??
load:0x403ce710,len:0x2f68
0x403ce710 - 
    at ??:??
SHA-256 comparison failed:
Calculated: 1d06b938c0222bf626e0bdf46178b1b37ab24d03f0360fc8fcf7153c2571deaf
Expected: 68d7bdf643ba446b8ed7ae8423241d442fd052b2bc77091100ba06fd65dcf8d5
Attempting to boot anyway...
entry 0x403cc710
0x403cc710 - 
    at ??:??
I (43) boot: ESP-IDF v5.1-beta1-378-gea5e0ff298-dirt 2nd stage bootloader
I (43) boot: compile time Jun  7 2023 07:59:10
I (44) boot: chip revision: v0.4
I (48) boot.esp32c3: SPI Speed      : 40MHz
I (53) boot.esp32c3: SPI Mode       : DIO
I (57) boot.esp32c3: SPI Flash Size : 4MB
I (62) boot: Enabling RNG early entropy source...
I (68) boot: Partition Table:
I (71) boot: ## Label            Usage          Type ST Offset   Length
I (78) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (86) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (93) boot:  2 factory          factory app      00 00 00010000 003f0000
I (101) boot: End of partition table
I (105) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=02e00h ( 11776) map
I (116) esp_image: segment 1: paddr=00012e28 vaddr=40380000 size=00f9ch (  3996) load
I (123) esp_image: segment 2: paddr=00013dcc vaddr=00000000 size=0c24ch ( 49740) 
I (141) esp_image: segment 3: paddr=00020020 vaddr=42000020 size=183e0h ( 99296) map
I (163) boot: Loaded app from partition at offset 0x10000
I (164) boot: Disabling RNG early entropy source...
Hello world!

2023-12-14: c2 - ok, I needed cargo-generate and espflash cargo install espflash too, now I can do stuff like

tingo@kg-core2:~/personal/projects/2023/rust/embedded/riscv/ESP32-C3-DevKit-RUST-1/esp32c3-blink $ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.06s
     Running `espflash flash --monitor target/riscv32imc-unknown-none-elf/debug/esp32c3-blink`
[2023-12-14T19:31:11Z INFO ] Detected 2 serial ports
[2023-12-14T19:31:11Z INFO ] Ports which match a known common dev board are highlighted
[2023-12-14T19:31:11Z INFO ] Please select a port
[2023-12-14T19:31:14Z INFO ] Serial port: '/dev/cuaU0'
[2023-12-14T19:31:14Z INFO ] Connecting...
[2023-12-14T19:31:14Z INFO ] Using flash stub
Chip type:         esp32c3 (revision v0.4)
Crystal frequency: 40MHz
Flash size:        4MB
Features:          WiFi, BLE
MAC address:       34:85:18:01:62:40
App/part. size:    225,712/4,128,768 bytes, 5.47%
[00:00:00] [========================================]      13/13      0x0                                                                                                [00:00:00] [========================================]       1/1       0x8000                                                                                             [00:00:01] [========================================]      73/73      0x10000                                                                                            [2023-12-14T19:31:17Z INFO ] Flashing has completed!
Commands:
    CTRL+R    Reset chip
    CTRL+C    Exit

ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x15 (USB_UART_CHIP_RESET),boot:0xc (SPI_FAST_FLASH_BOOT)
Saved PC:0x40380836
0x40380836 - esp_hal_common::interrupt::riscv::vectored::handle_interrupts
    at /home/tingo/.cargo/registry/src/index.crates.io-6f17d22bba15001f/esp-hal-common-0.13.1/src/interrupt/riscv.rs:214
SPIWP:0xee
mode:DIO, clock div:2
load:0x3fcd5820,len:0x171c
0x3fcd5820 - _stack_start
    at ??:??
load:0x403cc710,len:0x968
0x403cc710 - 
    at ??:??
load:0x403ce710,len:0x2f68
0x403ce710 - 
    at ??:??
SHA-256 comparison failed:
Calculated: 1d06b938c0222bf626e0bdf46178b1b37ab24d03f0360fc8fcf7153c2571deaf
Expected: 68d7bdf643ba446b8ed7ae8423241d442fd052b2bc77091100ba06fd65dcf8d5
Attempting to boot anyway...
entry 0x403cc710
0x403cc710 - 
    at ??:??
I (43) boot: ESP-IDF v5.1-beta1-378-gea5e0ff298-dirt 2nd stage bootloader
I (43) boot: compile time Jun  7 2023 07:59:10
I (44) boot: chip revision: v0.4
I (48) boot.esp32c3: SPI Speed      : 40MHz
I (53) boot.esp32c3: SPI Mode       : DIO
I (57) boot.esp32c3: SPI Flash Size : 4MB
I (62) boot: Enabling RNG early entropy source...
I (68) boot: Partition Table:
I (71) boot: ## Label            Usage          Type ST Offset   Length
I (78) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (86) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (93) boot:  2 factory          factory app      00 00 00010000 003f0000
I (101) boot: End of partition table
I (105) esp_image: segment 0: paddr=00010020 vaddr=3c030020 size=05e74h ( 24180) map
I (119) esp_image: segment 1: paddr=00015e9c vaddr=40380000 size=00f9ch (  3996) load
I (123) esp_image: segment 2: paddr=00016e40 vaddr=00000000 size=091d8h ( 37336) 
I (138) esp_image: segment 3: paddr=00020020 vaddr=42000020 size=27160h (160096) map
I (174) boot: Loaded app from partition at offset 0x10000
I (174) boot: Disabling RNG early entropy source...
Hello world!
Loop...
Loop...
Loop...
Loop...
Loop...
Loop...
Loop...
Loop...
Loop...
Loop...

after doing

tingo@kg-core2:~/personal/projects/2023/rust/embedded/riscv/ESP32-C3-DevKit-RUST-1/esp32c3-blink $ cargo generate esp-rs/esp-template
[..]

nice!

2023-12-14: c2 - next up is probe-rs, installed with cargo install probe-rs --features cli and fixing the devd script, I can do

tingo@kg-core2:~/personal/projects/2023/rust/embedded/riscv $ probe-rs list
The following debug probes were found:
[0]: ESP JTAG (VID: 303a, PID: 1001, Serial: 34:85:18:01:62:40, EspJtag)

and

tingo@kg-core2:~/personal/projects/2023/rust/embedded/riscv $ probe-rs info
Probing target via JTAG

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)

Probing target via SWD

Error identifying target using protocol SWD: Probe does not support SWD

2023-12-14: c2 - do cargo insatall cargo-espflash then

tingo@kg-core2:~/personal/projects/2023/rust/embedded/riscv $ cargo espflash board-info --port /dev/cuaU0
[2023-12-14T18:27:16Z INFO ] Serial port: '/dev/cuaU0'
[2023-12-14T18:27:16Z INFO ] Connecting...
[2023-12-14T18:27:16Z INFO ] Using flash stub
Chip type:         esp32c3 (revision v0.4)
Crystal frequency: 40MHz
Flash size:        4MB
Features:          WiFi, BLE
MAC address:       34:85:18:01:62:40

and

tingo@kg-core2:~/personal/projects/2023/rust/embedded/riscv $ cargo espflash board-info --version
cargo-espflash-espflash-board-info 2.1.0

2023-11-30: eb - probe-rs testing

tingo@kg-elitebook$ probe-rs --help
The probe-rs CLI

Usage: probe-rs [OPTIONS] <COMMAND>

Commands:
  dap-server  Debug Adapter Protocol (DAP) server. See https://probe.rs/docs/tools/vscode/
  list        List all connected debug probes
  info        Gets info about the selected debug probe and connected target
  reset       Resets the target attached to the selected debug probe
  gdb         Run a GDB server
  debug       Basic command line debugger
  download    Download memory to attached target
  erase       Erase all nonvolatile memory of attached target
  run         Flash and run an ELF program
  attach      Attach to rtt logging
  trace       Trace a memory location on the target
  itm         Configure and monitor ITM trace packets from the target
  chip        Inspect internal registry of supported chips
  benchmark   Measure the throughput of the selected debug probe
  profile     Profile on-target runtime performance of target ELF program
  read        Read from target memory address
  write       Write to target memory address
  help        Print this message or the help of the given subcommand(s)

Options:
      --log-file <LOG_FILE>
          Location for log file

          If no location is specified, the log file will be stored in a default directory.

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

tingo@kg-elitebook$ probe-rs list
The following debug probes were found:
[0]: ESP JTAG (VID: 303a, PID: 1001, Serial: 34:85:18:01:62:40, EspJtag)

tingo@kg-elitebook$ probe-rs info
Probing target via JTAG

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)

Probing target via SWD

Error identifying target using protocol SWD: Probe does not support SWD

tingo@kg-elitebook$ sudo probe-rs info
Probing target via JTAG

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)

Probing target via SWD

Error identifying target using protocol SWD: Probe does not support SWD

2023-11-30: eb - rust install probe-rs

tingo@kg-elitebook$ cargo install probe-rs --features cli
    Updating crates.io index
  Downloaded probe-rs v0.21.1
  Downloaded 1 crate (2.1 MB) in 0.71s
  Installing probe-rs v0.21.1
    Updating crates.io index
  Downloaded itertools v0.9.0
  Downloaded tracing-log v0.2.0
  Downloaded scroll_derive v0.11.1
  Downloaded git-version v0.3.8
  Downloaded fd-lock v3.0.13
  Downloaded endian-type v0.1.2
  Downloaded Inflector v0.11.4
  Downloaded plain v0.2.3
  Downloaded tracing-serde v0.1.3
  Downloaded hyper-tls v0.5.0
  Downloaded byte-unit v4.0.19
  Downloaded indoc v2.0.4
  Downloaded bitmatch v0.1.1
  Downloaded probe-rs-target v0.21.1
  Downloaded figment v0.10.12
  Downloaded managed v0.8.0
  Downloaded utf8-width v0.1.7
  Downloaded termtree v0.4.1
  Downloaded itm v0.9.0-rc.1
  Downloaded pretty_env_logger v0.5.0
  Downloaded overload v0.1.1
  Downloaded tokio-native-tls v0.3.1
  Downloaded uncased v0.9.9
  Downloaded xmlparser v0.13.6
  Downloaded yansi v1.0.0-rc.1
  Downloaded svd-rs v0.14.6
  Downloaded native-tls v0.2.11
  Downloaded defmt-decoder v0.3.9
  Downloaded sharded-slab v0.1.7
  Downloaded itertools v0.11.0
  Downloaded uriparse v0.6.4
  Downloaded regex-automata v0.1.10
  Downloaded goblin v0.7.1
  Downloaded tracing-subscriber v0.3.18
  Downloaded ratatui v0.23.0
  Downloaded regex-syntax v0.6.29
  Downloaded radix_trie v0.2.1
  Downloaded ron v0.8.1
  Downloaded roxmltree v0.18.1
  Downloaded serde_repr v0.1.17
  Downloaded pear v0.2.7
  Downloaded svd-parser v0.14.4
  Downloaded serde_yaml v0.9.27
  Downloaded uf2-decode v0.2.0
  Downloaded proc-macro2-diagnostics v0.10.1
  Downloaded dunce v1.0.4
  Downloaded pear_codegen v0.2.7
  Downloaded svg v0.14.0
  Downloaded matchers v0.1.0
  Downloaded inlinable_string v0.1.15
  Downloaded nu-ansi-term v0.46.0
  Downloaded rustyline v12.0.0
  Downloaded nibble_vec v0.1.0
  Downloaded cassowary v0.3.0
  Downloaded capstone-sys v0.15.0
  Downloaded schemafy_core v0.6.0
  Downloaded boolean_expression v0.3.11
  Downloaded cargo_toml v0.16.3
  Downloaded schemafy_lib v0.6.0
  Downloaded git-version-macro v0.3.8
  Downloaded schemafy v0.6.0
  Downloaded capstone v0.11.0
  Downloaded gdbstub v0.6.6
  Downloaded 63 crates (7.9 MB) in 1.76s (largest was `capstone-sys` at 4.9 MB)
   Compiling proc-macro2 v1.0.70
   Compiling unicode-ident v1.0.12
   Compiling serde v1.0.193
   Compiling libc v0.2.150
   Compiling cfg-if v1.0.0
   Compiling autocfg v1.1.0
   Compiling memchr v2.6.4
   Compiling quote v1.0.33
   Compiling syn v2.0.39
   Compiling cc v1.0.83
   Compiling pkg-config v0.3.27
   Compiling syn v1.0.109
   Compiling version_check v0.9.4
   Compiling once_cell v1.18.0
   Compiling itoa v1.0.9
   Compiling rustix v0.38.25
   Compiling errno v0.3.8
   Compiling smallvec v1.11.2
   Compiling fnv v1.0.7
   Compiling byteorder v1.5.0
   Compiling hashbrown v0.14.3
   Compiling equivalent v1.0.1
   Compiling pin-project-lite v0.2.13
   Compiling ryu v1.0.15
   Compiling thiserror v1.0.50
   Compiling aho-corasick v1.1.2
   Compiling indexmap v2.1.0
   Compiling regex-syntax v0.8.2
   Compiling serde_derive v1.0.193
   Compiling thiserror-impl v1.0.50
   Compiling crc32fast v1.3.2
   Compiling thiserror-core v1.0.50
   Compiling vcpkg v0.2.15
   Compiling log v0.4.20
   Compiling bitflags v2.4.1
   Compiling mio v0.8.9
   Compiling openssl-sys v0.9.96
   Compiling thiserror-core-impl v1.0.50
   Compiling regex-automata v0.4.3
   Compiling tracing-core v0.1.32
   Compiling is-terminal v0.4.9
   Compiling lock_api v0.4.11
   Compiling futures-core v0.3.29
   Compiling heck v0.4.1
   Compiling stable_deref_trait v1.2.0
   Compiling bytes v1.5.0
   Compiling rustversion v1.0.14
   Compiling static_assertions v1.1.0
   Compiling scopeguard v1.2.0
   Compiling adler v1.0.2
   Compiling miniz_oxide v0.7.1
   Compiling twox-hash v1.6.3
   Compiling regex v1.10.2
   Compiling semver v1.0.20
   Compiling typenum v1.17.0
   Compiling unicode-width v0.1.11
   Compiling flate2 v1.0.28
   Compiling ruzstd v0.4.0
   Compiling tracing-attributes v0.1.27
   Compiling generic-array v0.14.7
   Compiling socket2 v0.5.5
   Compiling num_cpus v1.16.0
   Compiling slab v0.4.9
   Compiling serde_json v1.0.108
   Compiling lazy_static v1.4.0
   Compiling ident_case v1.0.1
   Compiling radium v0.7.0
   Compiling strsim v0.10.0
   Compiling either v1.9.0
   Compiling futures-task v0.3.29
   Compiling cpp_demangle v0.4.3
   Compiling darling_core v0.14.4
   Compiling tracing v0.1.40
   Compiling tokio v1.34.0
   Compiling object v0.32.1
   Compiling gimli v0.28.1
   Compiling num-traits v0.2.17
   Compiling futures-util v0.3.29
   Compiling toml_datetime v0.6.5
   Compiling openssl v0.10.60
   Compiling foreign-types-shared v0.1.1
   Compiling winnow v0.5.19
   Compiling bitflags v1.3.2
   Compiling tap v1.0.1
   Compiling wyz v0.5.1
   Compiling toml_edit v0.19.15
   Compiling foreign-types v0.3.2
   Compiling http v0.2.11
   Compiling rustc_version v0.4.0
   Compiling darling_macro v0.14.4
   Compiling serde_spanned v0.6.4
   Compiling openssl-macros v0.1.1
   Compiling proc-macro2-diagnostics v0.10.1
   Compiling libusb1-sys v0.6.4
   Compiling backtrace v0.3.69
   Compiling memmap2 v0.5.10
   Compiling utf8parse v0.2.1
   Compiling parking_lot_core v0.9.9
   Compiling signal-hook v0.3.17
   Compiling futures-sink v0.3.29
   Compiling rustc-demangle v0.1.23
   Compiling tinyvec_macros v0.1.1
   Compiling pin-utils v0.1.0
   Compiling fallible-iterator v0.3.0
   Compiling httparse v1.8.0
   Compiling funty v2.0.0
   Compiling futures-io v0.3.29
   Compiling native-tls v0.2.11
   Compiling futures-channel v0.3.29
   Compiling bitvec v1.0.1
   Compiling toml_edit v0.21.0
   Compiling proc-macro-crate v1.3.1
   Compiling addr2line v0.21.0
   Compiling tinyvec v1.6.0
   Compiling tokio-util v0.7.10
   Compiling schemafy_core v0.6.0
   Compiling darling v0.14.4
   Compiling Inflector v0.11.4
   Compiling heapless v0.7.16
   Compiling uriparse v0.6.4
   Compiling signal-hook-registry v1.4.1
   Compiling percent-encoding v2.3.1
   Compiling base64 v0.21.5
   Compiling smawk v0.3.2
   Compiling anyhow v1.0.75
   Compiling binrw_derive v0.12.0
   Compiling openssl-probe v0.1.5
   Compiling unicode-linebreak v0.1.5
   Compiling try-lock v0.2.4
   Compiling yansi v1.0.0-rc.1
   Compiling paste v1.0.14
   Compiling want v0.3.1
   Compiling form_urlencoded v1.2.1
   Compiling schemafy_lib v0.6.0
   Compiling deku_derive v0.16.0
   Compiling h2 v0.3.22
   Compiling unicode-normalization v0.1.22
   Compiling toml v0.8.8
   Compiling anstyle-parse v0.2.2
   Compiling block-buffer v0.10.4
   Compiling crypto-common v0.1.6
   Compiling http-body v0.4.5
   Compiling nix v0.26.4
   Compiling itertools v0.9.0
   Compiling strum_macros v0.25.3
   Compiling strum_macros v0.24.3
   Compiling spin v0.9.8
   Compiling jep106 v0.2.8
   Compiling bytemuck_derive v1.5.0
   Compiling git-version-macro v0.3.8
   Compiling hash32 v0.2.1
   Compiling uncased v0.9.9
   Compiling hidapi v2.4.1
   Compiling capstone-sys v0.15.0
   Compiling getrandom v0.2.11
   Compiling socket2 v0.4.10
   Compiling csv-core v0.1.11
   Compiling is_ci v1.1.1
   Compiling anstyle v1.0.4
   Compiling colorchoice v1.0.0
   Compiling regex-syntax v0.6.29
   Compiling portable-atomic v1.5.1
   Compiling time-core v0.1.2
   Compiling unsafe-libyaml v0.2.9
   Compiling owo-colors v3.5.0
   Compiling anstyle-query v1.0.0
   Compiling camino v1.1.6
   Compiling rusb v0.9.3
   Compiling binrw v0.12.0
   Compiling powerfmt v0.2.0
   Compiling unicode-bidi v0.3.13
   Compiling httpdate v1.0.3
   Compiling tower-service v0.3.2
   Compiling hyper v0.14.27
   Compiling idna v0.5.0
   Compiling probe-rs-target v0.21.1
   Compiling deranged v0.3.9
   Compiling boolean_expression v0.3.11
   Compiling regex-automata v0.1.10
   Compiling anstream v0.6.4
   Compiling serde_yaml v0.9.27
   Compiling time-macros v0.2.15
   Compiling supports-color v2.1.0
   Compiling bytemuck v1.14.0
   Compiling csv v1.3.0
   Compiling rand_core v0.6.4
   Compiling git-version v0.3.8
   Compiling strum v0.25.0
   Compiling strum v0.24.1
   Compiling digest v0.10.7
   Compiling parking_lot v0.12.1
   Compiling deku v0.16.0
   Compiling backtrace-ext v0.2.1
   Compiling schemafy v0.6.0
   Compiling signal-hook-mio v0.2.3
   Compiling pear_codegen v0.2.7
   Compiling tokio-native-tls v0.3.1
   Compiling textwrap v0.15.2
   Compiling parse_int v0.6.0
   Compiling supports-unicode v2.0.0
   Compiling supports-hyperlinks v2.1.0
   Compiling serde_plain v1.0.2
   Compiling bincode v1.3.3
   Compiling scroll_derive v0.11.1
   Compiling miette-derive v5.10.0
   Compiling nibble_vec v0.1.0
   Compiling figment v0.10.12
   Compiling terminal_size v0.1.17
   Compiling num_threads v0.1.6
   Compiling endian-type v0.1.2
   Compiling termcolor v1.4.0
   Compiling xmlparser v0.13.6
   Compiling inlinable_string v0.1.15
   Compiling overload v0.1.1
   Compiling zero v0.1.3
   Compiling cpufeatures v0.2.11
   Compiling clap_lex v0.6.0
   Compiling option-ext v0.2.0
   Compiling array-init v2.1.0
   Compiling minimal-lexical v0.2.1
   Compiling md5 v0.7.0
   Compiling unicode-segmentation v1.10.1
   Compiling humantime v2.1.0
   Compiling ppv-lite86 v0.2.17
   Compiling clap_builder v4.4.9
   Compiling rand_chacha v0.3.1
   Compiling miette v5.10.0
   Compiling env_logger v0.10.1
   Compiling nom v7.1.3
   Compiling esp-idf-part v0.4.1
   Compiling dirs-sys v0.4.1
   Compiling pear v0.2.7
   Compiling sha2 v0.10.8
   Compiling xmas-elf v0.9.1
   Compiling nu-ansi-term v0.46.0
   Compiling roxmltree v0.18.1
   Compiling itertools v0.11.0
   Compiling scroll v0.11.0
   Compiling time v0.3.30
   Compiling radix_trie v0.2.1
   Compiling probe-rs v0.21.1
   Compiling hyper-tls v0.5.0
   Compiling crossterm v0.27.0
   Compiling matchers v0.1.0
   Compiling bitmatch v0.1.1
   Compiling url v2.5.0
   Compiling serialport v4.2.2
   Compiling serde_urlencoded v0.7.1
   Compiling colored v2.0.4
   Compiling console v0.15.7
   Compiling sharded-slab v0.1.7
   Compiling svd-rs v0.14.6
   Compiling clap_derive v4.4.7
   Compiling tracing-log v0.2.0
   Compiling tracing-serde v0.1.3
   Compiling fd-lock v3.0.13
   Compiling defmt-parser v0.3.3
   Compiling defmt-json-schema v0.1.0
   Compiling cargo-platform v0.1.5
   Compiling serde_repr v0.1.17
   Compiling thread_local v1.1.7
   Compiling encoding_rs v0.8.33
   Compiling ipnet v2.9.0
   Compiling home v0.5.5
   Compiling managed v0.8.0
   Compiling utf8-width v0.1.7
   Compiling plain v0.2.3
   Compiling mime v0.3.17
   Compiling dissimilar v1.0.7
   Compiling number_prefix v0.4.0
   Compiling cassowary v0.3.0
   Compiling slip-codec v0.3.4
   Compiling indoc v2.0.4
   Compiling espflash v2.1.0
   Compiling ratatui v0.23.0
   Compiling indicatif v0.17.7
   Compiling defmt-decoder v0.3.9
   Compiling reqwest v0.11.22
   Compiling goblin v0.7.1
   Compiling byte-unit v4.0.19
   Compiling gdbstub v0.6.6
   Compiling rustyline v12.0.0
   Compiling clap v4.4.10
   Compiling tracing-subscriber v0.3.18
   Compiling cargo_metadata v0.18.1
   Compiling svd-parser v0.14.4
   Compiling itm v0.9.0-rc.1
   Compiling capstone v0.11.0
   Compiling enum-primitive-derive v0.2.2
   Compiling jaylink v0.3.0
   Compiling directories v5.0.1
   Compiling pretty_env_logger v0.5.0
   Compiling rand v0.8.5
   Compiling cargo_toml v0.16.3
   Compiling textwrap v0.16.0
   Compiling ron v0.8.1
   Compiling sanitize-filename v0.5.0
   Compiling terminal_size v0.3.0
   Compiling kmp v0.1.1
   Compiling bitfield v0.14.0
   Compiling termtree v0.4.1
   Compiling svg v0.14.0
   Compiling uf2-decode v0.2.0
   Compiling ihex v3.0.0
   Compiling bytesize v1.3.0
   Compiling dunce v1.0.4
    Finished release [optimized] target(s) in 18m 23s
  Installing /home/tingo/.cargo/bin/cargo-embed
  Installing /home/tingo/.cargo/bin/cargo-flash
  Installing /home/tingo/.cargo/bin/probe-rs
   Installed package `probe-rs v0.21.1` (executables `cargo-embed`, `cargo-flash`, `probe-rs`)

2023-11-30: eb - probe-run also works

tingo@kg-elitebook$ probe-run --list-probes
the following probes were found:
[0]: ESP JTAG (VID: 303a, PID: 1001, Serial: 34:85:18:01:62:40, EspJtag)

2023-11-30: eb - after installing cargo-espflash (and gmake), I can do this

tingo@kg-elitebook$ cargo espflash board-info --version
cargo-espflash-espflash-board-info 2.1.0

and

tingo@kg-elitebook$ cargo espflash board-info --port /dev/cuaU0
[2023-11-30T21:02:45Z INFO ] Serial port: '/dev/cuaU0'
[2023-11-30T21:02:45Z INFO ] Connecting...
[2023-11-30T21:02:45Z INFO ] Using flash stub
Chip type:         esp32c3 (revision v0.4)
Crystal frequency: 40MHz
Flash size:        4MB
Features:          WiFi, BLE
MAC address:       34:85:18:01:62:40

2023-05-23: c1 - the SoC is an ESP32 C3 (RISC V), so it needs the nightly toolchain

tingo@kg-core1:~/personal/projects/2023/rust/embedded/riscv $ rustup toolchain install nightly --component rust-src
info: syncing channel updates for 'nightly-x86_64-unknown-freebsd'
info: latest update on 2023-05-23, rust version 1.71.0-nightly (8b4b20836 2023-05-22)
info: downloading component 'rust-src'
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
info: downloading component 'rust-std'
info: downloading component 'rustc'
info: downloading component 'rustfmt'
info: removing previous version of component 'cargo'
info: removing previous version of component 'clippy'
info: removing previous version of component 'rust-docs'
info: removing previous version of component 'rust-src'
info: removing previous version of component 'rust-std'
info: removing previous version of component 'rustc'
info: removing previous version of component 'rustfmt'
info: installing component 'rust-src'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
  4.6 MiB /  13.6 MiB ( 34 %)   0 B/s in  1s ETA: Unknown                                                           5.9 MiB /  13.6 MiB ( 43 %)   4.6 MiB/s in  2s ETA:  1s                                                           8.6 MiB /  13.6 MiB ( 63 %)   3.0 MiB/s in  3s ETA:  1s                                                          13.6 MiB /  13.6 MiB (100 %)   2.9 MiB/s in  4s ETA:  0s                                                          13.6 MiB /  13.6 MiB (100 %)   3.4 MiB/s in  4s ETA:  0s
info: installing component 'rust-std'
 10.8 MiB /  27.8 MiB ( 39 %)   0 B/s in  1s ETA: Unknown                                                          21.8 MiB /  27.8 MiB ( 79 %)  10.8 MiB/s in  2s ETA:  0s                                                          27.8 MiB /  27.8 MiB (100 %)  10.9 MiB/s in  2s ETA:  0s
info: installing component 'rustc'
 13.8 MiB /  69.7 MiB ( 20 %)   0 B/s in  1s ETA: Unknown                                                          24.7 MiB /  69.7 MiB ( 35 %)  13.8 MiB/s in  2s ETA:  3s                                                          37.2 MiB /  69.7 MiB ( 53 %)  12.4 MiB/s in  3s ETA:  2s                                                          49.6 MiB /  69.7 MiB ( 71 %)  12.4 MiB/s in  4s ETA:  1s                                                          57.4 MiB /  69.7 MiB ( 82 %)  12.4 MiB/s in  5s ETA:  0s                                                          67.9 MiB /  69.7 MiB ( 97 %)  11.5 MiB/s in  6s ETA:  0s                                                          69.7 MiB /  69.7 MiB (100 %)  10.8 MiB/s in  6s ETA:  0s
info: installing component 'rustfmt'

  nightly-x86_64-unknown-freebsd updated - rustc 1.71.0-nightly (8b4b20836 2023-05-22) (from rustc 1.71.0-nightly (4a59ba4d5 2023-05-12))

info: checking for self-update

and the riscv32imc-unknown-none-elf target

tingo@kg-core1:~/personal/projects/2023/rust/embedded/riscv $ rustup target add riscv32imc-unknown-none-elf
info: component 'rust-std' for target 'riscv32imc-unknown-none-elf' is up to date

good. Try probe-run

tingo@kg-core1:~/personal/projects/2023/rust/embedded/riscv $ probe-run --list-probes
Error: no probe was found.

re-try with sudo

tingo@kg-core1:~/personal/projects/2023/rust/embedded/riscv $ sudo probe-run --list-probes
the following probes were found:
[0]: ESP JTAG (VID: 303a, PID: 1001, Serial: 34:85:18:01:62:40, EspJtag)

ok, so it is a permissions problem. Dump device description

root@kg-core1:~ # usbconfig -d ugen3.4 dump_device_desc
ugen3.4: <Espressif USB JTAG/serial debug unit> at usbus3, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x00ef  <Miscellaneous device>
  bDeviceSubClass = 0x0002 
  bDeviceProtocol = 0x0001 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x303a 
  idProduct = 0x1001 
  bcdDevice = 0x0101 
  iManufacturer = 0x0001  <Espressif>
  iProduct = 0x0002  <USB JTAG/serial debug unit>
  iSerialNumber = 0x0003  <34:85:18:01:62:40>
  bNumConfigurations = 0x0001 

add a devd config file

tingo@kg-core1:~/personal/projects/2023/rust/embedded/msp430/msp430-test-f5529 $ cat /usr/local/etc/devd/espjtag.conf 
# allow group (operator) to access the usb connection of ESP usb jtag
notify 100 {
        match "system"          "USB";
        match "subsystem"       "INTERFACE";
        match "type"            "ATTACH";
        match "vendor"      "0x303a";
        match "product"     "0x1001";
        action "usb_devaddr=`echo $cdev | sed 's#^ugen##'` && chmod g+rw /dev/usb/${usb_devaddr}.*";
};

and restart devd via service devd restart, then unplug and replug the device.

tingo@kg-core1:~/personal/projects/2023/rust/embedded/riscv $ probe-run --list-probes
the following probes were found:
[0]: ESP JTAG (VID: 303a, PID: 1001, Serial: 34:85:18:01:62:40, EspJtag)

fixed.

2023-05-23: c1 - connecting the board to my c1 workstation. From /var/log/messages

May 23 20:36:47 kg-core1 kernel: ugen3.4: <Espressif USB JTAG/serial debug unit> at usbus3
May 23 20:36:47 kg-core1 kernel: umodem0 on uhub8
May 23 20:36:47 kg-core1 kernel: umodem0: <Espressif USB JTAG/serial debug unit, class 239/2, rev 2.00/1.01, addr 4> on usbus3
May 23 20:36:47 kg-core1 kernel: umodem0: data interface 1, has CM over data, has no break

and

root@kg-core1:~ # sysctl -n dev.umodem.0.ttyname
U0

list the tty devices

root@kg-core1:~ # ll /dev/cuaU* /dev/ttyU*
crw-rw----  1 uucp  dialer  0x1be May 23 20:36 /dev/cuaU0
crw-rw----  1 uucp  dialer  0x1bf May 23 20:36 /dev/cuaU0.init
crw-rw----  1 uucp  dialer  0x1c0 May 23 20:36 /dev/cuaU0.lock
crw-------  1 root  wheel   0x1ac May 23 20:36 /dev/ttyU0
crw-------  1 root  wheel   0x1ad May 23 20:36 /dev/ttyU0.init
crw-------  1 root  wheel   0x1ba May 23 20:36 /dev/ttyU0.lock

and the usb devices

root@kg-core1:~ # ll /dev/ugen3.4 /dev/usb/3.4*
lrwxr-xr-x  1 root  wheel         9 May 23 20:36 /dev/ugen3.4@ -> usb/3.4.0
crw-------  1 root  operator   0xac May 23 20:36 /dev/usb/3.4.0
crw-------  1 root  operator   0xaf May 23 20:36 /dev/usb/3.4.1
crw-------  1 root  operator   0xb2 May 23 20:36 /dev/usb/3.4.2
crw-------  1 root  operator  0x1ab May 23 20:36 /dev/usb/3.4.3

2023-05-22: this board is v1.2a. There is a pull request #61 which notes that GPIO18 and 19 is swapped on the silkscreen.

2023-05-23: I created this page.

2023-05-22: I received the package from Mouser.

2023-05-16: the order was shipped.

2023-05-15: I ordered a ESP32-C3-DevKit-RUST-1 devkit (356-ESP32C3DVKTRUST1) from Mouser (with other items). Price was NOK 219.11.