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.
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
iceprogbefore 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
dfu-util, the iCEBreaker does NOT need that when using
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:
or from WSL:
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
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
sudo apt-get install libzip-dev
Ok, now to run
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 ===============================================================================
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
doxygentoo, and then one more
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 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
vcxsrvfrom the ad-spam-ridden sourceforge. (it is really a shame to see what that site has become).
See building libsigrok, but use the
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 cleanfor pulseview, and an error like this is enountered:
$ make [ 1%] Automatic MOC for target pulseview [ 1%] Built target pulseview_autogen make: *** 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: *** [CMakeFiles/pulseview.dir/all] Error 2 Makefile:151: recipe for target 'all' failed make: *** [all] Error 2
The problem seems to be that
make cleanimproperly 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
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