I have not seen any axi transfer when I run coresight example helloworld.
And the cpu program counter stopping in some code
I have some questions when I check my IMAGE0.lst file
1 .why printf is branch to putchar instead of printf in coresight example?
2. Is GCC retarget modify _write function?
3. What GCC glibc version recommended to use for coresight example and CPU-R8?
-------------IMAGE0.lst----------------
printf("A");
7d18: e3a00041 mov r0, #65 ; 0x41
7d1c: fa0000a3 blx 7fb0 <putchar>
---------------------------------------------
--------------retarget.c-------------------
void output_char(int c){
volatile int *tube = 0xfc000000;
*tube = c;
}
int _write(int fh, char *buf, int count) {
int i = 0;
while (i < count){
output_char(buf[ i++ ]);
-----------------------------------------
I use GCC 8.3.1 20190703 (release gun tool for arm embedded processor 8 2019.q3) and glibc is 2.14
Hi Ben,
1. printf is optimized to putchar because you're printing only one character. It's much more efficient to call putchar in this case rather than calling printf.
2. I'm not sure I understand this one. Could you give a bit more detail?
3. The arm embedded releases are for baremetal toolchains, so no glibc is involved. newlib is the c runtime that is used for these and is included in the package.
Thanks,
Tamar
Hi Tamar
Thanks for your reply.
1. I try to print more characters and it call printf function. thank you
2. I want to retarget my printf to UART
The coresight example provide a file retarget.c and include this file to compile.
I follow user guide to run simulation But it doesn't any transfer
The expected result is characters will see on AXI port.
So I'm not sure what I lost to do.
3. I have error when I run arm-none-eabi-gcc. -> arm-none-eabi-gcc: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by arm-none-eabi-gcc)
I download glibc2.14 to install and solve this error.
Do I use wrong tooling for coresight test? But our project need to use GCC.
Thank you!
The toolchain is built to support Ubuntu 14.04 and newer, so indeed a minimum of GLIBC 2.14 is required.
For the UART case did you try to compile the example as is to see if it works?
Cheers,
I try to run the retarget example and it works.
Then found an issue in our design. Now we solve design's problem.
Final GCC retarget printf indeed to modify _write function
Thanks for your help!
No problem, I'll mark this as answered then :)