Socketcan utils and test apps added to OpenEmbedded

Posted by Cliff Brake on 2009-01-28 | 3 Comments to Read

The Socketcan test applications and utilities are now available in OpenEmbedded.  The socketcan kernel modules already exist in OE.  To build and deploy:

get the latest version of OE metadata
bitbake socketcan-utils-test
scp <oedir>/build/angstrom-2008.1/tmp/deploy/glibc/ipk/<machine>/socketcan-utils-test_0.0+svnr917-r0_armv5te.ipk root@<target IP address>:

And then on the target system:

opkg install socketcan-utils-test_0.0+svnr917-r0_armv5te.ipk
opkg files socketcan-utils-test

/usr/bin/tst_bcm_rx_sendto
/usr/bin/tst_bcm_tx_sendto
/usr/bin/canlogserver
/usr/bin/tst_raw_filter
/usr/bin/tst_raw
/usr/bin/isotpsniffer
/usr/bin/isotpsend
/usr/bin/tst_bcm_throttle
/usr/bin/tst_packet
/usr/bin/vcan
/usr/bin/isotprecv
/usr/bin/cansniffer
/usr/bin/tst_bcm_tx_read
/usr/bin/tst_err
/usr/bin/log2asc
/usr/bin/tst_bcm_single
/usr/bin/tst_filter_master
/usr/bin/canplayer
/usr/bin/cangen
/usr/bin/slcanpty
/usr/bin/log2long
/usr/bin/tst_bcm_rtr
/usr/bin/asc2log
/usr/bin/slcan_attach
/usr/bin/tst_bcm_filter
/usr/bin/cansend
/usr/bin/canecho
/usr/bin/tst_filter_server
/usr/bin/tst_bcm_cycle
/usr/bin/tst_bcm_dump
/usr/bin/isotpdump
/usr/bin/candump
/usr/bin/tst_raw_sendto
/usr/bin/isotptun
/usr/bin/tst_bcm_server
/usr/bin/tst_proc
/usr/bin/canbusload
An impressive array of utilities!

Socketcan CAN-bus drivers added to OpenEmbedded

Posted by Cliff Brake on 2009-01-26 | 10 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 has the following files:
/lib/modules/2.6.27/extra/net/can/can-bcm.ko
/lib/modules/2.6.27/extra/drivers/net/can/sja1000/ems_pci.ko
/lib/modules/2.6.27/extra/net/can/can-raw.ko
/lib/modules/2.6.27/extra/drivers/net/can/sja1000/sja1000.ko
/lib/modules/2.6.27/extra/drivers/net/can/softing/softing.ko
/lib/modules/2.6.27/extra/drivers/net/can/sja1000/ems_pcmcia.ko
/lib/modules/2.6.27/extra/drivers/net/can/sja1000/sja1000_platform.ko
/lib/modules/2.6.27/extra/drivers/net/can/can-dev.ko
/lib/modules/2.6.27/extra/drivers/net/can/softing/softing_cs.ko
/lib/modules/2.6.27/extra/drivers/net/can/sja1000/pipcan.ko
/lib/modules/2.6.27/extra/drivers/net/can/mcp251x.ko
/lib/modules/2.6.27/extra/net/can/can.ko
/lib/modules/2.6.27/extra/net/can/can-isotp.ko
/lib/modules/2.6.27/extra/drivers/net/can/vcan.ko
Then to use [...]

Intel Atom vs TI OMAP3

Posted by Cliff Brake on 2009-01-22 | 5 Comments to Read

As we look at new projects, both the Intel Atom and the TI OMAP3 processors generate considerable interest.  As we have already shown, the OMAP3 does offer a considerable performance improvement over earlier generations of ARM CPUs.  The following video I found on YouTube shows a similar comparison of a OMAP3 and Atom systems rendering [...]

GTK performance on PXA270 vs. OMAP3

Posted by Cliff Brake on 2009-01-21 | 4 Comments to Read

