System Architecture
Hardware Architecture and Inter-Processor Boundaries
The Korg Kronos workstation is structured as a heterogeneous dual-processor computing environment, partitioning tasks between general-purpose control and hard real-time signal generation:
- Host CPU (Intel Atom Z530): Operating at 1.6 GHz on an x86 32-bit architecture, the Host is responsible for running the operating system, orchestrating the GUI framework, and executing the core digital signal processing (DSP) synthesis engine.
- Coprocessor Subsystem (NKS4): Based on an ARM-core TI OMAP processor, this subsystem manages high-resolution display rendering, capacitive touch sensing, panel switches, rotary encoders, and high-fidelity audio codec data formatting.
graph TB
subgraph "Intel Atom (Host CPU)"
KERNEL[Linux 2.6.32 + RTAI]
OA[OA.ko - Synth Engine]
EVA[Eva - GUI Application]
NKS4MOD[OmapNKS4Module.ko]
VIDMOD[OmapVideoModule.ko]
AUDIODRV[KorgUsbAudioDriver.ko]
COMPORT[COM Port - 16550 UART]
end
subgraph "NKS4 Board (OMAP + Peripherals)"
OMAP[TI OMAP CPU]
ATMEL[Atmel CryptoMemory]
NV2AC[NV2AC Audio Codec]
LCD[800×600 LCD]
TOUCH[Touch Panel]
ENCODERS[Encoders + Buttons]
DAC[DAC → Analog Out]
ADC[ADC ← Analog In]
end
subgraph "Keybed Assembly"
PSOC[PSoC - Key Scanner]
KEYS[88-Key Keyboard]
end
KERNEL --> OA
KERNEL --> EVA
OA --> NKS4MOD
OA --> AUDIODRV
EVA --> VIDMOD
VIDMOD --> NKS4MOD
OA <--> COMPORT
NKS4MOD <-->|"USB 2.0 Interface"| OMAP
AUDIODRV <-->|"USB Isochronous Audio"| OMAP
COMPORT <-->|"16550 UART Interconnect"| PSOC
OMAP --> LCD
OMAP --> ATMEL
OMAP --> NV2AC
OMAP --> TOUCH
OMAP --> ENCODERS
PSOC --> KEYS
NV2AC --> DAC
ADC --> NV2AC
Keybed Interconnect Specification
A critical design characteristic of the Kronos hardware architecture is the separation of the keyboard interface from the primary USB control path. The key matrix scanning is managed by a dedicated PSoC microcontroller on the NKS4 board. Communication between the Host CPU's synthesis engine (CSTGKeybedInterface within OA.ko) and the PSoC keybed scanner occurs via a dedicated, physical 16550 UART serial link mapping directly to x86 I/O port addresses. This secondary, non-USB data path bypasses the USB polling latency and CPU scheduling jitter, ensuring sub-millisecond real-time keyboard event responsiveness.
Host Operating System and Runtime Environment
Kernel and Core Operating System Specifications
The Host environment executes a specialized, stripped-down Linux distribution tuned for low-latency embedded operations:
| Subsystem Component | Specification | Operational Role |
|---|---|---|
| Kernel | Linux 2.6.32 (32-bit x86 architecture) | Base operating system and hardware abstraction |
| Real-time Extension | RTAI 3.x (Real-Time Application Interface) | Orchestrates hard real-time kernel-space DSP tasks |
| Root Filesystem | ext3 on CompactFlash (Partition 2) | Persistent system storage |
| Init System | BusyBox init (/etc/rcS execution script) |
Directs initial hardware and driver loading sequence |
| Shell Environment | BusyBox ash | System command execution shell |
| C Standard Library | uClibc | Compact embedded standard library footprint |
Storage Subsystem Partition Layout
/
├── korg/
│ ├── Mod/
│ │ ├── OA.ko (Core synthesis engine)
│ │ ├── OmapVideoModule.ko (Coprocessor framebuffer driver)
│ │ └── KorgUsbAudioDriver.ko (Real-time USB audio/MIDI driver)
│ ├── Eva (GUI shell application)
│ └── ... (Resource files: presets, samples, configs)
├── sbin/
│ └── OmapNKS4Module.ko (Coprocessor USB control driver)
├── lib/modules/2.6.32/
│ └── rtai_*.ko (RTAI real-time infrastructure modules)
└── etc/
└── rcS (System initialization script)
System Boot and Drivers Loading Sequence
Upon Host power-on, the /etc/rcS init script executes a deterministic driver initialization chain:
- System Mounting: Essential filesystems are mounted, and the loopback network interfaces are established.
- Real-Time Bootstrapping: RTAI real-time modules (
rtai_hal.ko,rtai_sched.ko,rtai_sem.ko,rtai_fifos.ko) are loaded into the kernel space, configuring the secondary real-time hardware scheduler. - USB Control Path Probing:
OmapNKS4Module.kois loaded, registering the USB driver and initiating the NKS4 control protocol handshake. - Framebuffer Registration:
OmapVideoModule.kois initialized, registering the virtual framebuffer interface at/dev/fb1. - Application Launch: The GUI shell
Evais started in userspace, which internally mounts and loads the synthesis engineOA.koand the high-performance isochronous audio stream managerKorgUsbAudioDriver.ko.
Multi-Layered Defense-in-Depth and Anti-Analysis Mechanics
The Kronos incorporates several overlapping protective boundaries to defend system integrity, prevent software reverse-engineering, and enforce license constraints:
| Security Layer | Technical Implementation | Security Objective |
|---|---|---|
| Symbol Stripping | Total symbol removal in Eva; only essential API symbols exported in OA.ko |
Obstructs static and dynamic reverse-engineering of user-space logic |
| Identifier Obfuscation | Obfuscated name mapping for internal functions (e.g., bzzzzzzzzzzzt12) |
Increases complexity of static call-graph reconstruction |
| Cryptographic Licensing | Atmel AT88SC0204CA hardware auth validation via SetupAtmelForAuthorizations |
Restricts system operation to licensed hardware |
| Kernel-Space Execution | The primary DSP engine (OA.ko) operates in Ring 0 (kernel-space RTAI) |
Bypasses traditional user-space analysis vectors (e.g., ptrace, strace, LD_PRELOAD) |
| Console Locking | Unpopulated UART pads; production builds disable SSH and local TTY login shells | Prevents interactive system compromise |
| Proprietary Interconnect | Vendor-specific USB subclass matching (bInterfaceSubClass=0xFF) |
Restricts standard host operating system driver auto-matching |
| Relocation Integrity Monitoring | loadmod.ko hashes and verifies the memory layout of relocated binary modules |
Detects runtime software modifications |
Despite these extensive software-level integrity verification checks, the USB wire control protocol relies on unencrypted transmission. Therefore, the command packet sequences flowing across the physical USB bus are directly readable, establishing a reliable interface control specification.