In my previous post on the iCEBreaker Bitsy FPGA - early adopter version, I mentioned the interesting iua: ice40 USB Analyzer project that I learned about on the iCEBreaker discord channel in the context of troubleshooting the odd problem I was seeing on my "Power Share" USB3.0 port.

There's minimal documentation on Getting Started, so here I am creating my notes.

The iua is meant for the iCEBreaker, not the Bitsy (although I wonder if it would still work on the Bisty? another rabbit hole for another day...)

As with all prior posts, I'm a Visual Studio developer at the day job, and continue that with my FPGA learning on the weekends... thus I use Windows, WSL, and Visual Studio here.



cd /mnt/c/workspace/
git clone https://github.com/smunaut/iua.git
cd iua/hdl
make

As reminder, if you have a VM running, make sure you are not having problems with a prompt awaiting device connection:

Also, even if you've used iceprog before and it decides to not find the icEBreaker today, check the drivers with Zadig. Windows seems to like to replace the drivers during updates. The iCEBreaker needs the libusbK drivers.

Unlike the Bitsy that needs to have bootloader boot set by holding the button at power-on time for dfu-util, the iCEBreaker does NOT need that when using iceprog

As there's no native USB support in my WSL, I use the DOS exe to send the binary to the device either from DOS:


C:\workspace\ulx3s-toolchain\bin\iceprog.exe 

or from WSL:


/mnt/c/workspace/ulx3s-toolchain/bin/iceprog.exe iua_icebreaker_top.bin
When successful, there should be output that looks something like this:


init..
cdone: high
reset..
cdone: low
flash ID: 0xEF 0x40 0x18 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
file size: 104090
erase 64kB sector at 0x000000..
erase 64kB sector at 0x010000..
programming..
reading..
VERIFY OK
cdone: high
Bye.


So that was the easy part. (The easy part is always the thing you already know). The next part - sigrok - is something that I've wanted to learn more about for quite some time. There's another  smunaut/libsigrok project needed, which is a modified fork of sigrokproject/libsigrok and needs to be built like this:


git clone git://sigrok.org/libsigrok
cd libsigrok
./autogen.sh
./configure
make


People often ask why I deal with the annoyances of Windows. Well, Linux has plenty as well, imho. I had most of the dependencies already installed, but receieved this error diring make

configure: error: Package requirements (glib-2.0 >= 2.32.0 libftdi1 >= 1.0 libusb-1.0 >= 1.0.16 gio-2.0 >= 2.24.0 libzip >= 0.10) were not met:
No package 'libzip' found


And so what's the first thing to try? Well, sudo apt-get install libzip , right? Nope. :/


Reading package lists... Done
Building dependency tree
Reading state information... DoneE: Unable to locate package libzip


grumble, grumble, google, grumble....

There's only one reference on the wiki, and it only notes I need libzip >= 0.10. But where to find it? Ah yes, it is just the development code library, not a tool, so we need the -dev suffix:

sudo apt-get install libzip-dev


Ok, now to run ./configure again...

Closer this time; I am still missing some things:


Enabled language bindings:
 - C++............................. no (missing: glibmm, Doxygen)
 - Python.......................... no (missing: C++ bindings, PyGObject, SWIG)
 - Ruby............................ no (missing: C++ bindings, SWIG)
 - Java............................ no (missing: C++ bindings, SWIG, JavaC, JNI headers)
===============================================================================
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
===============================================================================
===                                                                         ===
===         The libsigrok C++ bindings are not being built since you        ===
===             are missing one or more dependencies (see above)!           ===
===                                                                         ===
===      This means you won't be able to compile frontends that require     ===
===  the C++ bindings (such as PulseView)! You also won't be able to build  ===
===     other bindings and frontends using those (such as sigrok-meter)!    ===
===                                                                         ===
===============================================================================
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
===============================================================================


ugh.

gojimmypi:/mnt/c/workspace/libsigrok
$ sudo apt-get install glibmm
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package glibmm
gojimmypi:/mnt/c/workspace/libsigrok
$ sudo apt-get install glibmm-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package glibmm-dev
gojimmypi:/mnt/c/workspace/libsigrok


grumble, grumble, google, grumble....

This one requires a version number in the name. Of course it does. So onward to install: glibmm. I'll grab doxygen too, and then one more ./configure as well:


sudo apt-get install libglibmm-2.4-dev
sudo apt-get install doxygen
./configure


No warnings! Hurray!! So on to a (very long running) make , then:


  
$ make check
make
make  all-am
make  check-TESTS
============================================================================
Testsuite summary for libsigrok 0.6.0
============================================================================
# TOTAL: 0
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================



