Altera Nios-II Emulation (QEMU)

Overview

This board configuration will use QEMU to emulate the Altera MAX 10 platform. This configuration provides support for an Altera Nios-II CPU and these devices:

  • Internal Interrupt Controller
  • Altera Avalon Timer
  • NS16550 UART

Note

This board configuration makes no claims about its suitability for use with an actual ti_lm3s6965 hardware system, or any other hardware system.

Hardware

Supported Features

The following hardware features are supported:

Interface Controller Driver/Component
IIC on-chip Internal interrupt controller
NS16550 UART on-chip serial port
TIMER on-chip system clock

The kernel currently does not support other hardware features on this platform.

Devices

System Clock

This board configuration uses a system clock frequency of 50 MHz.

Serial Port

This board configuration uses a single serial communication channel with the CPU’s UART0.

If SLIP networking is enabled (see below), an additional serial port will be used for it.

Known Problems or Limitations

The following platform features are unsupported:

  • Memory protection through optional MPU. However, using a XIP kernel effectively provides TEXT/RODATA write protection in ROM.
  • Writing to the hardware’s flash memory
  • Serial port in Direct Memory Access (DMA) mode
  • Serial Peripheral Interface (SPI) flash
  • General-Purpose Input/Output (GPIO)
  • Inter-Integrated Circuit (I2C)
  • Ethernet

Programming and Debugging

Use this configuration to run basic Zephyr applications and kernel tests in the QEMU emulated environment, for example, with the Synchronization Sample:

cd $ZEPHYR_BASE/samples/synchronization
mkdir build && cd build

# Use cmake to configure a Ninja-based build system:
cmake -GNinja -DBOARD=qemu_nios2 ..

# Now run ninja on the generated build system:
ninja run

This will build an image with the synchronization sample app, boot it using QEMU, and display the following console output:

***** BOOTING ZEPHYR OS v1.8.99 - BUILD: Jun 27 2017 13:09:26 *****
threadA: Hello World from arm!
threadB: Hello World from arm!
threadA: Hello World from arm!
threadB: Hello World from arm!
threadA: Hello World from arm!
threadB: Hello World from arm!
threadA: Hello World from arm!
threadB: Hello World from arm!
threadA: Hello World from arm!
threadB: Hello World from arm!

Debugging

Refer to the detailed overview about Custom Board and SOC Definitions.

Networking

The board supports SLIP networking over an emulated serial port (CONFIG_NET_SLIP_TAP=y). The detailed setup is described in Networking with QEMU.