Processor advice sought

76 views
Skip to first unread message

Leslie Smith

unread,
Dec 29, 2020, 10:25:10 AM12/29/20
to jaer-users
I want to install my silicon cochlea (DAS1) at home as lab access is difficult due to COVID. Currently it runs un per Windows which I hate. I'm a Mac user, but I understand that's not going to work easily, and anyway I'd rather have a dedicated machine to run the DAS1. I'd *like* to go for an ARM based linux system (small, cheaper, better instruction set). Anyone have any experience of this? 

Tobi Delbruck (INI)

unread,
Dec 30, 2020, 1:53:16 AM12/30/20
to jaer-...@googlegroups.com

Hi Leslie, there is a bit of action about this recently but it is complicated mainly because of the very complex configuration of DAS that occurs within CochleaAMS1c Biasgen. Turning the jAER code into pyaer config, for example, is not so simple.  We are happy to have help with it.

Most users will not need the complex GUI to configure the mole of options that we provide in the jAER GUI that was intended for the chip developers to explore all possible options, e.g. the individual channel equalizer calibration bits, the multiple options for cascaded versus parellel, the off-chip vs on-chip DAC controls. It is complicated!  Ideally there would just be one working config file that pyaer would load that only the chip developers could understand how to modify. But the pyaer code that loads all the configuration to the PCB Cypress FX2, FPGA, and cochlea chip needs to be ported, and it will take some real work to do this.

Tobi

Tobi Delbruck (UZH-ETH)

unread,
Dec 30, 2020, 1:59:51 AM12/30/20
to jaer-...@googlegroups.com
There is probably an easier path, which is to get the jAER USB driver
interface working with libUSB on linux for the DAS. As I recall, we are
still using the windows Thesycon drivers for DAS which are only for
Windows. To build the equivalent libUSB jAER class for cochlea is much
more straightforward in my opinion than porting the configuration
loading to python. But I'm not 100% sure about this.

Leslie Smith

unread,
Dec 30, 2020, 9:55:21 AM12/30/20
to jaer-users
Hi Toby:

Looking at CochleaAMS1cHardwareInterface.java in 
jaer-1.8.1.8/src/net/sf/jaer/hardwareinterface/usb/cypressfx2libusb
it looks as though the Thesycon drivers are commented out, and

import net.sf.jaer.hardwareinterface.usb.cypressfx2libusb.CypressFX2;
import net.sf.jaer.hardwareinterface.usb.cypressfx2libusb.CypressFX2Biasgen;

lines suggest the Cypress FX2 driver is being used. 

... I fear I may be in danger of trying something too complicated for myself on my own: maybe I should just buy a cheapish linux Intel box after all! I'll preserver a little further first...

Is here anyone at Zurich (or indeed, anywhere else) who is actually working on this?

all the best, Leslie.

Leslie Smith

unread,
Jan 26, 2021, 9:39:20 AM1/26/21
to jaer-users
Well, I now have an Odroid N2+, running Ubuntu 20, and Netbeans, with the Java 1.8 compiler. Still leaning Linux...

Compiling  ?seems? to to go (no clear errors issued, but I'm not that convinced...), but running (without my Si Cochlea plugged in, it's still at the Uni), I get
Jan 26, 2021 2:32:48 PM net.sf.jaer.util.LoggingThreadGroup uncaughtException
WARNING: Thread[AWT-EventQueue-1,6,main]
Jan 26, 2021 2:32:48 PM net.sf.jaer.util.LoggingThreadGroup uncaughtException
WARNING: java.lang.UnsatisfiedLinkError: Can't load library: /home/odroid/Documents/jaer-master/natives/linux-aarch64//libgluegen-rt.so
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1820)
at java.lang.Runtime.load0(Runtime.java:810)
at java.lang.System.load(System.java:1088)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:624)
at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:63)
at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:106)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:487)
at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:421)
at com.jogamp.common.os.Platform$1.run(Platform.java:317)
at java.security.AccessController.doPrivileged(Native Method)
at com.jogamp.common.os.Platform.<clinit>(Platform.java:287)
at com.jogamp.opengl.GLProfile.<clinit>(GLProfile.java:147)
at net.sf.jaer.JAERViewer.<init>(JAERViewer.java:135)
at net.sf.jaer.JAERViewer.<init>(JAERViewer.java:75)
at net.sf.jaer.JAERViewer$3.run(JAERViewer.java:686)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at org.GNOME.Accessibility.AtkWrapper$6.dispatchEvent(AtkWrapper.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)


