Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Swap out the current allocator for esp-alloc #40

Merged
merged 8 commits into from
Jul 13, 2022
Merged

Swap out the current allocator for esp-alloc #40

merged 8 commits into from
Jul 13, 2022

Conversation

jessebraham
Copy link
Member

@jessebraham jessebraham commented Jul 12, 2022

This builds on #39, and as such cannot be merged until that PR is.

This works on the ESP32-C3 without issue, however building for the ESP32 results in a linker error:

error: linking with `xtensa-esp32-elf-gcc` failed: exit status: 1
  |
  = note: "xtensa-esp32-elf-gcc" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.0.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.1.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.10.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.11.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.12.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.13.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.14.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.15.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.2.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.3.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.4.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.5.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.6.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.7.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.8.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.dhcp_esp32.cb737b37-cgu.9.rcgu.o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b.iwnybrojg66ry1h.rcgu.o" "-Wl,--as-needed" "-L" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps" "-L" "/Users/jesse/Work/esp-wifi/target/release/deps" "-L" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/build/esp-wifi-4cf6e16cf3490c76/out" "-L" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/build/xtensa-lx-4a114887ea50d4c3/out" "-L" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/build/xtensa-lx-rt-ef310f0681dc9281/out" "-L" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/build/esp32-hal-981d4cfdf0ff5b85/out" "-L" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/build/esp32-5c76282a31736b6e/out" "-L" "/Users/jesse/.rustup/toolchains/esp/lib/rustlib/xtensa-esp32-none-elf/lib" "-Wl,-Bstatic" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libesp_wifi-fbe4abcbcf215b69.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libesp_alloc-c060953ba804a78a.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/liblinked_list_allocator-4ef263736359aad4.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libspinning_top-21c5f0355a2085be.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libsmoltcp-0bba41ed2db86d27.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libbitflags-2a9f9e706eec8442.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libmanaged-0f6b57e1625fcb7e.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libatomic_polyfill-bb467dab1e9b276f.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libcritical_section-36eac500ce94d399.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/liblog-ca5de0a110cc2fb9.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libesp_println-f12f43cb0797d101.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libesp32_hal-49cf89aa123eccd0.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libesp_hal_common-6d4f0442eb78b1f6.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libcritical_section-279312af61635534.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libcfg_if-778cc715c08c90dd.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libsmart_leds_trait-bf02318b2b258ba1.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/librgb-a61c6a77a5526a3b.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libbytemuck-95ec8e92ea41d238.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libxtensa_lx_rt-8f3e4a9df978c770.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libr0-27ef6ffbef74e8fa.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libfugit-f3d074f1f67858f7.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libgcd-aaa05ddbeaa2620a.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libesp32-7a9f161a7164ba4b.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libxtensa_lx-92fa6630c50fa721.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libspin-dc50f05a7a63865a.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/liblock_api-1b5268dfcd1bf4d3.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libscopeguard-4fd0099d2fa4a15e.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libmutex_trait-f357cef0832b190b.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libbare_metal-8c92058f831287bd.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libvcell-96a925c0101a1afe.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libembedded_hal-5849c01705429e94.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libvoid-e716c48010b93998.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libnb-7384b7c50b3fc834.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libnb-f671a0f55f07f463.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libembedded_svc-0c32aacbbd83c2a9.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libheapless-99bb4813e7ca9dec.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libhash32-23fe63db3bca42b9.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libbyteorder-3eec2d3701626149.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libserde-506dfce2d6d3eeca.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libno_std_net-c8aed46919778570.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libenumset-efb2872dc7c531a5.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libembedded_io-39243cccb0fb937d.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/liballoc-cab08ec8de2630a1.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/librustc_std_workspace_core-2bb66c92ab28eb50.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libcore-822e4434f606ddd3.rlib" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/deps/libcompiler_builtins-23011b67784957ef.rlib" "-Wl,-Bdynamic" "-lbtdm_app" "-lcoexist" "-lcore" "-lespnow" "-lmesh" "-lnet80211" "-lphy" "-lpp" "-lrtc" "-lsmartconfig" "-lwapi" "-lwpa_supplicant" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/Users/jesse/.rustup/toolchains/esp/lib/rustlib/xtensa-esp32-none-elf/lib" "-o" "/Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b" "-Wl,--gc-sections" "-no-pie" "-Wl,-O1" "-nodefaultlibs" "-Tlinkall.x" "-Tesp32_rom_functions.x"
  = note: /Users/jesse/.espressif/tools/xtensa-esp32-elf-gcc/8_4_0-esp-2021r2-patch3-x86_64-apple-darwin/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: /Users/jesse/Work/esp-wifi/target/xtensa-esp32-none-elf/release/examples/dhcp_esp32-db6b59f4ab95624b section `.bss' will not fit in region `dram_seg'
          /Users/jesse/.espressif/tools/xtensa-esp32-elf-gcc/8_4_0-esp-2021r2-patch3-x86_64-apple-darwin/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: region `dram_seg' overflowed by 35876 bytes
          collect2: error: ld returned 1 exit status

Not sure why dram_seg is overflowing. Reducing the heap size allows it to build, but results in runtime errors instead.

@bjoernQ
Copy link
Contributor

bjoernQ commented Jul 12, 2022

Weird behavior on ESP32 - will also look into this (tomorrow)

@bjoernQ
Copy link
Contributor

bjoernQ commented Jul 13, 2022

Found out what was going wrong here ... created a PR to your fork: https://github.com/jessebraham/esp-wifi/pull/2

The real problem here was the usage of the xtensa-cs-impl branch from esp-hal ... that doesn't work right yet!
So I basically resurrected the critical_section_xtensa_singlecore.rs and voila ....

@jessebraham
Copy link
Member Author

Awesome, thanks for fixing that! Everything should be in (mostly) working order now, as far as I can tell. I ran all 4 examples successfully.

@jessebraham jessebraham marked this pull request as ready for review July 13, 2022 14:23
@bjoernQ
Copy link
Contributor

bjoernQ commented Jul 13, 2022

I'd love if we could move the oom-handler to the esp-wifi crate and not just loop there - most probably we should panic.
Also, we need to figure out what is going on with the panic-handler (i.e. why we can't use esp-backtrace on ESP32)

Then I think we can merge this - but I really would like to get that sorted out first.

I also noticed that riscv-rt is bumped here - that is good but we should also do it almost at the same time in esp-hal and friends to avoid potential obscure linker errors etc.

Other than that: Great we have this almost done now! 🎉

@jessebraham
Copy link
Member Author

esp-pacs and esp-hal have now had their riscv-rt dependencies bumped to 0.9.0. I will address the OOM handler as well. Figuring out the backtrace issue may take some more time, I haven't really looked in to it yet.

@bjoernQ
Copy link
Contributor

bjoernQ commented Jul 13, 2022

👍 Thanks for taking care of that! The esp-backtrace thing is very strange ... I currently have no idea about that, too. But I guess it's better to delay this a day or two and figure that out

@jessebraham
Copy link
Member Author

Other than addressing the esp-backtrace issue, all other points should now be resolved.

@jessebraham
Copy link
Member Author

esp-backtrace is magically working again, at least on my end. Wonder if it had to do with using the critical section branch? Anyways, just glad it's working 😁

Copy link
Contributor

@bjoernQ bjoernQ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@bjoernQ bjoernQ merged commit a71d3c2 into esp-rs:main Jul 13, 2022
@jessebraham jessebraham deleted the fixes/esp-alloc branch July 14, 2022 15:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants