CHOST: i586 vs. i486 on AMD Geode LX

On my blog post about Installing Gentoo on ALIX.3D3 Mart Raudsepp made an interesting comment: He pointed out, that on AMD Geode CPUs it might be better to use i486 CHOST instead of my used i586, because the CPU is more like a i486 as far as instruction scheduling and times go.

This sounded interesting, so I googled for some benchmark test to measure differences. I found nbench, which measures performance by executing some typical algorithms and compares them to a Pentium 90 based system. So I installed it and run on the i586 CHOST system, then rebuild it completely to i486 CHOST and run it again. Continue reading →

GPIO on ALIX.3D3

The AMD CS5536 Geode companion on the ALIX.3D3 board has several general purpose input/output pins. Most of them have different functions as well, and there are some registers to set if they should be used as special function GPIO pins. The ALIX.3D3 uses 4 GPIO pins for 3 LEDs and 1 mode switch. Accessing the leds is very easy using the leds-alix2 driver, but they can be addressed as GPIO as well. There is already a driver for the GPIO pins in the kernel named cs5535_gpio.c, but it uses a non standard interface to communicate with kernel. So, I wrote a new kernel driver using the GPIO interface. Continue reading →

Using Geode's AES engine on ALIX.3D3

The AMD Geode LX800 CPU has an on-chip AES 128-bit crypto accelerations block and a true random number generator. Using this block for encryption and decryption is a lot faster than software implemented algorithms and it unloads the CPU. There are two main purposes where en/decryption is needed:

  • Storing files
  • Communication over network (IPSEC, OpenVPN, WPA2, ...)

I'll focus on the first point in this article using LUKS (Linux Unified Key Setup).

Continue reading →

Adding additional I²C sensors to ALIX.3D3

J8: SMBus

J8: SMBus

The manual of the ALIX.3D3 board mentions a lot of pin descriptions of all pin headers on the board. J8 interfaces the SMBus of the AMD CS5536 Geode companion (which is compatible to I²C if bus speed is below 100kHz, see Maxim’s Appnote for detailed comparison). So why not add additional I²C sensors. As an example I connected an LM75 temperature sensor.

First of all we need to add some pin headers to J8 found on board next to the USB port. Continue reading →