ARMmbed / mbed-client-for-azure

Azure IoT Device SDK port for Mbed OS
Apache License 2.0
5 stars 4 forks source link

Apply azure-sdk-for-c for smaller ROM size #10

Open cyliangtw opened 3 years ago

cyliangtw commented 3 years ago

Description of defect

Current ROM size of mbed-os-example-for-azure seems too big for normal MCU platforms. According to my evaluation based on the same NUMAKER_IOT_M487 platform:

Target(s) affected by this defect ?

NUMAKER_IOT_M487

Toolchain(s) (name and version) displaying this defect ?

ARMCC6 (name = MDK-ARM Plus, version = 5.28)

What version of Mbed-os are you using (tag or sha) ?

mbed-os-6.3.0

What version(s) of tools are you using. List all that apply (E.g. mbed-cli)

mbed-os-tools (0.0.14)

How is this defect reproduced ?

We forked & ported mbed-os-example-for-azure on NUMKAER_IOT_M487 in this repo , it could work but ROM size is too big. So, I cross check with azure-iot-preview based on azure-sdk-for-c, this M487 azure-iot-preview repo is ROM size as small as 131 KB. I used the same toolchain to build these 2 examples for Azure connection and the key factor is azure azure-iot-sdk-c v.s azure-sdk-for-c.

So, is there any plan to apply azure-sdk-for-c to fulfill memory footprint of MCU level ?

ciarmcom commented 3 years ago

@cyliangtw thank you for raising this issue.Please take a look at the following comments:

We cannot automatically identify a release based on the version of Mbed OS that you have provided. Please provide either a single valid sha of the form #abcde12 or #3b8265d70af32261311a06e423ca33434d8d80de or a single valid release tag of the form mbed-os-x.y.z . E.g. 'v6.3.0' has not been matched as a valid tag or sha. NOTE: If there are fields which are not applicable then please just add 'n/a' or 'None'.This indicates to us that at least all the fields have been considered. Please update the issue header with the missing information, the issue will not be mirroredto our internal defect tracking system or investigated until this has been fully resolved.

cyliangtw commented 3 years ago

@ciarmcom , I updated the header with correct mbed-os tag.

ciarmcom commented 3 years ago

@cyliangtw it has been 5 days since the last reminder. Could you please update the issue header as previously requested?

cyliangtw commented 3 years ago

@ciarmcom , I updated as the correct tag mbed-os-6.3.0

ciarmcom commented 3 years ago

@cyliangtw it has been 5 days since the last reminder. Could you please update the issue header as previously requested?

ciarmcom commented 3 years ago

@cyliangtw it has been 5 days since the last reminder. Could you please update the issue header as previously requested?

ciarmcom commented 3 years ago

@cyliangtw it has been 5 days since the last reminder. Could you please update the issue header as previously requested?

ciarmcom commented 3 years ago

@cyliangtw it has been 5 days since the last reminder. Could you please update the issue header as previously requested?

ciarmcom commented 3 years ago

@cyliangtw it has been 5 days since the last reminder. Could you please update the issue header as previously requested?

ciarmcom commented 3 years ago

Thank you for raising this detailed GitHub issue. I am now notifying our internal issue triagers. Internal Jira reference: https://jira.arm.com/browse/IOTOSM-2952

evedon commented 3 years ago

We have no plan to update to azure-sdk-for-c at the moment but this is something we could look into.

In terms of the example code size, you could build with the release profile mbed compile -m NUMAKER_IOT_M487 -t ARM --profile release to achieve higher memory savings but it won't be enough to close on the 200KB gap that you mentioned.

For your info, I tried to build the latest commit but I got some build errors.

Error: L6218E: Undefined symbol mbedtls_ctr_drbg_free (referred from BUILD/NUMAKER_IOT_M487/ARM-RELEASE/mbed-client-for-azure/dependencies/c-utility/adapters/tlsio_mbedtls.o).
Error: L6218E: Undefined symbol mbedtls_ctr_drbg_init (referred from BUILD/NUMAKER_IOT_M487/ARM-RELEASE/mbed-client-for-azure/dependencies/c-utility/adapters/tlsio_mbedtls.o).
Error: L6218E: Undefined symbol mbedtls_ctr_drbg_random (referred from BUILD/NUMAKER_IOT_M487/ARM-RELEASE/mbed-client-for-azure/dependencies/c-utility/adapters/tlsio_mbedtls.o).
cyliangtw commented 3 years ago

@evedon , about true random number generate, it's implemented by M487 PRN + ADC, I fork the original repo and apply my patch at this branch https://github.com/OpenNuvoton/mbed-os-example-for-azure. Then, you could build successfully by mbed compile -m NUMAKER_IOT_M487 -t ARM