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

Proposed changes to split tests into separate binaries for efr32 [Version 1] #33786

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

feasel0
Copy link
Contributor

@feasel0 feasel0 commented Jun 6, 2024

The approach here is to keep the silabs_executable targets inside src/test_driver/efr32/BUILD.gn and to leave chip_test_suite alone without any knowledge of efr32.

This creates a .s37 file for each test suite. I have tested the build process and it seems to generate the correct files, with each .s37 file only having the tests for that particular suite. However without the hardware I have not yet flashed and run them on a device, so I can only judge by the .map file what's inside them. But in general I believe this PR is functional and does what it's supposed to do.

Note that even though there's a binary for each test directory (rather than a binary for each individual test source within that directory), each of the binaries is able to build without a complaint about flash size limitations. So that means so far none of our test directories are too large to fit on the device. So we could get away with 20-something binaries instead of 200-something if we wanted to go this route.

(This is a work in progress, so please ignore any commented-out code and print statements.)

The drawback to this approach is that it requires src/test_driver/efr32/BUILD.gn to have a list of all test directories. This is not ideal since it will need to be updated any time a new test directory is created. To avoid this I have made another version which moves the silabs_executable target into chip_test_suite. See Version 2.

Copy link

github-actions bot commented Jun 6, 2024

PR #33786: Size comparison from 72450e4 to 53f4263

