Understanding the NXP i.MX6UL Pin Mux (Part 2)

Posted by Cliff Brake on 2017-11-06 | Comments are off for this article

In the previous post, it was noted that bit 30 needs to be set in the i.MX6UL pad config if you want to read the state of a GPIO output.  Digging into this a bit more, we find the following text in the Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt file: SION(1 << 30): Software Input On Field. Force the selected mux […]

A Linux Kernel Tracing Tutorial

Posted by Cliff Brake on 2012-01-31 | Comments are off for this article

The Linux kernel has a fairly extensive tracing infrastructure that is quite useful for debugging.  There are a number of things you can do with tracing, but the focus of this article will be the traditional printk type debugging we often end up doing to trace initialization issues with a driver.  The following links provide […]

OMAP3 Resume Timing

Posted by Cliff Brake on 2009-12-07 | 3 Comments to Read

One of the most common power management modes for ARM processors is the suspend mode.  In this mode, peripherals are shut down when possible, the SDRAM is put into self-refresh, and the CPU is placed in a low power mode.  A useful bit of information is to know how soon the system can respond to […]

Linux kernel stats, and long term advantages

Posted by Cliff Brake on 2009-12-01 | Read the First Comment

I just read an interesting interview with Greg Kroah Hartman.  According to Greg, we add 11,000 lines, remove 5500 lines, and modify 2200 lines every single day.  This rate of change is something that few organizations have the resources to match.  It is interesting that Google chose to use the Linux kernel in the Android […]

Linux PM: OMAP3 Suspend Support

Posted by Cliff Brake on 2009-11-23 | 9 Comments to Read

This article provides an overview of the Linux kernel support for the suspend state in the TI OMAP3.  Power management has always been one of the more difficult parts of a system to get right.  The OMAP3 power management is quite extensive.  There are many levels of very granular control over the entire system.  Initially, […]

Integrated CAN solutions for Linux

Posted by Cliff Brake on 2009-11-19 | 3 Comments to Read

I just received an email notification from EMS (http://ems-wuensche.com/) that support for their CAN controllers is now in mainline Linux kernels.  The EMS PCI products are supported in 2.6.31, and the CPC-USB product will be supported in 2.6.32.  I’ve used various Linux CAN stacks in the past, but none were as well integrated as the […]

Best practices for kernel development with OpenEmbedded

Posted by Cliff Brake on 2009-10-13 | 2 Comments to Read

A common question is how do you do kernel development with OpenEmbedded?  Typically, OpenEmbedded builds a kernel by checking the source out of a git repository, or by applying patch files to a released version of the kernel.  See the many recipes for examples.  This works very well for a Linux distribution build system, but […]

Embedded Linux versus Windows CE

Posted by Cliff Brake on 2009-06-20 | Read the First Comment

Occasionally I am asked how Embedded Linux compares with Windows CE.  I have spent the past 5 years doing mostly embedded Linux development, and the previous 5 years doing mostly WinCE development with a few exceptions, so my thoughts are no doubt a little biased toward what I understand best.  So take this with a […]

Compulab cm-x270 kernel updated to 2.6.29 in OE

Posted by Cliff Brake on 2009-04-24 | Comments are off for this article

The cm-x270 kernel support in OpenEmbedded has just been updated to version 2.6.29.

Wi2Wi W2CBW003 Wifi/Bluetooth module review

Posted by Cliff Brake on 2009-03-19 | Read the First Comment

The Wi2Wi W2CBW003 is a highly integrated module that provides both Wifi and Bluetooth radios for embedded designs. This module is ideal for embedded designs, as it provides a lot of functionality in a small package and includes standard interfaces like SPI, SDIO and serial that connect with most embedded CPUs. With the availability of […]

Socketcan CAN-bus drivers added to OpenEmbedded

Posted by Cliff Brake on 2009-01-26 | 11 Comments to Read

I just added a recipe to OpenEmbedded to build the Socketcan kernel modules from the socketcan SVN.  So if you are using the latest OpenEmbedded metadata, you can: bitbake socketcan-modules scp <oedir>/build/angstrom-2008.1/tmp/deploy/glibc/ipk/<machine>/socketcan-modules_0.0+svnr917-r0_cm-x270.ipk  root@<target IP address>: and then on the target system: opkg install socketcan-modules_0.0+svnr917-r0_cm-x270.ipk opkg files socketcan-modules Package socketcan-modules (0.0+svnr917-r0) is installed on root and […]

Fix for PXA270 MMC/SD Controller Write Corruption

Posted by Cliff Brake on 2009-01-17 | Comments are off for this article

During system verification for a customer, we noticed occasional failures when writing to a SD card using the Marvell PXA270 MMC/SD controller.  The failure is a 4KB block of data is shifted on byte, where the first byte is duplicated and the last byte is dropped. The test app that found this problem is available […]

How to implement an interrupt driven GPIO input in Linux

Posted by Cliff Brake on 2009-01-10 | 8 Comments to Read

With Linux, some of the things that seem like they should be easy are not — at least at first glance.  For example, how do you read an interrupt driven GPIO input in a Linux application?  With simpler microcontroller systems, this is straightforward, but with a system like Linux, you have to navigate through several […]

Linux Input Testing and Debugging

Posted by Cliff Brake on 2009-01-09 | Read the First Comment

The Linux input layer has made a lot of progress in recent years.  When writing a new input driver (such as keyboard, trackball, etc), it is useful to be able to monitor input events using a test application.  This article describes two ways to accomplish this using kernel input debugging, and the evtest utility. kernel […]

Should you be using monotonic timers?

Posted by Cliff Brake on | Comments are off for this article

In a previous article (http://bec-systems.com/web/content/view/78/9/ ), I covered some of the basics of Linux timers.  Any time you are doing any type of fixed time delay in a program, you should really be using monotonic times, so the delay will not be affected by system time changes.  In an effort to save cost, some embedded […]