Skip to content

Commit

Permalink
Initial import, test of esp-rs/rust#96
Browse files Browse the repository at this point in the history
  • Loading branch information
MabezDev committed Feb 28, 2022
0 parents commit 99ccf14
Show file tree
Hide file tree
Showing 9 changed files with 126 additions and 0 deletions.
31 changes: 31 additions & 0 deletions .cargo/config.toml
@@ -0,0 +1,31 @@
[build]
# Uncomment the relevant target for your chip here (ESP32, ESP32-S2, ESP32-S3 or ESP32-C3)
#target = "xtensa-esp32-espidf"
#target = "xtensa-esp32s2-espidf"
#target = "xtensa-esp32s3-espidf"
target = "riscv32imc-esp-espidf"

[target.xtensa-esp32-espidf]
linker = "ldproxy"

[target.xtensa-esp32s2-espidf]
linker = "ldproxy"

[target.xtensa-esp32s3-espidf]
linker = "ldproxy"

[target.riscv32imc-esp-espidf]
linker = "ldproxy"

# Future - necessary for the experimental "native build" of esp-idf-sys with ESP32C3
# See also https://github.com/ivmarkov/embuild/issues/16
rustflags = ["-C", "default-linker-libraries"]

[unstable]
build-std = ["std", "panic_abort"]

[env]
# Enables the esp-idf-sys "native" build feature (`cargo build --features native`) to build against ESP-IDF stable (v4.4)
ESP_IDF_VERSION = { value = "branch:release/v4.4" }
# Enables the esp-idf-sys "native" build feature (`cargo build --features native`) to build against ESP-IDF master (v5.0)
#ESP_IDF_VERSION = { value = "master" }
4 changes: 4 additions & 0 deletions .gitignore
@@ -0,0 +1,4 @@
/.vscode
/.embuild
/target
/Cargo.lock
26 changes: 26 additions & 0 deletions Cargo.toml
@@ -0,0 +1,26 @@
[package]
name = "esp-fs-tests"
version = "0.1.0"
authors = ["Scott Mabin <scott@mabez.dev>"]
edition = "2018"
resolver = "2"

[profile.release]
opt-level = "s"

[profile.dev]
debug = true # Symbols are nice and they don't increase the size on Flash
opt-level = "z"

[features]
default = ["native"]
native = ["esp-idf-sys/native"]

[dependencies]
esp-idf-sys = { version = "0.30.6", features = ["binstart"] }
c_str_macro = "1.0.3"


[build-dependencies]
embuild = "0.28"
anyhow = "1"
7 changes: 7 additions & 0 deletions README.md
@@ -0,0 +1,7 @@
## esp-fs-tests

To run the test suite on a esp32c3, run the following command. Make sure `cargo-espflash` is installed.

```bash
cargo +nightly espflash --features native --partition-table partitions.csv --monitor /dev/ttyUSB0
```
5 changes: 5 additions & 0 deletions build.rs
@@ -0,0 +1,5 @@
// Necessary because of this issue: https://github.com/rust-lang/cargo/issues/9641
fn main() -> anyhow::Result<()> {
embuild::build::CfgArgs::output_propagated("ESP_IDF")?;
embuild::build::LinkArgs::output_propagated("ESP_IDF")
}
6 changes: 6 additions & 0 deletions partitions.csv
@@ -0,0 +1,6 @@
# Name, Type, SubType, Offset, Size, Flags
# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap
nvs, data, nvs, 0x9000, 0x6000,
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x10000, 1M,
storage, data, spiffs, , 0xF0000,
5 changes: 5 additions & 0 deletions rust-toolchain.toml
@@ -0,0 +1,5 @@
[toolchain]


channel = "nightly"

10 changes: 10 additions & 0 deletions sdkconfig.defaults
@@ -0,0 +1,10 @@
# Rust often needs a bit of an extra main task stack size compared to C (the default is 3K)
CONFIG_ESP_MAIN_TASK_STACK_SIZE=7000

# Use this to set FreeRTOS kernel tick frequency to 1000 Hz (100 Hz by default).
# This allows to use 1 ms granuality for thread sleeps (10 ms by default).
#CONFIG_FREERTOS_HZ=1000

# Workaround for https://github.com/espressif/esp-idf/issues/7631
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=n
32 changes: 32 additions & 0 deletions src/main.rs
@@ -0,0 +1,32 @@
use esp_idf_sys::*;
use c_str_macro::c_str;
use std::ffi::CStr;

fn main() {
esp_idf_sys::link_patches();

init_partition(c_str!("/storage"), c_str!("storage"), 3);
std::fs::write("/storage/test_file", "hello").unwrap();

test_read_to_string();

println!("Testing complete!");
}

fn init_partition(path: &CStr, label: &CStr, max_files: u32) {
let storage_conf = esp_vfs_spiffs_conf_t {
base_path: path.as_ptr(),
partition_label: label.as_ptr(),
max_files,
format_if_mount_failed: true,
};

unsafe { esp_vfs_spiffs_register(&storage_conf) };
}

fn test_read_to_string() {
let str = std::fs::read_to_string("/storage/test_file").unwrap();

println!("String is: {:?}", str);
assert_eq!("hello", str);
}

0 comments on commit 99ccf14

Please sign in to comment.