03-31-2015 04:10 PM
Hello guys,I'm running some tests in my DE1-SoC board with Linux. I want to test the communication speeds between the HPS and the FPGA using the different available options. In order so, for the first attempt, I'll request a timer from Linux, check its resolution and try to time the data transfers. I'm using the <time.h> library and the clock functions like: int clock_getres(clockid_t clk_id, struct timespec *res);
int clock_gettime(clockid_t clk_id, struct timespec *tp);
int clock_settime(clockid_t clk_id, const struct timespec *tp);
but this is where the problem happens. I get the following error message from the board Linux: ./hps-fpga_read-write_timer: /lib/libc.so.6: version `GLIBC_2.17' not found (required by ./hps-fpga_read-write_timer) root@socfpga:~# I checked the GLIBC running on the Linux image provided and this is what I got: GNU C Library (Ubuntu EGLIBC 2.15-0ubuntu10) stable release version 2.15, by Roland McGrath et al. Copyright (C) 2012 Free Software Foundation, Inc. (...) The Linux image and tool-chain where downloaded in the same, and are still updated: Linux image version: Linux Console 3.12 4GB 66495 2014-01-14 Toolchain: DE1-SoC CD-ROM (rev.C/rev.D Board) 3.1.2 2015-01-23 So, from what I can understand, the provided tool-chain and the Linux image do not have the same GLIBC version, which happens to be no back compatible. Could you please confirm this? My question is how to fix this. Do I have to recompile a Linux image from scratch? or can the GLIBC only be updated? Should I also consider to downgrade the GLIBC on the tool-chain side? regards, Filipe
06-25-2016 01:34 PM
--- Quote Start --- Hi, Do you find a solution for this problem? regards, Joao --- Quote End --- Yes we have found. The problem was that the image provided by Terasic was old and the toolchains are new so when the application is calling for 2.17 glibc linux finds a 2.15. I think that this is a forward compatibility problem and glibc is only backward compatible. It would be backward compatible situation if the system have the newer libraries and they work with a call to older ones. So the problem is solved just having a version of glibc in the SD card newer than the one used in the toolchain you use to compile the application. Anyway, the solution would be to use older tools (not good idea because all tutorials in rocketboards are with newer tools and newer versions of software correct old bugs) or either update the OS (hard since Terasic does not wxplain how they have built their console image). Given poor answers by Terasic and a lot of information about building ANgstrom in Rocketboards we decided to run ANgstrom instead of Linux COnsole. Moreover Angstrom is a better OS than Console that does not have a text editor or mackage manager on it. We did a compilation of Angstrom as explained in rocketboards for 14.x Quartus tools. First we just changed the filesystem on the SD and we had got a kind of frankestain with Console kernel and Angstrom filesystem. Time.h worked because the time.h library is not part of the kernel, it is part of the filesystem. To be coherent we put ANgstrom kernel in SD too, what forced us to also regenerate the .dtb file. If you have any problem doing that contact me privately and I can send you detailed tutorial of what we did and send you some files for the SD card. I am planning to do some blog to post all what we have so everyone can use it but I had no time.
12-06-2016 07:16 PM
robertofem,Did you post a blog with your results? I believe I have this same issue, but hope that the new BSP will resolve it (TBD). But I'd still be interested in reviewing your blog, if it has been posted.