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

interim ESP32-S3 changes & diagnostics #5956

Merged
merged 4 commits into from
Jan 12, 2023

Conversation

gojimmypi
Copy link
Contributor

Description

This update adds some minor, interim changes to the Espressif-specific library to support the ESP32-S3 as related to #5948.

The Espressif wolfssl_test example also has new optional git version information as noted in #5955

See also the new VisualGDB_wolfssl_test_IDF_v5_ESP32S3.vgdbproj VisualGDB file.

Add this to the end of user_settings.h to detect and disable hardware acceleration for the ESP32-S3:

#if defined(CONFIG_IDF_TARGET_ESP32C3)
    #define NO_ESP32WROOM32_CRYPT
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_AES
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_RSA_PRI
#elif  defined(CONFIG_IDF_TARGET_ESP32S3)
    #define NO_ESP32WROOM32_CRYPT
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_AES
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_RSA_PRI
#elif  defined(CONFIG_IDF_TARGET_ESP_OTHER)

#else

#endif

Fixes zd# n/a

Testing

Run the ./setup.sh for Espressif component install as explained in the Setup for Linux.

This is not full ESP32-S3 support. Other ESP32-S3 changes are currently WIP on the Espressif_Multichip

Checklist

  • added tests
  • updated/added doxygen
  • updated appropriate READMEs
  • Updated manual and documentation

@gojimmypi gojimmypi requested a review from dgarske January 5, 2023 00:09
@gojimmypi gojimmypi self-assigned this Jan 5, 2023
@dgarske dgarske self-assigned this Jan 9, 2023
Copy link
Contributor

@dgarske dgarske left a comment

Choose a reason for hiding this comment

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

Holding merge till #5955 is merged.

#if defined(CONFIG_IDF_TARGET_ESP32C3)
/* not available for C3 at this time */
#else
// ESP_LOGI(TAG, "CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ = %u MHz", CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ);
Copy link
Contributor

Choose a reason for hiding this comment

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

Please cleanup this line.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

As yes, good. Thanks for finding that. That was not intended.

I've added something a bit more clear and graceful, although not yet the final product to fully and properly support all of the chipsets. This should bring operational support without HW acceleration for the ESP32-S3 (cc: @PaulMartinsen)

btw - note there's a bit of chicken-and-egg issue with the wolfSSL user_settings.h and target Espressif chip selection at this time. My user settings has this logic at the tail of of my file to detect the Espressif target from the sdkconfig.h file and conditionally turn off HW acceleration:

#include "sdkconfig.h"

/* adjust wait-timeout count if you see timeout in rsa hw acceleration */
#define ESP_RSA_TIMEOUT_CNT    0x249F00
#if defined(CONFIG_IDF_TARGET_ESP32C3)
    #define NO_ESP32WROOM32_CRYPT
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_AES
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_RSA_PRI
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
    #define NO_ESP32WROOM32_CRYPT
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_AES
    #define NO_WOLFSSL_ESP32WROOM32_CRYPT_RSA_PRI
#elif defined(CONFIG_IDF_TARGET_ESP_OTHER)
   /* other */
#else
  /* default is ESP32-WROOM */
#endif

One can of course simply ensure hardware acceleration is always off in the user_settings.h without detecting architecture.

Without turning off hardware acceleration for things like the ESP32-S3 at this time, there will be unexpected and unintuitive compile-time errors.

Also note during this update I saw what appeared to be runtime memory corruption not detected at flash time when doing this:

idf.py  -b 921600  -p /dev/ttyS8  build flash monitor

I fixed it by doing a idf.py fullclean, deleting the existing sdkconfig and then loading at a slower baud rate:

idf.py  -b 230400  -p /dev/ttyS8 set-target esp32-s3 build flash monitor

And for the regular ESP32-WROOM32:

idf.py  -b 230400  -p /dev/ttyS15 set-target esp32 build flash monitor

Also - I added the known-good sdkconfig.defaults currently used in my WIP Espressif multichip branch.

The ESP32 wolfssl_test was confirmed to work with both the ESP32 and ESP32-S3.

@dgarske dgarske removed their assignment Jan 10, 2023
@gojimmypi gojimmypi requested a review from dgarske January 10, 2023 04:07
@gojimmypi
Copy link
Contributor Author

Curiously the last wolfSSL build check for "Test Espressif examples" validation created by @bandi13 failed even though there was no code change. It was only by a small app size amount, but nonetheless a failure.

In response, I've changed all 4 of the local examples to now have "large app" settings in sdkconfig.default. See 24f8933.

@dgarske dgarske self-assigned this Jan 12, 2023
@dgarske dgarske merged commit 3151a5b into wolfSSL:master Jan 12, 2023
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