Skip to main content
Visitor II
August 17, 2020
Question

STM32H7 and calloc failure

  • August 17, 2020
  • 2 replies
  • 898 views

Hi,

I am using a STMH743 running an LWIP example, added in mbedTLS to the mix.

Eventually, got into a certificate parse issue,

narrowing it down:

I found that calloc failed:

 (890) x509_crt_parse_der_core:

 (899) x509_crt_parse_der_core: mbedtls_calloc(), crt->raw.p=NULL, len:995

Tried searching a bit on calloc failure, came up with this link:

https://www.keil.com/support/docs/4094.htm

But that appears to match ( ? ) the startup file that I do have:

;*******************************************************************************
; User Stack and Heap initialization
;*******************************************************************************
 IF :DEF:__MICROLIB
 
 EXPORT __initial_sp
 EXPORT __heap_base
 EXPORT __heap_limit
 
 ELSE
 
 IMPORT __use_two_region_memory
 EXPORT __user_initial_stackheap
 
__user_initial_stackheap
 
 LDR R0, = Heap_Mem
 LDR R1, =(Stack_Mem + Stack_Size)
 LDR R2, = (Heap_Mem + Heap_Size)
 LDR R3, = Stack_Mem
 BX LR
 
 ALIGN
 
 ENDIF
 
 END
 
;************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE*****

I am at a loss, how to go forward.

Can someone help ?

Thanks,

Manu

    This topic has been closed for replies.

    2 replies

    Visitor II
    August 17, 2020

    Replying to my own post ..

    Played around with the Heap size,

    This fixed the calloc() issue.

    Sorry about the noise.

    Thanks,

    Manu

    Graduate II
    August 17, 2020

    For others, stack and heap are defined in startup.s, the memory involved can be established via a scatter file

    ;*******************************************************************************
    ;
    ; Amount of memory (in bytes) allocated for Stack
    ; Tailor this value to your application needs
    ; <h> Stack Configuration
    ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
    ; </h>
     
    Stack_Size EQU 0x0800
     
     AREA STACK, NOINIT, READWRITE, ALIGN=3
    Stack_Mem SPACE Stack_Size
    __initial_sp
     
     
    ; <h> Heap Configuration
    ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
    ; </h>
     
    Heap_Size EQU 0x2000
     
     AREA HEAP, NOINIT, READWRITE, ALIGN=3
    __heap_base
    Heap_Mem SPACE Heap_Size
    __heap_limit
     
    ;***************************************************************************** 
     RW_RAM1 0x60000000 UNINIT 0x00040000 { ; RW data
     *(HEAP) ; external SRAM
     } 

    Visitor II
    August 18, 2020

    Thanks, Clive1

    I have a faint memory, (you or someone else ?)

    A mention about stack and heap requirements running a web server with and without TLS/SSL quite a while back ?

    Could not find that discussion, anymore though.

    Thanks,

    Manu