Freescale MPC5121e

From Noah.org
Revision as of 19:16, 10 January 2012 by Root (talk | contribs)
Jump to navigationJump to search


Cache Coherency

The cache coherency of the DMA arbiter in the v1.5 series of the 5121e is broken. It can be worked around if you use a MMU-less kernel, but for a standard Linux kernel be sure that you are working with at least the 2.0 version of the 5121e. Earlier versions will work for hours or day under moderate load before corrupting memory. The failure mode is rather subtle because the device IO cache can be corrupted, which may not immediately cause a kernel or userspace crash. File data and filesystems may be corrupted because bad data is written to dirty pages, which may eventually be written to disk. The problem is also not easily repeatable since it depends on the state of very low-level kernel buffers and the timing of data on the DMA bus. The best way to stress test for this kind of problem is to force the Linux kernel to use less than the full physical memory (kernel parameter mem=nn[MKG]), and stress the system with high process loads, high CPU loads, and high memory loads. Reboot the system periodically and run a full fsck to ensure that the filesystem is not corrupt.

framebuffer configuration

These are the settings for 480x272 video mode on the Freescale 5121e SOC (a PowerPC CPU core). Put these settings in the file, /etc/fb.modes. Then you should be able to set the mode using `fbset 480x272-60`.

mode "480x272-60"
    # D: 8.467 MHz, H: 16.800 kHz, V: 59.999 Hz
    geometry 480 272 480 272 32
    timings 118105 8 8 2 4 8 2
    vsync high
    csync high
    nonstd 10
    rgba 8/16,8/8,8/0,8/24
endmode

You can fine-tune the position of the display output using `fbset -move`. This changes the values found in the timings section. After moving the display as shown below you can run `fbset -s` to see how this has changed the timings section.

fbset -move down
fbset -move up
fbset -move left
fbset -move right

You can also investigate the values of kernel parameters in /sys/class/graphics/fb*. You can also modify some of the parameters live.

echo "0" > /sys/class/graphics/fbcon/cursor_blink
echo "1" > /sys/class/graphics/fbcon/cursor_blink

You can rotate the display. Note that this will also update the console dimensions shown by `stty -a`:

echo "1" > /sys/class/graphics/fbcon/rotate
echo "0" > /sys/class/graphics/fbcon/rotate