Jump to content
  • 0

Windows 11 ZMOD ADC Demo SYSROOT issue


davwamai

Question

Hello,

I am trying to get the ZMOD ADC demo working on Windows 11. I remember a post on the forum from (the man, the myth, the legend) zygot, where they mentioned it was not possible, or incredibly difficult, to get the demo working on Windows 10 due to an issue with the SYSROOT path. I am doing my best to follow the instructions of the demo very carefully, the only exception being not using the recommended operating system host. 

I was wondering if this particular issue has been resolved yet, since it seems like it has yet to be. I could very well be making a mistake somewhere (probably with using Windows 11), so I will list out what exactly I am doing starting from the step in the demo where we define our SYSROOT. 

My path is correct, since it is copy/pasted directly from the file system GUI. Checking the validity of the other two environment variables that define our working directory, PWD/CWD, I determined these were also correct. 

Upon applying the changes we have made to our environment variables, I notice in the outline three error symbols appear next to adcZmod, writeADCData, and adcDemo. When I hover over these definition/functions, the error thrown states "undefined reference to 'func(arbitrary param, arbitrary param, arbitrary param, ...).'"

 

Building the project results in the following makefile throw:

16:34:49 **** Auto Build of configuration Debug for project ZmodADC1410_Demo_Linux ****
make all 
'Building target: ZmodADC1410_Demo_Linux.elf'
'Invoking: ARM v7 Linux g++ linker'
arm-linux-gnueabihf-g++ -L"C:\Users\dwamai\Downloads\eclypse-debian-buster-armhf-sysroot_0.3/usr/lib" -L"C:\Users\dwamai\Downloads\eclypse-debian-buster-armhf-sysroot_0.3/lib" --sysroot=C:\Users\dwamai\Downloads\eclypse-debian-buster-armhf-sysroot_0.3 -o "ZmodADC1410_Demo_Linux.elf"  ./src/main.o   -luio
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: ./src/main.o: in function `writeADCData(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int*, unsigned char, unsigned char, unsigned int)':
C:\Users\dwamai\Desktop\Eclypse-Z7-SW\ZmodADC1410_Demo_Linux\Debug/../src/main.cpp:51: undefined reference to `ZMOD::formatValue(char*, float, char const*)'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: C:\Users\dwamai\Desktop\Eclypse-Z7-SW\ZmodADC1410_Demo_Linux\Debug/../src/main.cpp:55: undefined reference to `ZMOD::formatValue(char*, float, char const*)'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: C:\Users\dwamai\Desktop\Eclypse-Z7-SW\ZmodADC1410_Demo_Linux\Debug/../src/main.cpp:58: undefined reference to `ZMODADC1410::signedChannelData(unsigned char, unsigned int)'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: C:\Users\dwamai\Desktop\Eclypse-Z7-SW\ZmodADC1410_Demo_Linux\Debug/../src/main.cpp:59: undefined reference to `ZMODADC1410::getVoltFromSignedRaw(int, unsigned char)'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: C:\Users\dwamai\Desktop\Eclypse-Z7-SW\ZmodADC1410_Demo_Linux\Debug/../src/main.cpp:60: undefined reference to `ZMOD::formatValue(char*, float, char const*)'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: ./src/main.o: in function `adcDemo(unsigned char, unsigned char, unsigned int)':
C:\Users\dwamai\Desktop\Eclypse-Z7-SW\ZmodADC1410_Demo_Linux\Debug/../src/main.cpp:77: undefined reference to `ZMODADC1410::setGain(unsigned char, unsigned char)'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: C:\Users\dwamai\Desktop\Eclypse-Z7-SW\ZmodADC1410_Demo_Linux\Debug/../src/main.cpp:80: undefined reference to `ZMODADC1410::allocChannelsBuffer(unsigned int&)'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: C:\Users\dwamai\Desktop\Eclypse-Z7-SW\ZmodADC1410_Demo_Linux\Debug/../src/main.cpp:81: undefined reference to `ZMODADC1410::acquireImmediatePolling(unsigned int*, unsigned int&)'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: C:\Users\dwamai\Desktop\Eclypse-Z7-SW\ZmodADC1410_Demo_Linux\Debug/../src/main.cpp:83: undefined reference to `ZMODADC1410::freeChannelsBuffer(unsigned int*, unsigned int)'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: ./src/main.o: in function `__static_initialization_and_destruction_0(int, int)':
C:\Users\dwamai\Desktop\Eclypse-Z7-SW\ZmodADC1410_Demo_Linux\Debug/../src/main.cpp:29: undefined reference to `ZMODADC1410::ZMODADC1410(unsigned int, unsigned int, unsigned int, unsigned int, int, int)'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: ./src/main.o: in function `ZMODADC1410::~ZMODADC1410()':
c:\users\dwamai\desktop\eclypse-z7-sw\zmodlib\zmodadc1410/zmodadc1410.h:82: undefined reference to `ZMOD::~ZMOD()'
c:/xilinx/sdk/2019.1/gnu/aarch32/nt/gcc-arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabihf/8.2.0/../../../../arm-linux-gnueabihf/bin/ld.exe: c:\users\dwamai\desktop\eclypse-z7-sw\zmodlib\zmodadc1410/zmodadc1410.h:82: undefined reference to `vtable for ZMODADC1410'
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:50: ZmodADC1410_Demo_Linux.elf] Error 1

