In the meantime, I believe we can try to integrate (part of) this
branch in master. I already started to distillate some parts of
this in multiples MRs here
https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/pulls?q=is%3Aopen+is%3Apr+author%3Allange+draft%3Afalse
; which could be merged without -I hope, but the review will
confirm- any impact nor regression to the current master branch.
Ludovic,
the issue is bound to the docker image version, I was using "espressif/idf", which is "latest".
The build works using the same sdkconfig with "espressif/idf:release-v5.0" (and again fails at that mbedtls module when switching back to the "latest" image).
So to build the current experimental state, I recommend using the docker image and basically doing the steps Ludovic formalized in the github action:
### SETUP ###
cd ~/esp/Open-Vehicle-Monitoring-System-3
# setup branch:
git remote add llange git@github.com:llange/Open-Vehicle-Monitoring-System-3.git
git branch -t experimental-esp-idf-build-workflow llange/experimental-esp-idf-build-workflow
# switch to branch:
git checkout experimental-esp-idf-build-workflow
git submodule update --init --recursive
# apply mongoose patch:
git apply --directory=vehicle/OVMS.V3/components/mongoose/mongoose vehicle/OVMS.V3/support/mongoose-espv5.patch
# install v5 sdkconfig defaults:
cp vehicle/OVMS.V3/support/sdkconfig.defaults.esp5 vehicle/OVMS.V3/sdkconfig.defaults
# install v5 idf components:
cp vehicle/OVMS.V3/support/idf_component.yml.esp5 vehicle/OVMS.V3/main/idf_component.yml
### BUILD ###
cd ~/esp/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3
# launch docker shell:
docker run --rm -v $PWD:/project -w /project -it espressif/idf:release-v5.0
# init docker image (needs to be done on every start):
apt-get update && apt-get install -y dos2unix
# OPTION 1: start with default config:
rm vehicle/OVMS.V3/sdkconfig
# NOTE: this will build for ESP32 >= rev3, excluding the SPIRAM bug workarounds
# OPTION 2: update your existing sdkconfig:
idf.py menuconfig
# → press '/'
# … enable FREERTOS_ENABLE_BACKWARD_COMPATIBILITY
# … disable FREERTOS_ASSERT_ON_UNTESTED_FUNCTION
# … disable MG_ENABLE_SSL
# build:
idf.py build
# flash & start USB monitor:
idf.py app-flash && idf.py monitor
The build boots & works, issues you described excluded.
An issue I didn't expect:
I (0) cpu_start: Starting scheduler on APP CPU.
E (0) task_wdt: esp_task_wdt_add(747): TWDT was never initialized
…
E (10) task_wdt: esp_task_wdt_add(747): TWDT was never initialized
…and then repeated 4x per second:
E (3130) task_wdt: esp_task_wdt_reset(783): task not found
I'll try to find the cause, as we cannot silent these ("early" logging) they make using the shell challenging.
But, besides that, it has Wifi & cellular connectivity, so looks very promising -- nice work, Ludovic!
Regards,
Michael