Skip to content

Failed to build for ESP Wrover Kit #79

@artisdom

Description

@artisdom

Had a quick search with the error,
error[E0787]: the `asm!` macro is not allowed in naked functions

Found this:
PacktPublishing/Asynchronous-Programming-in-Rust#31
rust-lang/rust#128651

looks like the "asm!" macro is not allowed in naked functions, and need to be updated to use "naked_asm!" macro.

Guessing the fix would include updating the "esp-display-interface-spi-dma" package, so it can use newer version of "esp-hal" to avoid this error ?

https://github.com/esp-rs/xtensa-lx-rt
https://github.com/esp-rs/xtensa-lx
https://github.com/esp-rs/esp-hal/
https://github.com/georgik/esp-display-interface-spi-dma

$ cd esp32
$ cargo run --release --features esp32-wrover-kit
    Updating crates.io index
  Downloaded compiler_builtins v0.1.138
  Downloaded object v0.36.5
  Downloaded 2 crates (528.5 KB) in 0.63s
   Compiling compiler_builtins v0.1.138
   Compiling core v0.0.0 (C:\Users\Ted\.rustup\toolchains\esp\lib\rustlib\src\rust\library\core)
   Compiling proc-macro2 v1.0.94
   Compiling unicode-ident v1.0.18
   Compiling serde v1.0.219
   Compiling windows_x86_64_msvc v0.52.6
   Compiling autocfg v1.4.0
   Compiling rustversion v1.0.20
   Compiling heck v0.5.0
   Compiling anyhow v1.0.97
   Compiling fnv v1.0.7
   Compiling strsim v0.11.1
   Compiling ident_case v1.0.1
   Compiling hashbrown v0.15.2
   Compiling az v1.2.1
   Compiling heapless v0.8.0
   Compiling equivalent v1.0.2
   Compiling winnow v0.7.4
   Compiling xtensa-lx v0.9.0
   Compiling typenum v1.18.0
   Compiling windows-targets v0.52.6
   Compiling windows-sys v0.59.0
   Compiling version_check v0.9.5
   Compiling embedded-hal-async v1.0.0
   Compiling embassy-time-driver v0.1.0
   Compiling embedded-io-async v0.6.1
   Compiling embassy-time-queue-driver v0.1.0
   Compiling portable-atomic v1.11.0
   Compiling log v0.4.26
   Compiling zerocopy v0.8.23
   Compiling embassy-sync v0.6.2
   Compiling cfg-if v1.0.0
   Compiling indexmap v2.8.0
   Compiling esp32 v0.34.0
   Compiling paste v1.0.15
   Compiling spooky-esp32 v0.11.0 (C:\r\esp32-spooky-maze-game\esp32)
   Compiling num-traits v0.2.19
   Compiling lock_api v0.4.12
   Compiling generic-array v0.14.7
   Compiling quote v1.0.40
   Compiling litrs v0.4.1
   Compiling syn v2.0.100
   Compiling proc-macro-error-attr2 v2.0.0
   Compiling document-features v0.2.11
   Compiling winapi-util v0.1.9
   Compiling termcolor v1.4.1
   Compiling esp-config v0.2.0
   Compiling darling_core v0.20.10
   Compiling proc-macro-error2 v2.0.1
   Compiling serde_derive v1.0.219
   Compiling esp-build v0.1.0
   Compiling strum_macros v0.26.4
   Compiling enum-as-inner v0.6.1
   Compiling delegate v0.13.2
   Compiling esp-println v0.12.0
   Compiling esp-backtrace v0.14.2
   Compiling darling_macro v0.20.10
   Compiling darling v0.20.10
   Compiling enumset_derive v0.10.0
   Compiling xtensa-lx-rt-proc-macros v0.2.2
   Compiling strum v0.26.3
   Compiling rustc-std-workspace-core v1.99.0 (C:\Users\Ted\.rustup\toolchains\esp\lib\rustlib\src\rust\library\rustc-std-workspace-core)
   Compiling alloc v0.0.0 (C:\Users\Ted\.rustup\toolchains\esp\lib\rustlib\src\rust\library\alloc)
   Compiling toml_datetime v0.6.8
   Compiling serde_spanned v0.6.8
   Compiling basic-toml v0.1.10
   Compiling minijinja v2.8.0
   Compiling toml_edit v0.22.24
   Compiling esp-metadata v0.4.0
   Compiling esp-hal v0.22.0
   Compiling byteorder v1.5.0
   Compiling stable_deref_trait v1.2.0
   Compiling nb v1.1.0
   Compiling embedded-hal v1.0.0
   Compiling critical-section v1.2.0
   Compiling rand_core v0.6.4
   Compiling scopeguard v1.2.0
   Compiling micromath v2.1.0
   Compiling pin-project-lite v0.2.16
   Compiling futures-core v0.3.31
   Compiling futures-task v0.3.31
   Compiling pin-utils v0.1.0
   Compiling nb v0.1.3
   Compiling void v1.0.2
   Compiling futures-util v0.3.31
   Compiling hash32 v0.3.1
   Compiling embedded-io v0.6.1
   Compiling embedded-hal v0.2.7
   Compiling embedded-dma v0.2.0
   Compiling bare-metal v1.0.0
   Compiling display-interface v0.5.0
   Compiling spin v0.9.8
   Compiling futures-sink v0.3.31
   Compiling embedded-storage v0.3.1
   Compiling mutex-trait v0.2.0
   Compiling enumset v1.1.5
   Compiling vcell v0.1.3
   Compiling gcd v2.3.0
   Compiling embedded-storage-async v0.4.1
   Compiling r0 v1.0.0
   Compiling embassy-futures v0.1.1
   Compiling fugit v0.3.7
   Compiling toml v0.8.20
   Compiling proc-macro-crate v3.3.0
   Compiling rand v0.8.5
   Compiling embedded-hal-nb v1.0.0
   Compiling embedded-can v0.4.1
   Compiling bitfield v0.17.0
   Compiling ufmt-write v0.1.0
   Compiling byte-slice-cast v1.2.3
   Compiling bitflags v2.9.0
   Compiling bytemuck v1.22.0
   Compiling float-cmp v0.9.0
   Compiling chrono v0.4.40
   Compiling linked_list_allocator v0.10.5
   Compiling display-interface-spi v0.5.0
   Compiling esp-bsp v0.4.1
   Compiling embedded-graphics-core v0.4.0
   Compiling esp-alloc v0.5.0
   Compiling micromath v1.1.1
   Compiling accelerometer v0.12.0
   Compiling embassy-time v0.3.2
   Compiling icm42670 v0.2.0
   Compiling embedded-graphics v0.8.1
   Compiling mipidsi v0.8.0
   Compiling ppv-lite86 v0.2.21
   Compiling esp-hal-procmacros v0.15.0
   Compiling embassy-embedded-hal v0.2.0
   Compiling rand_chacha v0.3.1
   Compiling tinybmp v0.6.0
   Compiling embedded-graphics-framebuf v0.3.0 (https://github.com/georgik/embedded-graphics-framebuf.git?branch=feature%2Fembedded-graphics-0.8#26b1aa5e)
   Compiling xtensa-lx-rt v0.17.2
   Compiling spooky-core v0.7.0 (C:\r\esp32-spooky-maze-game\spooky-core)
   Compiling spooky-embedded v0.11.0 (C:\r\esp32-spooky-maze-game\spooky-embedded)
error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\lib.rs:158:9
    |
158 |           asm!($($x)* $($opts)*)
    |           ^^^^^^^^^^^^^^^^^^^^^^ consider using the `naked_asm!` macro instead
    |
   ::: C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\asm.rs:116:5
    |
116 | /     cfg_asm!(
117 | |     {
118 | |         "
119 | |         s32i    a2,  sp, +XT_STK_A2
...   |
268 | |     options(noreturn)
269 | |     );
    | |_____- in this macro invocation
    |
    = note: this error originates in the macro `cfg_asm` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\lib.rs:158:9
    |
158 |           asm!($($x)* $($opts)*)
    |           ^^^^^^^^^^^^^^^^^^^^^^ consider using the `naked_asm!` macro instead
    |
   ::: C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\asm.rs:359:5
    |
359 | /     cfg_asm!(
360 | |     {
361 | |         "
362 | |         l32i    a3,  sp, +XT_STK_SAR
...   |
467 | |         ",
468 | |     }, options(noreturn));
    | |_________________________- in this macro invocation
    |
    = note: this error originates in the macro `cfg_asm` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\asm.rs:507:5
    |
507 | /     asm!(
508 | |         "
509 | |         SAVE_CONTEXT 1
...   |
537 | |         options(noreturn)
538 | |     )
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\asm.rs:551:5
    |
551 | /     asm!(
552 | |         "
553 | |         mov     a0, a1                     // save a1/sp
554 | |         addmi   sp, sp, -XT_STK_FRMSZ      // only allow multiple of 256
...   |
596 | |         options(noreturn)
597 | |     )
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\asm.rs:629:5
    |
629 |     asm!("HANDLE_INTERRUPT_LEVEL 2", options(noreturn));
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\asm.rs:641:5
    |
641 |     asm!("HANDLE_INTERRUPT_LEVEL 3", options(noreturn));
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\asm.rs:653:5
    |
653 |     asm!("HANDLE_INTERRUPT_LEVEL 4", options(noreturn));
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\asm.rs:665:5
    |
665 |     asm!("HANDLE_INTERRUPT_LEVEL 5", options(noreturn));
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\asm.rs:677:5
    |
677 |     asm!("HANDLE_INTERRUPT_LEVEL 6", options(noreturn));
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\asm.rs:689:5
    |
689 |     asm!("HANDLE_INTERRUPT_LEVEL 7", options(noreturn));
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:179:5
    |
179 | /     asm!(
180 | |         "
181 | |         wsr a0, EXCSAVE1 // preserve a0
182 | |         rsr a0, EXCCAUSE // get exception cause
...   |
188 | |         options(noreturn)
189 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:196:5
    |
196 | /     asm!(
197 | |         "
198 | |         wsr a0, EXCSAVE1 // preserve a0
199 | |         rsr a0, EXCCAUSE // get exception cause
...   |
208 | |         options(noreturn)
209 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:216:5
    |
216 | /     asm!(
217 | |         "
218 | |     wsr a0, EXCSAVE1                   // preserve a0 (EXCSAVE1 can be reused as long as there
219 | |                                        // is no double exception in the first exception until
...   |
223 | |         options(noreturn)
224 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:231:5
    |
231 | /     asm!(
232 | |         "
233 | |     wsr a0, EXCSAVE2 // preserve a0
234 | |     call0 __naked_level_2_interrupt     // used as long jump
235 | |     ",
236 | |         options(noreturn)
237 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:244:5
    |
244 | /     asm!(
245 | |         "
246 | |     wsr a0, EXCSAVE3 // preserve a0
247 | |     call0 __naked_level_3_interrupt     // used as long jump
248 | |     ",
249 | |         options(noreturn)
250 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:257:5
    |
257 | /     asm!(
258 | |         "
259 | |     wsr a0, EXCSAVE4 // preserve a0
260 | |     call0 __naked_level_4_interrupt     // used as long jump
261 | |     ",
262 | |         options(noreturn)
263 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:270:5
    |
270 | /     asm!(
271 | |         "
272 | |     wsr a0, EXCSAVE5 // preserve a0
273 | |     call0 __naked_level_5_interrupt     // used as long jump
274 | |     ",
275 | |         options(noreturn)
276 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:283:5
    |
283 | /     asm!(
284 | |         "
285 | |     wsr a0, EXCSAVE6 // preserve a0
286 | |     call0 __naked_level_6_interrupt     // used as long jump
287 | |     ",
288 | |         options(noreturn)
289 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:296:5
    |
296 | /     asm!(
297 | |         "
298 | |     wsr a0, EXCSAVE7 // preserve a0
299 | |     call0 __naked_level_7_interrupt     // used as long jump
300 | |     ",
301 | |         options(noreturn)
302 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:309:5
    |
309 | /     asm!(
310 | |         "
311 | |         s32e    a0, a5, -16
312 | |         s32e    a1, a5, -12
...   |
317 | |         options(noreturn)
318 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:325:5
325 | /     asm!(
326 | |         "
327 | |         l32e    a0, a5, -16
328 | |         l32e    a1, a5, -12
...   |
355 | |         options(noreturn)
356 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:363:5
    |
363 | /     asm!(
364 | |         "
365 | |         s32e    a0, a9, -16
366 | |         l32e    a0, a1, -12
...   |
377 | |         options(noreturn)
378 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:385:5
    |
385 | /     asm!(
386 | |         "
387 | |         l32e    a0, a9, -16
388 | |         l32e    a1, a9, -12
...   |
399 | |         options(noreturn)
400 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:407:5
    |
407 | /     asm!(
408 | |         "
409 | |         s32e    a0,  a13, -16
410 | |         l32e    a0,  a1,  -12
...   |
425 | |         options(noreturn)
426 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

error[E0787]: the `asm!` macro is not allowed in naked functions
   --> C:\Users\Ted\.cargo\registry\src\index.crates.io-6f17d22bba15001f\xtensa-lx-rt-0.17.2\src\exception\context.rs:433:5
    |
433 | /     asm!(
434 | |         "
435 | |         l32e    a0,  a13, -16
436 | |         l32e    a1,  a13, -12
...   |
451 | |         options(noreturn)
452 | |     );
    | |_____^ consider using the `naked_asm!` macro instead

For more information about this error, try `rustc --explain E0787`.
error: could not compile `xtensa-lx-rt` (lib) due to 25 previous errors
warning: build failed, waiting for other jobs to finish...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions