wiki:TBR/BSP/Leon3

Version 12 (modified by Daniel, on 04/19/12 at 13:15:02) (diff)

Leon3

This BSP is for the LEON3 SPARC V8 processor developed by Aeroflex Gaisler. LEON3 is available as a synthesizable VHDL model, allowing custom implementations on FPGA and/or ASIC. The LEON3 BSP probes AMBA Play&Play information for basic peripherals such as interrupt controller, timer, and UART. Probing the Plug&Play makes it possible for the LEON3 BSP to supports many LEON3 based controllers and boards. The LEON3 BSP has also support for the LEON4. The basic peripherals supported:

  • IRQMP, IRQAMP
  • GPTIMER
  • APBUART

The BSP supports three network interfaces: the GRETH 10/100/1000, the Opencores Ethernet MAC and the LAN91C111 i/f.

  • Ethernet (GRETH 10/100/1000)
  • PCI, GRPCI
  • CAN, GRCAN
  • CAN, OC_CAN (Opencores CAN GRLIB wrapper)
  • 1553, 1553BRM
  • SpaceWire?, GRSPW
  • PCI drivers to RASTA, Companion Chip

System Console

The LEON3 BSP has support for the RTEMS console interface and the debug UART interface (printk). The first UART found is by default selected as debug and system console. However, it is possible to override the default settings by declaring a integer named 'debug_uart_index' or/and the 'syscon_uart_index'. Setting the variable to N will select the Nth UART for either debug UART or system console. Note that on a AMP system (RTEMS MP) the default is to user APBUART[0] for CPU0, APBUART[1] for CPU1 and so on.

/dev/console_a is by default renamed /dev/console and assigned minor=0, but the user can select /dev/console_['a'+N] to be renamed to /dev/console by setting syscon_uart_index=N. See table below.

{| class="wikitable" border="1" cellspacing="1" cellpadding="5"

! MINOR ! DEVICE FILE SYSTEM NAME ! UART

| 0 | /dev/console | Default APBUART[0], user selectable through 'syscon_uart_index'

| 1 | /dev/console_a | APBUART[0] (missing by default)

| 2 | /dev/console_b | APBUART[1]

| .. | |

|}

On a MP system the console renamed to /dev/console is selected by CPU index (LEON3_Cpu_Index). /dev/console_+ LEON3_Cpu_Index? is renamed unless overridden. Resource sharing is performed by the user, one should not open/access a console that another OS instance uses.

The console driver can operate in polling mode or interrupt mode, which mode is used is selected at compile time using the CONSOLE_USE_INTERRUPT configuration option. All UARTs are operate in the same mode.

Console forwarding to GRMON

With the -u option to GRMON, GRMON will set one UART in "debug-mode" or loop-back (older hardware) mode in order to tunnel the UART output/input over the debug-link to the PC instead of at the physical UART connector of the PCB.

Note that it is not possible to use the interrupt mode of the driver together with the "old" APBUART and -u to GRMON. However the new APBUART core (from GRLIB 1.0.17-b2710) has the GRMON debug bit and can handle interrupts. Please see the GRMON manual.

Boards

The startup procedure for LEON BSPs is explained in SparcBSPStartup.

Test Reports

4.6.4: User:Jiri? reports that it runs fine on the TSIM simulatior, and boards from Pender

4.6.99.2: User::Jiri? reports that it runs fine on the TSIM simulator, and on boards from Pender

4.6.99.3: runs on GR-XC3S-1500 board - tested with networking (greth)

4.7.99.2: User:Daniel? Sep 5 2007, Tested GRETH 10/100, B1553BRM(on RASTA over PCI, on Companion Chip over PCI, direct), GRCAN(on RASTA over PCI), OC_CAN(on Companion Chip over PCI, direct)