RustEmbedded 配置

Posted on 2024-12-27T19:32:00+08:00 单片机 环境 Rust

操作环境

使用的是wsl2

s413@Shaox ~> neofetch
                   -`                    s413@Shaox
                  .o+`                   ----------
                 `ooo/                   OS: Arch Linux on Windows 10 x86_64
                `+oooo:                  Kernel: 5.15.167.4-microsoft-standard-WSL2
               `+oooooo:                 Uptime: 44 mins
               -+oooooo+:                Packages: 202 (pacman)
             `/:-:++oooo+:               Shell: fish 3.7.1
            `/++++/+++++++:              Terminal: Windows Terminal
           `/++++++++++++++:             CPU: AMD Ryzen 5 5600H with Radeon Graphics (12) @ 3.293GHz
          `/+++ooooooooooooo/`           GPU: 0bac:00:00.0 Microsoft Corporation Basic Render Driver
         ./ooosssso++osssssso+`          Memory: 482MiB / 6859MiB
        .oossssso-````/ossssss+`
       -osssssso.      :ssssssso.
      :osssssss/        osssso+++.
     /ossssssss/        +ssssooo/-
   `/ossssso+/:-        -:/+osssso+-
  `+sso+:-`                 `.-/+oso:
 `++:.                           `-/+/
 .`                                 `/

安装Rust

https://www.rust-lang.org/tools/install
www.rust-lang.org/tools/install
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
## switch nightly
rustup default nightly
## 安装工具链 
cargo install ldproxy
## espflash espmonitor
cargo install cargo-espflash

cargo install espflash

cargo install cargo-espmonitor

cargo install espmonitor

设定RISC-V

rustup toolchain install nightly --component rust-src

rustup default nightly

查阅

https://doc.rust-lang.org/nightly/rustc/platform-support/esp-idf.html
doc.rust-lang.org/nightly/rustc/platform-support/esp-idf.html

riscv32imc-esp-espidf -C3

xtensa-esp32s3-espidf -S3

no_std库

rustup target add riscv32imc-esp-espidf # 针对 ESP32-C3
rustup target add xtensa-esp32s3-espidf # 针对 ESP32-S3

std 推荐使用 espup 下载rust对于xtensa

cargo install espup
espup install -t esp32s3,esp32c3
rustup component add rust-analyzer *** 智能提示

# 链接analyer
ln -sf ~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rust-analyzer  ~/.rustup/toolchains/esp/bin/rust-analyzer
sudo usermod -aG uucp $USER #0r
sudo usermod -aG dialout $USER #or
newgrp dialout

配置环境变量

## config.fish
alias er='. $HOME/esp/esp-idf/export.fish'
#set -gx IDF_TOOLS_PATH $HOME/.espressif/
if test -e $HOME/export-esp.sh
    source $HOME/export-esp.sh
end

第一步 idf 下载

如果使用idf 参阅 注意下载的时候网络条件, 如果不全部安装可能会有一些bug建议不要单独安装

 

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html#get-started-how-to-get-esp-idf
docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html#get-started-how-to-get-esp-idf

Debug

prob-rs

open

解决 一些内存的问题

https://docs.espressif.com/projects/esp-idf/zh_CN/v5.4/esp32s3/api-reference/kconfig.html
docs.espressif.com/projects/esp-idf/zh_CN/v5.4/esp32s3/api-reference/kconfig.html

通常不是espressif 官方的板子 可能会遇见使用espflash 去烧写固件的时候内存对不上,这个时候就需要配置sdkconfig.defaults 这个文件 也许也靠分区表来识别

配置 选项有很多

例如 Build type 相关

CONFIG_APP_BUILD_TYPE

CONFIG_APP_BUILD_TYPE_PURE_RAM_APP

CONFIG_APP_REPRODUCIBLE_BUILD

CONFIG_APP_NO_BLOBS

但是 我是来找flash-size 相关的内容

CONFIG_ESPTOOLPY_FLASHSIZE

https://docs.espressif.com/projects/esp-idf/zh_CN/v5.4/esp32s3/api-reference/kconfig.html#serial-flasher-config
docs.espressif.com/projects/esp-idf/zh_CN/v5.4/esp32s3/api-reference/kconfig.html#serial-flasher-config
SPI flash size, in megabytes

Available options:

        1 MB (CONFIG_ESPTOOLPY_FLASHSIZE_1MB)

        2 MB (CONFIG_ESPTOOLPY_FLASHSIZE_2MB)

        4 MB (CONFIG_ESPTOOLPY_FLASHSIZE_4MB)

        8 MB (CONFIG_ESPTOOLPY_FLASHSIZE_8MB)

        16 MB (CONFIG_ESPTOOLPY_FLASHSIZE_16MB)

        32 MB (CONFIG_ESPTOOLPY_FLASHSIZE_32MB)

        64 MB (CONFIG_ESPTOOLPY_FLASHSIZE_64MB)

        128 MB (CONFIG_ESPTOOLPY_FLASHSIZE_128MB)

sometime enconter this

[DEBUG] (1) wlink::probe: Opening serial port: "/dev/ttyACM0"
Error: Serial port error: Permission denied
Caused by:
    Permission denied

run this command stat /dev/ttyACM0

s413@Shaox ~/E/C/blink (main) [SIGINT]> stat /dev/ttyACM0
  File: /dev/ttyACM0
  Size: 0               Blocks: 0          IO Block: 4096   character special file
Device: 0,5     Inode: 414         Links: 1     Device type: 166,0
Access: (0660/crw-rw----)  Uid: (    0/    root)   Gid: (  986/    uucp)
Access: 2025-04-28 18:49:12.483272344 +0800
Modify: 2025-04-28 18:48:59.483272344 +0800
Change: 2025-04-28 18:48:59.483272344 +0800
 Birth: 2025-04-28 18:48:59.479272346 +0800

add Group