FX3, CyU3PDebugPrint - coding for va_list, va_start, va_end

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hi,

   

Coding a CyU3PDebugPrint version for additional functionality, perhaps others have tried the same.  The purpose is to send back a buffer of formatted strings, in order to debug the MCU.  See below.  This compiles, but I have a problem with the link phase as noted lower in the message.  Not really sure what I am missing.

   

Has anyone done something like this?

   

Have an idea of what I am possibly missing?

   

This only now happens due to the including of va_list, va_start, va_end due to stdarg.h

   

 

   

 

   

 

   

 

   

#include <stdio.h>

   

#include <stdarg.h>

   

int CyU3PDebugPrintx(int a, char *format, ...) {

   

uint8_t src[1024];

   

va_list arg;

   

int cnt;

   

 

   

for (cnt = 0; cnt<LogBufferSizeLimit; cnt++) {

   

src[cnt] = 0;

   

}

   

 

   

va_start(arg, format);

   

vsprintf((char *)src, format, arg);

   

perror((char*)src);

   

va_end(arg);

   

 

   

cnt = strlen((char*)src);

   

DebugPipeLogging(src, cnt);

   

 

   

return 0;

   

} // CyU3PDebugPrintx

   

 

   

 

   

**** Build of configuration Release for project USBVideoClass ****

   

 

   

cs-make all 

   

'Building file: ../uvc.c'

   

'Invoking: ARM Sourcery Windows GCC C Compiler'

   

arm-none-eabi-gcc -DTX_ENABLE_EVENT_TRACE -DDEBUG -DCYU3P_FX3=1 -D__CYU3P_TX__=1 -I"C:\Cypress\EZ-USB FX3 SDK\1.2\\firmware\u3p_firmware\inc" -I. -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"uvc.d" -MT"uvc.d" -mcpu=arm926ej-s -mthumb-interwork -g -gdwarf-2 -o"uvc.o" "../uvc.c"

   

'Finished building: ../uvc.c'

   

' '

   

'Building target: cyfxuvc.elf'

   

'Invoking: ARM Sourcery Windows GCC C Linker'

   

arm-none-eabi-gcc  ./cyfx_gcc_startup.o ./cyfxtx.o ./cyfxuvcdscr_BAE.o ./minicam_uart_BAE.o ./uvc.o    -T"C:\Cypress\EZ-USB FX3 SDK\1.2\/firmware/common/fx3.ld" -nostartfiles -Wl,-Map,cyfxuvc.map -Wl,-d -Wl,--no-wchar-size-warning -Wl,--gc-sections -Wl,--entry,CyU3PFirmwareEntry "C:\Cypress\EZ-USB FX3 SDK\1.2\\firmware\u3p_firmware\lib\fx3_release\cyfxapi.a" "C:\Cypress\EZ-USB FX3 SDK\1.2\\firmware\u3p_firmware\lib\fx3_release\cyu3threadx.a" "C:\Cypress\EZ-USB FX3 SDK\1.2\\firmware\u3p_firmware\lib\fx3_release\cyu3lpp.a"  "C:\Cypress\EZ-USB FX3 SDK\1.2\\arm-none-eabi\lib\libc.a" "C:\Cypress\EZ-USB FX3 SDK\1.2\\lib\gcc\arm-none-eabi\4.5.2\libgcc.a" -mcpu=arm926ej-s -mthumb-interwork -g -gdwarf-2 -o"cyfxuvc.elf"

   

C:\Cypress\EZ-USB FX3 SDK\1.2\\arm-none-eabi\lib\libc.a(lib_a-sbrkr.o): In function `_sbrk_r':

   

sbrkr.c:(.text+0x18): undefined reference to `_sbrk'

   

C:\Cypress\EZ-USB FX3 SDK\1.2\\arm-none-eabi\lib\libc.a(lib_a-writer.o): In function `_write_r':

   

writer.c:(.text+0x20): undefined reference to `_write'

   

C:\Cypress\EZ-USB FX3 SDK\1.2\\arm-none-eabi\lib\libc.a(lib_a-closer.o): In function `_close_r':

   

closer.c:(.text+0x18): undefined reference to `_close'

   

C:\Cypress\EZ-USB FX3 SDK\1.2\\arm-none-eabi\lib\libc.a(lib_a-fstatr.o): In function `_fstat_r':

   

fstatr.c:(.text+0x1c): undefined reference to `_fstat'

   

C:\Cypress\EZ-USB FX3 SDK\1.2\\arm-none-eabi\lib\libc.a(lib_a-isattyr.o): In function `_isatty_r':

   

isattyr.c:(.text+0x18): undefined reference to `_isatty'

   

C:\Cypress\EZ-USB FX3 SDK\1.2\\arm-none-eabi\lib\libc.a(lib_a-lseekr.o): In function `_lseek_r':

   

lseekr.c:(.text+0x20): undefined reference to `_lseek'

   

C:\Cypress\EZ-USB FX3 SDK\1.2\\arm-none-eabi\lib\libc.a(lib_a-readr.o): In function `_read_r':

   

readr.c:(.text+0x20): undefined reference to `_read'

   

collect2: ld returned 1 exit status

   

cs-make: *** [cyfxuvc.elf] Error 1

0 Likes
2 Replies
RoKl_290166
Level 4
Level 4
Welcome!

Hi,

   

I did a similar thing but I implemented my own vsnprintf()-function.
As far as I can remember I got similar error-messages using the vsnprintf from the gcc-lib so I built my own function.
I can't tell you the root-cause for this error-messages but it seemed that the gcc-implementation is maybe too large in code-size?!

   

You can try to comment out the vsprintf and see if the error still occurrs.
 

   

Regards,

   

Rob

0 Likes
Anonymous
Not applicable

 yes that seems to be the problem.  I've place a ticket to Cypress as well, but no world yet from them.

   

if possible, can you post your method to the group, since it is likely many more people would benefit from your knowledge in having overcome this problem.

   

Thanks,

0 Likes