Full report (82 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, esp32, linux, mbed, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section 72450e4 53f4263 change % change
bl602 lighting-app bl602 FLASH 1268040 1268040 0 0.0
RAM 95424 95424 0 0.0
bl602+mfd FLASH 1282316 1282316 0 0.0
RAM 95576 95576 0 0.0
bl602+rpc FLASH 1307254 1307254 0 0.0
RAM 103856 103856 0 0.0
bl702 lighting-app bl702 FLASH 1088680 1088680 0 0.0
RAM 14897 14897 0 0.0
bl702+mfd FLASH 1099372 1099372 0 0.0
RAM 15049 15049 0 0.0
bl702+rpc FLASH 1178504 1178504 0 0.0
RAM 23925 23925 0 0.0
bl706-eth FLASH 872112 872112 0 0.0
RAM 27016 27016 0 0.0
bl706-wifi FLASH 1123798 1123798 0 0.0
RAM 14349 14349 0 0.0
bl702l lighting-app bl702l FLASH 1075566 1075566 0 0.0
RAM 21468 21468 0 0.0
bl702l+mfd FLASH 1086826 1086826 0 0.0
RAM 21628 21628 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 797872 797872 0 0.0
RAM 103184 103184 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 813472 813472 0 0.0
RAM 113664 113664 0 0.0
lock-mtd LP_EM_CC1354P10_6 FLASH 802776 802776 0 0.0
RAM 107784 107784 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 755544 755544 0 0.0
RAM 101884 101884 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 741184 741184 0 0.0
RAM 102132 102132 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 604930 604930 0 0.0
RAM 204608 204608 0 0.0
lock CC3235SF_LAUNCHXL FLASH 650398 650398 0 0.0
RAM 204868 204868 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 661589 661589 0 0.0
RAM 74608 74608 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 681441 681441 0 0.0
RAM 77240 77240 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 681441 681441 0 0.0
RAM 77240 77240 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 638377 638377 0 0.0
RAM 69676 69676 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 603661 603661 0 0.0
RAM 70312 70312 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 623305 623305 0 0.0
RAM 72864 72864 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 623305 623305 0 0.0
RAM 72864 72864 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 619277 619277 0 0.0
RAM 73328 73328 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 639001 639001 0 0.0
RAM 75880 75880 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 639001 639001 0 0.0
RAM 75880 75880 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 587813 587813 0 0.0
RAM 67296 67296 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 607657 607657 0 0.0
RAM 69928 69928 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 607657 607657 0 0.0
RAM 69928 69928 0 0.0
esp32 all-clusters-app c3devkit DRAM 88420 88420 0 0.0
FLASH 1466358 1466358 0 0.0
IRAM 75570 75570 0 0.0
m5stack DRAM 114892 114892 0 0.0
FLASH 1535559 1535559 0 0.0
IRAM 125403 125403 0 0.0
linux air-purifier-app debug unknown 4576 4576 0 0.0
FLASH 2532496 2532496 0 0.0
RAM 129104 129104 0 0.0
all-clusters-app debug unknown 5344 5344 0 0.0
FLASH 5568430 5568430 0 0.0
RAM 482216 482216 0 0.0
all-clusters-minimal-app debug unknown 5264 5264 0 0.0
FLASH 5052264 5052264 0 0.0
RAM 236792 236792 0 0.0
bridge-app debug unknown 5232 5232 0 0.0
FLASH 4478024 4478024 0 0.0
RAM 216816 216816 0 0.0
chip-tool debug unknown 5744 5744 0 0.0
FLASH 11519239 11519239 0 0.0
RAM 521762 521762 0 0.0
chip-tool-ipv6only arm64 unknown 17384 17384 0 0.0
FLASH 10667636 10667636 0 0.0
RAM 569744 569744 0 0.0
fabric-admin debug unknown 5600 5600 0 0.0
FLASH 11289287 11289287 0 0.0
RAM 515330 515330 0 0.0
fabric-bridge-app debug unknown 5240 5240 0 0.0
FLASH 4347608 4347608 0 0.0
RAM 208864 208864 0 0.0
lighting-app debug+rpc+ui unknown 5864 5864 0 0.0
FLASH 5366258 5366258 0 0.0
RAM 225424 225424 0 0.0
lock-app debug unknown 5184 5184 0 0.0
FLASH 4542904 4542904 0 0.0
RAM 204240 204240 0 0.0
ota-provider-app debug unknown 4552 4552 0 0.0
FLASH 4177816 4177816 0 0.0
RAM 193200 193200 0 0.0
ota-requestor-app debug unknown 4488 4488 0 0.0
FLASH 4302184 4302184 0 0.0
RAM 197712 197712 0 0.0
shell debug unknown 4112 4112 0 0.0
FLASH 2800173 2800173 0 0.0
RAM 154424 154424 0 0.0
thermostat-no-ble arm64 unknown 9160 9160 0 0.0
FLASH 4150228 4150228 0 0.0
RAM 234616 234616 0 0.0
tv-app debug unknown 5472 5472 0 0.0
FLASH 5588664 5588664 0 0.0
RAM 344872 344872 0 0.0
tv-casting-app debug unknown 5104 5104 0 0.0
FLASH 9568070 9568070 0 0.0
RAM 340288 340288 0 0.0
mbed lock-app-release cy8cproto_062_4343w FLASH 1497548 1497548 0 0.0
RAM 226168 226168 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 873664 873664 0 0.0
RAM 139225 139225 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 949208 949208 0 0.0
RAM 137653 137653 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 822188 822188 0 0.0
RAM 138123 138123 0 0.0
nxp contact k32w0+release FLASH 575652 575652 0 0.0
RAM 70120 70120 0 0.0
k32w1+release FLASH 590912 590912 0 0.0
RAM 74152 74152 0 0.0
light k32w0+release FLASH 609624 609624 0 0.0
RAM 69596 69596 0 0.0
k32w1+release FLASH 673992 673992 0 0.0
RAM 82904 82904 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1610292 1610292 0 0.0
RAM 207228 207228 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1534492 1534492 0 0.0
RAM 204132 204132 0 0.0
light cy8ckit_062s2_43012 FLASH 1460772 1460772 0 0.0
RAM 197412 197412 0 0.0
lock cy8ckit_062s2_43012 FLASH 1462772 1462772 0 0.0
RAM 224476 224476 0 0.0
qpg lighting-app qpg6105+debug FLASH 650576 650576 0 0.0
RAM 104652 104652 0 0.0
lock-app qpg6105+debug FLASH 610276 610276 0 0.0
RAM 99328 99328 0 0.0
stm32 light STM32WB5MM-DK FLASH 472036 472036 0 0.0
RAM 141748 141748 0 0.0
telink air-quality-sensor-app tlsr9528a_retention FLASH 625046 625046 0 0.0
RAM 49952 49952 0 0.0
all-clusters-app tlsr9118bdk40d FLASH 600864 600864 0 0.0
RAM 130384 130384 0 0.0
all-clusters-minimal-app tlsr9528a FLASH 770184 770184 0 0.0
RAM 110148 110148 0 0.0
bridge-app tlsr9258a FLASH 668176 668176 0 0.0
RAM 94768 94768 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 626798 626798 0 0.0
RAM 49996 49996 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a FLASH 713688 713688 0 0.0
RAM 76588 76588 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 558740 558740 0 0.0
RAM 126640 126640 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 793506 793506 0 0.0
RAM 99996 99996 0 0.0
lock-app-dfu tlsr9528a FLASH 659986 659986 0 0.0
RAM 69276 69276 0 0.0
ota-requestor-app tlsr9258a FLASH 687174 687174 0 0.0
RAM 94492 94492 0 0.0
pump-app tlsr9518adk80d FLASH 608998 608998 0 0.0
RAM 56376 56376 0 0.0
pump-controller-app tlsr9518adk80d FLASH 599346 599346 0 0.0
RAM 56176 56176 0 0.0
shell tlsr9518adk80d FLASH 462618 462618 0 0.0
RAM 71852 71852 0 0.0
smoke_co_alarm-app tlsr9528a_retention FLASH 633192 633192 0 0.0
RAM 51624 51624 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d FLASH 642846 642846 0 0.0
RAM 59812 59812 0 0.0
thermostat tlsr9518adk80d FLASH 618248 618248 0 0.0
RAM 56500 56500 0 0.0
window-covering tlsr9118bdk40d FLASH 464864 464864 0 0.0
RAM 82272 82272 0 0.0
tizen all-clusters-app arm unknown 1556 1556 0 0.0
FLASH 1613824 1613824 0 0.0
RAM 45452 45452 0 0.0
chip-tool-ubsan arm unknown 2364 2364 0 0.0
FLASH 15638962 15638962 0 0.0
RAM 6828380 6828380 0 0.0
copy(flashing_runtime_target) {
sources = flashing_script_inputs
outputs = [ "${root_out_dir}/{{source_file_part}}" ]
if (defined(invoker.copy_py_files) && invoker.copy_py_files) { #++++ added this
Copy link
Contributor Author

Choose a reason for hiding this comment

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

The "copy" action only needs to be done once per build, however now that silabs_executable is being called many times it ends up trying to copy these same python files repeatedly which causes an error. I could not find a clean way of making it only copy once, so as a workaround I use a variable copy_py_files that controls whether the files get copied or not. This variable is set to false after silabs_executable is invoked so the files won't be copied next time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment