32-bit Linux for DB410c?


#1

Hi all, first time poster.

I downloaded the Debian Stretch 64-bit OS image and loaded it on my DB410c. Now I would like to try a 32-bit Linux instead. I have been unable to find a downloadable image. Can anyone recommend one? Thanks.

Matt


#2

i don’t think we have any 32 bit image ‘ready’ to use. but it has been tested, and it works. the kernel will still be a 64 bit kernel, as we don’t support (and don’t plan to) 32-bit kernel for APQ8016.

you can create a 32 bit debian rootfs with debootstrap (or any other linux distro). If you want to use OE builds, it might be simpler since we have a special 32 bit machine for db410c, see https://github.com/ndechesne/meta-qcom/blob/master/conf/machine/dragonboard-410c-32.conf.


#3

Wow thanks for the ultra fast response.

I don’t believe the 64-bit kernel will be a problem. My requirement for a 32-bit OS comes from a 32-bit DIO native library that loads into a 32-bit JVM. I’m stuck without a 64-bit version of that lib.

I got the 64-bit OS and 64-bit JVM already working properly on Debian 64-bit. However the 32-bit JVM is ignored as not a runnable binary. I figured a 32-bit OS would do it. If you can think of another way to run a 32-bit process on the 64-bit Debian, that’s okay too.

Matt


#4

Ha, as soon as I wrote down my actual problem, another solution struck me: try crossgrading the 64-bit Debian with a 32-bit architecture, specifically armhf. I followed the steps in the comment for doing exactly that on this site (https://github.com/openhab/openhabian/issues/57) and now the 32-bit JVM runs okay. I can now try the 32-bit DIO lib too.

Thanks again for the quick response. It forced me to rethink my problem. Cheers.

Matt


#5

right, you’ve done the right thing! Debian has support for multi-arch, so you can install arm64 and armhf packages on the same rootfs and run 32 and 64 applications (simultaneously).


#6

Now that I have that working, I do have another level of questions. My DIO library provides access to I2C. I’ve wired in my I2C device (Adafruit Bicolor LED matrix https://www.adafruit.com/product/902) and it will not communicate. I’ve tried wiring it into either i2c-0 and i2c-1. However those don’t show as having any devices when issuing ‘i2cdetect’. Only i2c-3 shows up with any devices when issuing ‘i2detect -y -r 3’. The DB410c only routes i2c-0 and i2c-1 to the low speed connector, which was the connector I planned to use. Is there anything I need to do to enable i2c-0 or i2c-1 to use them? This is on the Debian 9.1 OS image. Any clues appreciated.

BTW, I know the LED matrix generally works because it works on an Arduino Uno, and RPi 3 and an Edison. Those yet are already 3.3V instead of 1.8V. If I need a level shifter, I will chase that down next.


#7

Yes, you need a level shifter :wink:

With a shifter (I used the 96boards-sensors board) I’m able to drive SSD1306 based displays via I2C on DB410C. I even made a video:

Note that the audio mezz is one of the cheapest ways to get a level shifter for 96Boards platforms right now. However be warned that the level shifters on audio mezz board do not tolerate long wires (in the video you will see a long wire between the mezzanine board and the display. Long wires will result in false triggers the edge detection logic in the shifters causing corrupt data (96boards-sensors does not have edge detection in the level shifters; so it cannot clock the bus a fast but does tolerate longer wires). Anyhow, if you use an audio mezz then keep your wires as short as possible!


#8

Thanks Daniel.

I will give the sensors board a try as next step.I also picked up a few different level shifters from Adafruit. Hopefully one of them will win out in the end. BTW, I can keep the wires short in any case.

Much appreciate the support!!! Great forum.

Matt