16:34:49 Build Finished (took 293ms)

 

I have tried using both versions (v0.2, v0.3) of the sysroot and had the same result. 

I have verified that each errored function is present in their respective header declarations. 

I tried applying the compressed .zip as the SYSROOT as per this comment

I am just trying to figure out if I have lost all sanity, or if this issue is not of my design. It would be of no surprise to me to see I have made an incredibly stupid mistake somewhere. 

Please let me know if anyone can figure out where I went wrong based on the information I have provided. If more is needed, I will happily share it. 

 

Best,

David

forum1.png

forum2.png

Edited by davwamai
i am incredibly stupid
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 1
2 hours ago, davwamai said:

I remember a post on the forum from (the man, the myth, the legend) zygot, where they mentioned it was not possible, or incredibly difficult, to get the demo working on Windows 10 due to an issue with the SYSROOT path.

You're funny; at least you made me laugh.

You do realize that path delimiters ( / \ ) in Linux and Windows go in opposite directions right? Was that the context for your edit?

Really, you can add years to you life by building Linux targets on embedded systems if you do it on a Linux host. As I recall the original Eclypse-Z7 release also had an issue with the compressed FS image.

This is a lot harder to do on a Win11 box than on a Win10 box but really, consider dual booting to either Win11 or Linux, and put them on separate drives. Windows really doesn't play nice with Linux, especially if GRUB is on the Windows drive MBR. Alternately, resurrect an old Windows PC or laptop an install Linux on it. Alternately, you could just choose to age prematurely and lose you sanity well before you friends. Windows just isn't a friendly environment for doing FPGA development. Linux has it's issues ( sometimes freedom of choice is counter productive ) but the more development that you do on a Linux host the less you will want to use Windows. As Microsoft migrates to their annual paid subscription with unwanted advertising model the situation won't be getting any better. 

Link to comment
Share on other sites

  • 0
2 hours ago, zygot said:

You're funny; at least you made me laugh.

You do realize that path delimiters ( / \ ) in Linux and Windows go in opposite directions right? Was that the context for your edit?

I make up for my lack of intelligence with humor. You'd be surprised how far one can get in undergrad research with a room temp iq (and were talking Celsius). 

My access to a secondary machine is limited, but I'm sure I have an old laptop laying around somewhere I can put a Linux distro on. Part of me wants to put an Ubuntu VM hosted on this WIN11 PC, but I have a feeling there will be some drawbacks of doing so. I don't know exactly what said drawbacks are, so I will more than likely play it safe with a pure Ubuntu machine. I was hoping I could get away with developing this particular project with WIN11, but I trust your judgement when it comes to the relative quality of Linux as an FPGA dev environment. 

As for the delimiters, I was aware. Turns out that all I had to do to find the problem was get some sleep. 

Best

Link to comment
Share on other sites

  • 0

I tried Hyper-V on my Win10 box and quickly abandoned it. For the kinds of development that I do it's pretty worthless. Lot's of downsides and no upside. If one does simple software development it might be Ok, I imagine, but probably not enough ok to put up the the negatives.

Humor is good for keeping one's sanity ( or perhaps hiding the lack of it ). Sleep is even better. I've on occasion done my best thinking while asleep. Over the years I've found a good solution to a problem that was eluding me for many days. Of course I've also awoken in the middle of the night with a really silly solution to a problem that was just embarrassing once I had time to think about it.

About the time when Microsoft needs another cash infusion Windows always seems to get really slow on what use to be a fast machine. Linux seems to make old PCs, even with limited memory, seem perfectly usable.

An advantage of two OSes on two separate machines is that if one is being obstinate you can always use the other one. I have a lot of PCs that I need to use for particular work and so far none of them seems to be clingy or jealous if my attention wanders to another one. I suppose that in the near future AI could change that.  

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...