Several of my customers have built applications using the GTK+ tookit.  While GTK+ works fairly well for what we have done, I have been wondering how the performance compares on the new Omap3 processors from TI. As we are evaluating the OMAP3 for several projects, I did a simple comparison with an existing application.  Below [...]

Fix for PXA270 MMC/SD Controller Write Corruption

Posted by Cliff Brake on 2009-01-17 | Be the First to Comment

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 [...]

Installing Ubuntu on a Core i7 DX58SO motherboard

Posted by Cliff Brake on 2009-01-15 | 6 Comments to Read

UPDATE:  2009-03-17 — It appears that hard drive issues I encountered are likely due to the HW RAID formatting on the drive I tried.  I just tried a brand new hard drive, and Ubuntu 8.10 installed flawlessly, and everything works.
I’m not sure why computer upgrades are always such an epic struggle for me, but here [...]

Switching to Wordpress

Posted by Cliff Brake on 2009-01-13 | 3 Comments to Read

After using Joomla for several years, I’m switching my web site to wordpress.  As I mostly use my site for writing technical articles, it makes sense to use something that works very well for just that.  So far, I’m finding Wordpress very polished, and it has all the functionality I need built-in, so I don’t [...]

How to implement an interrupt driven GPIO input in Linux

Posted by Cliff Brake on 2009-01-10 | 3 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 [...]

Using the Vala Programming Language in Embedded Systems

Posted by Cliff Brake on | Be the First to Comment

Recently I’ve been following the Vala programming language and using it some in embedded systems.  Vala is a new programming language that aims to bring modern programming features to GNOME developers without imposing additional runtime requirements and without using a different ABI compared to applications and libraries written in C.  A few notes and observations [...]

Mono 2.2 RC1 added to Openembedded

Posted by Cliff Brake on | Be the First to Comment

I recently added Mono 2.2 RC1 to OpenEmbedded.  The last usable version of Mono in Openembedded was 1.2.6, so this is a big step up.  Lots of interesting things have been happening since then (like Full Static Compilation) that continue to make Mono interesting for embedded.  There is still plenty to do yet such as [...]

How to evaluate VoIP providers with Asterisk

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

There are many options when selecting a VoIP provider to terminate your Asterisk PBX.  One of the most important factors in this selection is the quality of the internet connection between your PBX and the VoIP provider.  The route between you and your VoIP provider is one of the most important considerations when selecting a [...]

Implenting QoS for VOIP in a Linksys router

Posted by Cliff Brake on | Be the First to Comment

In our quest to implement an Asterisk PBX in our office, we are evaluating several VOIP (Voice Over IP) providers.  VOIP provides several benefits over traditional phone lines including:

low cost (typically around $0.02 per minute)
available in pre-paid plans
can support concurrent concurrent calls on the same number

However, implementing VOIP successfully is not trivial.  You must have [...]

Implementing Asterisk

Posted by Cliff Brake on | Be the First to Comment

Over the past month, we have been working on implementing Asterisk in our office.  Asterisk (http://www.asterisk.org/ ) is a complete software PBX (Private Branch Exchange) that runs on top of Linux.  Asterisk supports a number of features commonly found in a PBX including voicemail, hosted conferencing, call queuing, and many other features.  Having a real [...]

How to Optimize Python reads for general data

Posted by Cliff Brake on | Read the First Comment

The Python file object read() function acts a little differently than the standard read() found in C.  This article describes some of these differences and how to optimize reads for general continuous data streams such as reading data from a collection device through a pipe.
Python read()
The Python read function seems to be optimized for reading [...]

Tips for reading a serial data stream in Python

Posted by Cliff Brake on | 2 Comments to Read

Interfacing with a RS232 serial device is a common task when using Python in embedded applications.  The easiest way to get python talking to serial ports is use the pyserial project found at  http://pyserial.sourceforge.net/.  This module works on most platforms and is straightforward to use (see examples on project web site). However, getting the read [...]