RustEmbedded 配置

Posted on Fri, Dec 27, 2024 单片机 环境 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

Install Rust

A language empowering everyone to build reliable and efficient software.

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

查阅

*-espidf - The rustc book

Targets for the ESP-IDF development framework running on RISC-V and Xtensa CPUs.

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建议不要单独安装

 

快速入门 - ESP32 - — ESP-IDF 编程指南 latest 文档

本文档旨在指导用户搭建 ESP32 硬件开发的软件环境,通过一个简单的示例展示如何使用 ESP-IDF (Espressif IoT Development Framework) 配置菜单,并编译、下载固件至 ESP32 开发板等步骤。

Debug

prob-rs

open

解决 一些内存的问题

项目配置 - ESP32-S3 - — ESP-IDF 编程指南 v5.4 文档

ESP-IDF 使用基于 kconfiglib 的 esp-idf-kconfig 包,而 kconfiglib 是 Kconfig 系统的 Python 扩展。Kconfig 提供了编译时的项目配置机制,以及多种类型的配置选项(如整数、字符串和布尔值等)。Kconfig 文件指定了选项之间的依赖关系、默认值、组合方式等。

通常不是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

项目配置 - ESP32-S3 - — ESP-IDF 编程指南 v5.4 文档

ESP-IDF 使用基于 kconfiglib 的 esp-idf-kconfig 包,而 kconfiglib 是 Kconfig 系统的 Python 扩展。Kconfig 提供了编译时的项目配置机制,以及多种类型的配置选项(如整数、字符串和布尔值等)。Kconfig 文件指定了选项之间的依赖关系、默认值、组合方式等。

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