2006-02-10 03:31 AM
2006-02-09 05:12 AM
Hello,
Somehow memory allocation functions calloc, malloc, free are not working for me. Anybody has working code...? I will post what I am doing and can anybody figure out what am I doing wrong...? typedef struct BT_INFO{ //unsigned int .. //unsigned ... //etc }BT_INFO; typedef unsigned int HANDLE; HANDLE BT_Init(void){ BT_INFO *BT_Info; BT_Info = calloc (sizeof(BT_INFO),sizeof(unsigned char)); if(BT_Info){ return HANDLE)BT_Info; }else{ return 0; } } It always returns 0. This code is working on 2 other compilers (non ARM) and I couldn't figure out whats wrong on IAR. Code compiles with 0 errors and 0 warnings on IAR. I have declared the heap size as 8000 in stacks and heap section of options. I am using IAR STR711F kit. Thanks in advance, Ranga2006-02-10 01:27 AM
Thanks a lot. But it doesn't work for me... :-[
I use IAR Kickstart version and I am wondering that this is a problem with IAR 4.30A KICKSTART version. They limit the functionality of KICKSTART version. Any comments...? Thanks, Ranga2006-02-10 03:31 AM
Finally figured out the problem..whoooof..!!! :-]
Anyways, it's the linker file I was using. I changed it and it started working. I considered that previous heap was initialised for 8000 bytes and I was wrong. So no more assumptions now... ;) //************************************************************************* // Stack and heap segments. //************************************************************************* -D_CSTACK_SIZE=400 // -D_SVC_STACK_SIZE=10 -D_IRQ_STACK_SIZE=500 //-D_HEAP_SIZE=4 -D_HEAP_SIZE=1000 -Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND // -Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND -Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE,HEAP+_HEAP_SIZE=RAMSTART-RAMEND thanks, Ranga