$ sudo make install
 /bin/mkdir -p '/usr/local/lib'
 /bin/bash ./libtool --silent  --mode=install /usr/bin/install -c   libsigrok.la bindings/cxx/libsigrokcxx.la '/usr/local/lib'
libtool: warning: relinking 'bindings/cxx/libsigrokcxx.la'
 /bin/mkdir -p '/usr/local/include/libsigrokcxx'
 /usr/bin/install -c -m 644 bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp '/usr/local/include/libsigrokcxx'
 /bin/mkdir -p '/usr/local/include/libsigrok'
 /usr/bin/install -c -m 644 include/libsigrok/libsigrok.h include/libsigrok/proto.h '/usr/local/include/libsigrok'
 /bin/mkdir -p '/usr/local/share/mime/packages'
 /usr/bin/install -c -m 644 contrib/vnd.sigrok.session.xml '/usr/local/share/mime/packages'
 /bin/mkdir -p '/usr/local/share/icons/hicolor/48x48/mimetypes'
 /usr/bin/install -c -m 644 contrib/libsigrok.png '/usr/local/share/icons/hicolor/48x48/mimetypes'
 /bin/mkdir -p '/usr/local/share/icons/hicolor/scalable/mimetypes'
 /usr/bin/install -c -m 644 contrib/libsigrok.svg '/usr/local/share/icons/hicolor/scalable/mimetypes'
 /bin/mkdir -p '/usr/local/include/libsigrokcxx'
 /usr/bin/install -c -m 644 bindings/cxx/include/libsigrokcxx/enums.hpp '/usr/local/include/libsigrokcxx'
 /bin/mkdir -p '/usr/local/include/libsigrok'
 /usr/bin/install -c -m 644 include/libsigrok/version.h '/usr/local/include/libsigrok'
 /bin/mkdir -p '/usr/local/lib/pkgconfig'
 /usr/bin/install -c -m 644 libsigrok.pc bindings/cxx/libsigrokcxx.pc '/usr/local/lib/pkgconfig'  


Next is to install decoder:

git clone https://github.com/sigrokproject/libsigrokdecode.git
cd libsigrokdecode
./autogen.sh
./configure
make
sudo make install


Next is to install Pulseview! (see also build info). Despite having the requirements installed, I also needed:


sudo apt-get install qttools5-dev



  
git clone https://github.com/sigrokproject/pulseview.git
cd pulseview
cmake .
make
sudo make install


Still following along? After all this, it is time to actually run pulseview! Alas on WSL we have an extra challenge: X-Windows. I'm using vcxsrv from the ad-spam-ridden sourceforge. (it is really a shame to see what that site has become).


C:\Program Files\VcXsrv\vcxsrv.exe


See building libsigrok, but use the smunaut/libsigrok


sudo apt-get install git-core gcc make autoconf automake libtool
git clone https://github.com/sigrokproject/libserialport.git  
cd libserialport
./autogen.sh
./configure
make
sudo make install 



git clone https://github.com/smunaut/libsigrok.git smunaut-libsigrok
cd smunaut-libsigrok
./autogen.sh  
./configure
make
sudo make install


See build failure for smunaut/libsigrok #2

If after doing a make clean for pulseview, and an error like this is enountered:

$ make
[  1%] Automatic MOC for target pulseview
[  1%] Built target pulseview_autogen
make[2]: *** No rule to make target 'l10n/de.qm', needed by 'qrc_translations.cpp'.  Stop.
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/pulseview.dir/all' failed
make[1]: *** [CMakeFiles/pulseview.dir/all] Error 2
Makefile:151: recipe for target 'all' failed
make: *** [all] Error 2


The problem seems to be that make clean improperly deletes a couple of files:


gojimmypi:/mnt/c/workspace/pulseview
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        deleted:    l10n/de.ts
        deleted:    l10n/es_MX.ts
no changes added to commit (use "git add" and/or "git commit -a")
gojimmypi:/mnt/c/workspace/pulseview


So simply put them back:


git checkout master
git checkout l10n/de.ts
git checkout l10n/es_MX.ts  


Despite

gojimmypi:/mnt/c/workspace/smunaut-libsigrok
$ ./configure
...
Detected libraries (optional):
 - libserialport >= 0.1.1.......... 0.1.1


I still saw wthis error:

pulseview: error while loading shared libraries: libserialport.so.0: cannot open shared object file: No such file or directory  



sudo apt-get install libserialport-dev 



Copyright (c) gojimmypi all rights reserved. Blogger Image Move Cleaned: 5/3/2021 1:35:54 PM