Loading version info from resource BUILDVERSION.txt
Version URL=file:/home/odroid/Documents/jaer-master/build/classes/BUILDVERSION.txt

-- listing properties --
java.version=11.0.9.1
java.vendor=Ubuntu
os.version=4.9.241-108
os.name=Linux
"=git describe" output: 
Built=January 26 2021 at 1417 by odro

The critical line is I think

/home/odroid/Documents/jaer-master/natives/linux-aarch64//libgluegen-rt.so

which has 2 /'s: there is a library

/home/odroid/Documents/jaer-master/natives/linux-aarch64/lib/libgluegen_rt.so

Any suggestions gratefully received!

Leslie Smith

Tobi Delbruck (UZH-ETH)

unread,
Jan 26, 2021, 10:57:22 AM1/26/21
to jaer-...@googlegroups.com
Hah, this is pretty amazing. But I think you may be quite hard pressed
to find JOGL for this platform.   You are facing the fact that there is
a complex java wrapper around the (very complex) OpenGL API.  If it has
been ported to this ARM processor then you might get it to work. You can
start by looking on the JOGL pages. It's a bit complicated but we can
try to help.


Leslie Smith

unread,
Jan 29, 2021, 7:15:14 AM1/29/21
to jaer-users

Well, I'm not further forward: I looked thru the various setup files for inspiration, and looked at ivy.xml: this didn't have the architecture/OS I was using in the dependencies anywhere, so I added lines like

<artifact name="opencv" type="jar" ext="jar" m:classifier="linux-arm64"/>

trying aarch64 and arch64 as well. All that produced was errors like

        [FAILED     ] org.jogamp.gluegen#gluegen-rt;2.3.2!gluegen-rt.jar:  (0ms)
    ==== shared: tried
      /home/odroid/.ivy2/shared/org.jogamp.gluegen/gluegen-rt/2.3.2/jars/gluegen-rt.jar
    ==== public: tried
      https://repo1.maven.org/maven2/org/jogamp/gluegen/gluegen-rt/2.3.2/gluegen-rt-2.3.2-natives-linux-arm64.jar

which didn't help a lot. I've not used ivy before...

I may (of course) be barking up the wrong tree here...

Any ideas? Currently, it appears to build, shows me the splash screen, then fails as described earlier.

--Leslie.

Leslie Smith

unread,
Jan 29, 2021, 1:25:33 PM1/29/21
to jaer-users
Looked at what was actually in the repository, and altered ivy.xml to look for files that were present... fixed the compilation error, but took me straight back to the original error. Oh well. Needs more inspiration. Possibly whisky.

Tobi Delbruck (UZH-ETH)

unread,
Feb 1, 2021, 3:56:40 AM2/1/21
to jaer-...@googlegroups.com
Yes, sorry Leslie, I can try to look for embedded OpenGL for ARM but it
will be hard for me to debug it without the hardware. Unfortunately this
is not a satisfying answer... sorry.

Leslie Smith

unread,
Feb 1, 2021, 6:13:52 AM2/1/21
to jaer-users

I don't think that's the issue - the OpenGL stuff seems to be there. But what I don't understand is why the system is looking for files in the (impossible) directory 

 /home/odroid/Documents/jaer-master/natives/linux-aarch64//libgluegen-rt.so

I'm logged in as odroid, and the subdirectory jaer-master is where the files are. But there's a // in the path - and that's not allowed, obviously.

--Leslie

Leslie Smith

unread,
Feb 1, 2021, 10:34:04 AM2/1/21
to jaer-users
Installed OpenGL from http://www.codebind.com/linux-tutorials/install-openGL-ubuntu-linux/ , tested it in C++: Didn't make any difference to jAER.
Reply all
Reply to author
Forward
0 new messages