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

Finish powermon/powerstress #4230

Merged
merged 74 commits into from
Aug 6, 2024
Merged

Conversation

geeksville
Copy link
Member

@geeksville geeksville commented Jul 4, 2024

This is the final changes for the powermon/powerstress stuff. Sorry for the long list of CLs, but I have been merging from master for a while so hard to rebase/collapse the various non merge changes into a single CL.

There are three main changes:

  • Implement the PowerStress class so that the python code can ask the unit under test (UUT) to transition through various modes while it measures the power consumed by the board. (This class is not used in normal operation)
  • Have various places that are doing power changing things (turning on power rails, changing radio modes etc...) call hooks on the powermon singleton to indicate those operations are happening. Those hooks emit a structured string to the log file output. This class is tiny so I left it on by default.
  • Add GpioTransformer/GpioPin classes which I will soon use for decreasing Heltec tracker power consumption (by managing the dedicated screen+gps power regulator more conservatively). Currently this class is only used for the power led (so that the led can be controlled by PowerStress - and then we eventually calibrate/detect from the python side that the bench power measurement is working).

Any feedback/comments would be appreciated! (sorry for the delay - I took an extra week off from programming but now back at it)

For #4136

Initial platformio.ini file only supports rak4630
Default to non TCP for the semihosting log output for now...
Fixes meshtastic#4135
By disabling the (inaccessible) adafruit USB
Not yet used but I didn't want these nasty tricks to get lost yet.
without this flag if the user has set some other formatter (clang)
in their user level settings, it will be looking in the wrong directory
for the clang options (we want the options in .trunk/clang)

Note: formatOnSave is true in master, which means a bunch of our older
files are non compliant and if you edit them it will generate lots of
formatting related diffs.  I guess I'll start letting that happen with
my future commits ;-).
@geeksville geeksville marked this pull request as ready for review July 31, 2024 19:04
@geeksville geeksville marked this pull request as draft July 31, 2024 19:07
@geeksville geeksville marked this pull request as ready for review July 31, 2024 19:14
@thebentern thebentern requested a review from todd-herbert August 3, 2024 13:26
Copy link
Contributor

@todd-herbert todd-herbert left a comment

Choose a reason for hiding this comment

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

Nothing looked odd to me, but when I built and ran this for T-Beam V1.2 it crashes at boot.
(Update: same for DIY V1)

0x40152b0f: do_global_ctors at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/startup.c:201
0x40152b0f: start_cpu0_default at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/startup.c:449
0x40083aad: call_start_cpu0 at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/port/cpu_start.c:687

Not sure if it's this PR or something unrelated from master. Will keep building stuff here and see if anything turns up.


Update: Heltec Wireless Paper (ESP32-S3) also crashing on boot:

#0  0x42003848 in _ZN8PowerMon8setStateE26_meshtastic_PowerMon_StatePKc$constprop$944 at ??:?
  #1  0x42065345 in MonitoredLedPin::set(bool) at ??:?
  #2  0x420652e2 in GpioBinaryTransformer::update() at ??:?
  #3  0x42009b9a in global constructors keyed to 65535_0_BluetoothCommon_cpp_o$235855 at :?
  #4  0x42076096 in do_global_ctors at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/startup.c:201
      (inlined by) start_cpu0_default at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/startup.c:449
  #5  0x4037744f in call_start_cpu0 at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_system/port/cpu_start.c:687

Update 2: master seems to still be running fine

@geeksville
Copy link
Member Author

@todd-herbert your note prompted me to try it on a tbeam! You are correct. I'll take a look!

@geeksville geeksville marked this pull request as draft August 4, 2024 15:49
Thanks @todd-herbert for noticing this and the great stack trace.
The root cause was that I had accidentially shadowed outPin in a subclass
with an unneeded override.  It would break on any board that had inverted
LED power.

fixes
meshtastic#4230 (review)
While investigating meshtastic#4230 (review)
I noticed in variant.h that there are now apparently newer TBEAMs than mine
that have _both_ a GPIO based power LED and the PMU based LED.  Add a splitter
so that we can drive two output GPIOs from one logical signal.
@geeksville geeksville marked this pull request as ready for review August 4, 2024 19:04
@geeksville
Copy link
Member Author

thanks @todd-herbert - I think ready to go (again ;-) )

Copy link
Contributor

@todd-herbert todd-herbert left a comment

Choose a reason for hiding this comment

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

Looks like you got it! All running as normal here 👍

@geeksville
Copy link
Member Author

geeksville commented Aug 6, 2024

thanks @todd-herbert. Updated wrt master (and retested on tbeam and rak4631) and I think ready to merge. cool @thebentern? (I'm lazy and eager to not keep updating wrt master. heh)

@thebentern
Copy link
Contributor

Sounds good. Merging :D

@thebentern thebentern merged commit c1870f9 into meshtastic:master Aug 6, 2024
96 checks passed
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.

3 participants