Hi Janos,
 
Thanks. It seems that the platform provides the stadndard fucntions like calloc and free, and also a "better" version (e.g., thread-safe version claimed in chibiOS). This is what confused me at the beginning.
 
Best regards,
Songwei
 
 
Gesendet: Mittwoch, 17. Juni 2020 um 15:00 Uhr
Von: "Janos Follath" <Janos.Follath@arm.com>
An: "songwei.fu@web.de" <songwei.fu@web.de>, "Kaul, Martin" <Martin.Kaul@leuze.com>
Cc: "mbed-tls@lists.trustedfirmware.org" <mbed-tls@lists.trustedfirmware.org>
Betreff: Re: [mbed-tls] Link error when calling "altcp_tls_create_config_client"

These defines are needed when the platform doesn’t have standard functions like `calloc()` and `free()`. (You can find more details on the macros in `config.h`.)

 

Regards,

Janos

 

From: mbed-tls <mbed-tls-bounces@lists.trustedfirmware.org> on behalf of songwei fu via mbed-tls <mbed-tls@lists.trustedfirmware.org>
Reply to: "songwei.fu@web.de" <songwei.fu@web.de>
Date: Wednesday, 17 June 2020 at 13:41
To: "Kaul, Martin" <Martin.Kaul@leuze.com>
Cc: "mbed-tls@lists.trustedfirmware.org" <mbed-tls@lists.trustedfirmware.org>
Subject: Re: [mbed-tls] Link error when calling "altcp_tls_create_config_client"

 

Thanks Martin. 

It solved my problem!  By adding $(CHIBIOS)/os/various/syscalls.c in the makefile and removing following defines, the linker error is gone. 

#define MBEDTLS_PLATFORM_C
#define MBEDTLS_PLATFORM_MEMORY
#define MBEDTLS_PLATFORM_CALLOC_MACRO   chHeapAlloc 
#define MBEDTLS_PLATFORM_FREE_MACRO     chHeapFree 

 

Now I wonder when these defines are needed? I thought I need to port them to the OS-specific memory allocation. like in freeRTOS, it would be "pvPortCalloc", and for chibios it would be chHeapAlloc. Anybody can give me some hint?

 

-- Songwei

 

Gesendet: Mittwoch, 17. Juni 2020 um 12:12 Uhr
Von: "Kaul, Martin" <Martin.Kaul@leuze.com>
An: "songwei.fu@web.de" <songwei.fu@web.de>
Betreff: AW: [mbed-tls] Link error when calling "altcp_tls_create_config_client"

Hi,

 

_sbrk is need when you using heap memory, for example using malloc() – see following discussion in stackoverflow: https://stackoverflow.com/questions/32446814/undefined-reference-to-sbrk-in-chibios

 

Maybe that helps.

 

Best regards

  Martin

 

Von: mbed-tls [mailto:mbed-tls-bounces@lists.trustedfirmware.org] Im Auftrag von songwei fu via mbed-tls
Gesendet: Mittwoch, 17. Juni 2020 11:49
An: mbed-tls@lists.trustedfirmware.org
Betreff: [mbed-tls] Link error when calling "altcp_tls_create_config_client"

 

Hi guys,

 

I am new to the list and also to mbedTLS. Now I am trying to port mbedTLS to chibiOS. And when I called altcp_tls_create_config_client(cert, sizeof(cert)), I got a link error like following:

 

c:/chibistudio/tools/gnu tools arm embedded/7.0 2017q4/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m\libg.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'

 

And these are my settings:

#define MBEDTLS_PLATFORM_C
#define MBEDTLS_PLATFORM_MEMORY
#define MBEDTLS_PLATFORM_CALLOC_MACRO   chHeapAlloc 
#define MBEDTLS_PLATFORM_FREE_MACRO     chHeapFree 

 

where chHeapAlloc and chHeapFree are the memory allocation functions from chibios. 

 

(1) Did I miss some settings? or i did something wrong? 

(2) I did not find much information about the porting from chibios side. Does anybody know where I can look for reference projects/docs?

 

Any suggestion will be appreciated. Thanks.

 

Songwei