Wednesday, September 30, 2026

Porting linux-3.0.4 on EM2440-III

EM2440-III Processor and Hardware Background

1. Processor Overview

The EM2440-III is an ARM9-based embedded development board built around the Samsung S3C2440A 32-bit RISC processor. The processor uses the ARM920T core and is typically operated at up to 400 MHz on the EM2440-III platform.

The S3C2440A was designed for low-power embedded applications and integrates several peripherals required for embedded system development. The ARM920T core includes an MMU and separate instruction and data caches, making the processor suitable for embedded Linux systems.

Key Processor Characteristics

FeatureDescription
ProcessorSamsung S3C2440A
CPU CoreARM920T
ArchitectureARM9 / 32-bit RISC
Typical CPU FrequencyUp to 400 MHz
MMUARM920T MMU
Cache16 KB Instruction + 16 KB Data
Bus ArchitectureAMBA
Target ApplicationsEmbedded Linux, industrial control, handheld devices

The S3C2440A integrates a wide range of peripherals, including memory controllers, UARTs, USB, LCD controller, GPIO, ADC, timers, PWM, RTC, I2C, I2S, SPI, SD/MMC and camera interfaces. The exact peripherals available on the EM2440-III depend on how the board exposes and connects them.


2. EM2440-III Hardware

The EM2440-III is built around the S3C2440A and provides the supporting memory and peripherals required for a complete embedded Linux platform.

Typical board configurations include:

  • Samsung S3C2440A ARM920T @ 400 MHz

  • 64 MB or 128 MB SDRAM

  • 64 MB to 1 GB NAND Flash, depending on configuration

  • 2 MB NOR Flash

  • Ethernet interface using the DM9000 Ethernet controller

  • USB Host/Device interfaces

  • UART interfaces

  • LCD interface

  • SD/MMC interface

  • Camera interface

  • Audio interface

  • GPIO

  • ADC

  • RTC

  • JTAG debugging interface

These specifications are documented by the EM2440-III manufacturer.


3. Relationship Between MINI2440 and EM2440-III

The Linux kernel already contains support for the MINI2440/SMDK2440 platform, which provides a useful starting point for the EM2440-III port.

The two platforms are based on the same Samsung S3C2440A processor, and therefore a significant portion of the processor-level support can be reused.

However, the EM2440-III has a different board-level hardware configuration and memory layout. Consequently, the existing MINI2440/SMDK2440 board support cannot necessarily be used without modification.

The main areas that need to be reviewed during the port include:

  • Memory map

  • SDRAM configuration

  • NAND Flash configuration

  • NOR Flash configuration

  • System clock

  • GPIO assignments

  • UART configuration

  • Ethernet configuration

  • LCD configuration

  • Machine type

  • Board-specific initialization

  • Device drivers

This is why the existing SMDK2440/MINI2440 support is used as a starting point, rather than treating the EM2440-III as an identical board.


4. Where to Get the Processor Documentation

The most important reference document for low-level development is the Samsung S3C2440A User's Manual / Datasheet.

It provides information about:

  • CPU architecture

  • Memory controller

  • Address map

  • Clock and power management

  • GPIO

  • UART

  • NAND controller

  • NOR Flash interface

  • USB

  • LCD controller

  • ADC

  • Timers/PWM

  • I2C

  • SPI

  • SD/MMC

  • Interrupt controller

  • DMA

  • Camera interface

A copy of the S3C2440A User's Manual is available through several archival/documentation sources.

Recommended reference:

S3C2440A User's Manual – Keil document archive

For historical Samsung documentation, the Internet Archive/Bitsavers collection also contains S3C2440 documentation, including the S3C2440A hardware design guide and user manuals.


5. Where to Get EM2440-III Board Documentation

The EM2440-III hardware documentation should be used together with the S3C2440A processor manual.

The manufacturer's documentation includes:

  • EM2440-III Hardware Manual

  • S3C2440A Datasheet

  • PCB dimensions

  • Linux installation/burning guide

  • Windows CE installation/burning guide

  • LCD documentation

  • Expansion-module documentation

The manufacturer's EM2440-III page provides these documents and board specifications.

Recommended board reference:

EM2440-III Hardware Manual

Manufacturer/product documentation:

EM2440-III Product Documentation


6. Source Code and Linux Support

For the Linux port, the following sources are useful:

Linux Kernel

The original Linux kernel source can be obtained from:

Linux Kernel Archives

For this port, the original documentation refers to Linux 3.0.4.

Existing S3C2440 Board Support

Within the Linux source tree, the following directories/files are particularly relevant:

arch/arm/mach-s3c2440/
arch/arm/plat-s3c24xx/
arch/arm/configs/
arch/arm/tools/mach-types

The MINI2440/SMDK2440 board support can be used as the initial reference implementation.


7. Recommended Documentation Set

For anyone maintaining or continuing the EM2440-III Linux port, the following documents should be kept together:

  1. S3C2440A User's Manual

    • Processor architecture and peripheral programming.

  2. EM2440-III Hardware Manual

    • Board-level memory map, peripherals, connectors and hardware configuration.

  3. EM2440-III Schematics

    • Exact GPIO, memory, NAND, Ethernet and peripheral connections.

  4. Linux Kernel Source

    • Existing S3C2440/MINI2440/SMDK2440 board support and drivers.

  5. Bootloader Source/Documentation

    • Machine type, boot arguments, memory initialization and kernel loading requirements.

  6. NAND Flash Datasheet

    • Device geometry, timing and NAND controller configuration.

  7. SDRAM Datasheet

    • Memory organization, timing and initialization parameters.


8. Hardware-to-Linux Porting Approach

A useful way to approach the EM2440-III port is to work from the hardware documentation toward the Linux board-support code:

EM2440-III Schematic
        |
        v
S3C2440A Memory / Peripheral Map
        |
        v
Board Hardware Configuration
        |
        v
Existing MINI2440 / SMDK2440 Support
        |
        v
Board-Specific Linux Changes
        |
        +---- Clock
        +---- Memory
        +---- NAND
        +---- GPIO
        +---- Ethernet
        +---- LCD
        +---- UART
        +---- Other peripherals
        |
        v
Kernel Build
        |
        v
Bootloader
        |
        v
EM2440-III Hardware Testing

This approach makes it easier to distinguish processor-specific code from board-specific code. The S3C2440A processor support can largely be reused, while the EM2440-III-specific hardware configuration must be verified against the board schematic and hardware manual.


9. Important Reference Links