i.MX: SDMA not working? Strange things happen? Maybe it’s all about power...
I ran into a weird problem while attempting to enable SDMA for UARTs on an i.MX53 processor running Freescale’s 2.6.35.3 Linux kernel: To begin with, the UART would only transmit 48 bytes, which is...
View ArticleSOLVED: Lenovo Yoga 2 13″ with “hardware-disabled” Wifi
Overview Having a Lenovo Yoga 2 13″ (non-pro) running Ubuntu 14.04.1, I couldn’t get Wireless LAN up and running, as the WLAN NIC appeared to be “hardware locked”. This is the summary of how I solved...
View Articleiowrite32(), writel() and memory barriers taken apart
Introduction Needing to remove superfluous memory barriers from a Linux kernel device driver, I wondered what they actually do. The issue is discussed down to painful detail in...
View ArticlePlaying with Linux namespaces
Intro Linux namespaces is the foundation for container-based virtualization, which is becoming increasingly popular. Aside from the ability to isolate a shell (and the processes it generates) from the...
View ArticleLinux: Yet Another Google Chrome “Aw, snap” solved.
“Aw, snap” in Google Chrome happens when a process (or thread?) involved with Chrome dies unexpectedly. I got quite a few of those, and learned to live with them for about a year, as I couldn’t figure...
View ArticleLinux kernel compilation jots
Just a few notes to self as I compiled a kernel on a x86_64 machine, targeting an i386. Kind-of cross-compilation, but with no need for a cross compiler. Remember to update the (extra) version number...
View Articlesyslogd notes
A few jots on playing with the system logger (the one that writes to /var/log/messages) on an ancient CentOS 5.5. First, check the version: It says Oct 6 15:12:06 diskless syslogd 1.4.1: restart. So...
View ArticleLinux kernel hack for calming down a flood of PCIe AER messages
While working on a project involving a custom PCIe interface, Linux’ message log became flooded with messages like pcieport 0000:00:1c.6: device [8086:a116] error status/mask=00001081/00002000 pcieport...
View ArticleUsing cgroups to force RAM swapping for implementing an Arria 10 design
The problem I needed to implement an FPGA design for an Arria 10 chip with Quartus 15 on a Linux machine. According to Altera’s requirement page, (“Memory recommendations” tab), the computer should...
View ArticleRaspberry Pi 3 notes
These are messy, random notes that I took while setting up my little Raspberry Pi 3. Odds are that by the time you read this, I’ve replaced it with a mini-PC. So if you ask a question, my answer will...
View ArticleLinux and DVB: Failing with a Sin Hon TDH 601 / HD809 USB dongle
General These are my jots as I attempted to use an DVB USB dongle to receive digital TV in Haifa, Israel. Spoiler: I never managed to get my dongle working properly. Maybe because it was faulty to...
View ArticleLinux Device Tree: What those status = “okay” are about
There are a lot of “okay” assignments in the kernel’s device tree. For example, arch/arm/boot/dts/zynq-zed.dts starts with /dts-v1/; #include "zynq-7000.dtsi" and later on there’s, among others,...
View ArticleLinux kernel: /proc/iomem-like output to kernel log during boot
In order to have something similar to /proc/iomem printed out to the console (and dmesg), this piece of code can be implanted somewhere in the kernel code (in my case it was...
View ArticleLinux: Where the USB related kernel files are
A few notes on where to find USB related kernel files on a Linux system (kernel 3.12.20 in my case) $ lsusb [ ... ] Bus 001 Device 059: ID 046d:c52b Logitech, Inc. Now find the position in the tree. It...
View ArticleNXP / Freescale i.MX6 as an SPI slave
Motivation Even though SPI is commonly used for controlling rather low-speed peripherals on an embedded system, it can also come handy for communicating data with an FPGA. When using the official Linux...
View ArticleNXP / Freescale SDMA and the art of accessing peripheral registers
Preface While writing a custom SDMA script for copying data arriving from an eCSPI peripheral into memory, it occurred to me that there is more than one way to fetch the data from the peripheral. This...
View ArticleLubuntu 16.04 on ARM: Turning off the “Suspend” etc. options
In short On an embedded ARM-based Lubuntu 16.04, I had LXDE’s logoff dialog window offering suspend as an option, and when that was chosen, the system got itself into some nasty state with network and...
View ArticleSoft Linux kernel hacking for dumping ULPI commands to USB PHY
Ever wanted to see how the a Linux USB host talks with its PHY with ULPI commands? Probably not. But if you do, here’s how I did it on a Zynq device, connected to an USB3320 USB 2.0 PHY chip. Note...
View ArticleXilinx’ Zynq Z007s: Is it really single core?
Introduction Xilinx’ documentation says that XC7Z007S, among other “S” devices, is a single-core device, as opposed to, for example, its older brother XC7Z010, which is dual-core. So I compared several...
View Article5 GHz Wifi access point on Linux Mint 19 / Atheros
+ how to just compile an Ubuntu distribution kernel without too much messing around. Introduction It’s not a real computer installation if the Wifi works out of the box. So these are my notes to self...
View Article