mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-29 23:40:03 +00:00
imx31: remove platform completely (fix #1360)
This commit is contained in:
parent
0f18ecc142
commit
901bff813d
@ -16,10 +16,7 @@ For further target specific informations, have a look at
|
|||||||
'<GENODE_DIR>/repos/base-hw/doc/<TARGET>.txt' where '<TARGET>'
|
'<GENODE_DIR>/repos/base-hw/doc/<TARGET>.txt' where '<TARGET>'
|
||||||
is one of the following:
|
is one of the following:
|
||||||
|
|
||||||
'pbxa9' - Realview PBXA9
|
'panda' - PandaBoard A2
|
||||||
'vea9x4' - Versatile Express A9X4
|
|
||||||
'imx31' - Freescale i.MX31
|
|
||||||
'panda' - PandaBoard A2
|
|
||||||
|
|
||||||
|
|
||||||
Prerequisites
|
Prerequisites
|
||||||
@ -61,10 +58,14 @@ build directory you want to create, and the hardware target to run Genode on.
|
|||||||
Where '<TARGET>' is one of the following, depending on the hardware system
|
Where '<TARGET>' is one of the following, depending on the hardware system
|
||||||
you aim at:
|
you aim at:
|
||||||
|
|
||||||
'pbxa9' - Realview PBXA9
|
'arndale' - Arndale (Exynos5) board
|
||||||
'vea9x4' - Versatile Express A9X4
|
'imx53' - i.MX53 based board
|
||||||
'imx31' - Freescale i.MX31
|
'imx53_tz' - i.MX53 based board using TrustZone
|
||||||
'panda' - PandaBoard A2
|
'odroid_xu' - Odroid XU (Exynos5) board
|
||||||
|
'panda' - PandaBoard A2
|
||||||
|
'pbxa9' - Realview PBXA9
|
||||||
|
'rpi' - Raspberry PI
|
||||||
|
'vea9x4' - Versatile Express A9X4
|
||||||
|
|
||||||
Please notice that not all of these targets might be emulateable with Qemu.
|
Please notice that not all of these targets might be emulateable with Qemu.
|
||||||
To be on the safe side use 'pbxa9'. For informations about how to boot
|
To be on the safe side use 'pbxa9'. For informations about how to boot
|
||||||
|
@ -1,92 +0,0 @@
|
|||||||
|
|
||||||
==================================================
|
|
||||||
Getting started with 'base-hw' on Freescale i.MX31
|
|
||||||
==================================================
|
|
||||||
|
|
||||||
|
|
||||||
Martin Stein
|
|
||||||
|
|
||||||
Abstract
|
|
||||||
########
|
|
||||||
|
|
||||||
This is a short tutorial that depicts a handy way to get a Genode ELF-image,
|
|
||||||
build with 'base-hw', started on the Freescale i.MX31. For informations
|
|
||||||
about how to build Genode images with 'base-hw', have a look at
|
|
||||||
'<GENODE_DIR>/repos/base-hw/doc/hw.txt'. This tutorial is dedicated to common
|
|
||||||
Linux systems, but all examples originate from a Ubuntu 11.10.
|
|
||||||
|
|
||||||
|
|
||||||
Tutorial
|
|
||||||
########
|
|
||||||
|
|
||||||
Connect the i.MX31 to your local Ethernet through its RJ45 connector.
|
|
||||||
Additionally connect the i.MX31 to your machine through its COM port.
|
|
||||||
We use the bootloader that is installed on the board by the manufacturer, it's
|
|
||||||
the LogicLoader by Logic Product Development, Version 2.3.5-IMX31_10 0001.
|
|
||||||
Now install the following packages to communicate with the i.MX31:
|
|
||||||
|
|
||||||
! apt-get install tftp-hpa minicom
|
|
||||||
|
|
||||||
Open '/etc/default/tftpd-hpa' with a text editor and ensure that it has
|
|
||||||
the following content:
|
|
||||||
|
|
||||||
! TFTP_USERNAME="tftp"
|
|
||||||
! TFTP_DIRECTORY="/var/lib/tftpboot"
|
|
||||||
! TFTP_ADDRESS="0.0.0.0:69"
|
|
||||||
! TFTP_OPTIONS="-l"
|
|
||||||
|
|
||||||
Tell TFTP wich image to provide:
|
|
||||||
|
|
||||||
! cd /var/lib/tftpboot/
|
|
||||||
! ln -s <GENODE_BOOT_ELF> image.elf
|
|
||||||
|
|
||||||
Where '<GENODE_BOOT_ELF>' is the absolute path of the targeted ELF image.
|
|
||||||
Start TFTP to enable the upload of the image:
|
|
||||||
|
|
||||||
! service tftp-hpa restart
|
|
||||||
|
|
||||||
Precautionary determine the inet address of your TFTP machine:
|
|
||||||
|
|
||||||
! ifconfig
|
|
||||||
|
|
||||||
Start Minicom in configuration mode:
|
|
||||||
|
|
||||||
! minicom -s
|
|
||||||
|
|
||||||
Go to 'Serial port setting' and ensure that the device is set to the
|
|
||||||
TTY of the COM port you've conntected the i.MX31 with. In my case it was
|
|
||||||
'/dev/ttyS0'. Configure the other settings for a baud rate of '115200',
|
|
||||||
8 bit char length, no parity and 1 stop bit. Quit Minicom and start
|
|
||||||
it once more in a dedicated terminal:
|
|
||||||
|
|
||||||
! minicom
|
|
||||||
|
|
||||||
Plug in the i.MX31 power connector or push the 'S1' button if the i.MX31 is
|
|
||||||
already powered. Minicom should now show the following message below some
|
|
||||||
bootloader info:
|
|
||||||
|
|
||||||
! losh>
|
|
||||||
|
|
||||||
We have to start DHCP first, so in the Minicom console type:
|
|
||||||
|
|
||||||
! ifconfig sm0 dhcp
|
|
||||||
|
|
||||||
Wait until DHCP is started:
|
|
||||||
|
|
||||||
! Starting DHCP on sm0 ...
|
|
||||||
! losh>
|
|
||||||
|
|
||||||
Then load the Genode image:
|
|
||||||
|
|
||||||
! load elf /tftp/<INET_ADDR>:/var/lib/tftpboot/image.elf
|
|
||||||
|
|
||||||
Where '<INET_ADDR>' is the inet address of your TFTP machine.
|
|
||||||
To execute the loaded image type:
|
|
||||||
|
|
||||||
! exec start
|
|
||||||
|
|
||||||
Now your Genode scenario should start and offer its debug output
|
|
||||||
in Minicom. You can boot other images by redirecting the link
|
|
||||||
'/var/lib/tftpboot/image.elf' accordingly, restarting your i.MX31
|
|
||||||
and instructing LogicLoader again as described above.
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
|||||||
#
|
|
||||||
# \brief Build config for Genodes core process
|
|
||||||
# \author Martin Stein
|
|
||||||
# \date 2012-10-04
|
|
||||||
#
|
|
||||||
|
|
||||||
# add include paths
|
|
||||||
INC_DIR += $(REP_DIR)/src/core/include/spec/imx31
|
|
||||||
INC_DIR += $(REP_DIR)/src/core/include/spec/imx
|
|
||||||
|
|
||||||
# add C++ sources
|
|
||||||
SRC_CC += platform_services.cc
|
|
||||||
SRC_CC += spec/imx31/platform_support.cc
|
|
||||||
|
|
||||||
# include less specific configuration
|
|
||||||
include $(REP_DIR)/lib/mk/arm_v6/core.inc
|
|
@ -1,18 +0,0 @@
|
|||||||
#
|
|
||||||
# \brief Build configurations for 'base-hw' on Freescale i.MX31
|
|
||||||
# \author Martin Stein
|
|
||||||
# \date 2011-12-20
|
|
||||||
#
|
|
||||||
|
|
||||||
# denote wich specs are also fullfilled by this spec
|
|
||||||
SPECS += hw platform_imx31 epit
|
|
||||||
|
|
||||||
# configure multiprocessor mode
|
|
||||||
NR_OF_CPUS = 1
|
|
||||||
|
|
||||||
# set address where to link the text segment at
|
|
||||||
LD_TEXT_ADDR ?= 0x82000000
|
|
||||||
|
|
||||||
# include implied specs
|
|
||||||
include $(call select_from_repositories,mk/spec-hw.mk)
|
|
||||||
include $(call select_from_repositories,mk/spec-platform_imx31.mk)
|
|
@ -18,14 +18,14 @@
|
|||||||
#include <board.h>
|
#include <board.h>
|
||||||
|
|
||||||
/* Genode includes */
|
/* Genode includes */
|
||||||
#include <drivers/uart/imx31_uart_base.h>
|
#include <drivers/uart/imx_uart_base.h>
|
||||||
|
|
||||||
namespace Genode
|
namespace Genode
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Serial output driver for core
|
* Serial output driver for core
|
||||||
*/
|
*/
|
||||||
class Serial : public Imx31_uart_base
|
class Serial : public Imx_uart_base
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ namespace Genode
|
|||||||
*
|
*
|
||||||
* XXX: The 'baud_rate' argument is ignored for now.
|
* XXX: The 'baud_rate' argument is ignored for now.
|
||||||
*/
|
*/
|
||||||
Serial(unsigned) : Imx31_uart_base(Board::UART_1_MMIO_BASE) { }
|
Serial(unsigned) : Imx_uart_base(Board::UART_1_MMIO_BASE) { }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,102 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Board driver for core
|
|
||||||
* \author Martin Stein
|
|
||||||
* \date 2012-11-01
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _BOARD_H_
|
|
||||||
#define _BOARD_H_
|
|
||||||
|
|
||||||
/* Genode includes */
|
|
||||||
#include <drivers/board_base.h>
|
|
||||||
|
|
||||||
namespace Genode
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* AHB-lite 2v6 to IP bus interface
|
|
||||||
*/
|
|
||||||
class Aips : public Mmio
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Configuration of the masters
|
|
||||||
*/
|
|
||||||
struct Mpr { enum { ALL_UNBUFFERED_AND_FULLY_TRUSTED = 0x77777777 }; };
|
|
||||||
struct Mpr1 : Register<0x0, 32>, Mpr { };
|
|
||||||
struct Mpr2 : Register<0x4, 32>, Mpr { };
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configuration of the platform peripherals
|
|
||||||
*/
|
|
||||||
struct Pacr { enum { ALL_UNBUFFERED_AND_FULLY_UNPROTECTED = 0 }; };
|
|
||||||
struct Pacr1 : Register<0x20, 32>, Pacr { };
|
|
||||||
struct Pacr2 : Register<0x24, 32>, Pacr { };
|
|
||||||
struct Pacr3 : Register<0x28, 32>, Pacr { };
|
|
||||||
struct Pacr4 : Register<0x2c, 32>, Pacr { };
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configuration of the off-platform peripherals
|
|
||||||
*/
|
|
||||||
struct Opacr1 : Register<0x40, 32>, Pacr { };
|
|
||||||
struct Opacr2 : Register<0x44, 32>, Pacr { };
|
|
||||||
struct Opacr3 : Register<0x48, 32>, Pacr { };
|
|
||||||
struct Opacr4 : Register<0x4c, 32>, Pacr { };
|
|
||||||
struct Opacr5 : Register<0x50, 32>, Pacr { };
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
Aips(addr_t const base) : Mmio(base) { }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure this module appropriately for the first kernel run
|
|
||||||
*/
|
|
||||||
void prepare_kernel()
|
|
||||||
{
|
|
||||||
/* avoid AIPS intervention at any memory access */
|
|
||||||
write<Mpr1>(Mpr::ALL_UNBUFFERED_AND_FULLY_TRUSTED);
|
|
||||||
write<Mpr2>(Mpr::ALL_UNBUFFERED_AND_FULLY_TRUSTED);
|
|
||||||
write<Pacr1>(Pacr::ALL_UNBUFFERED_AND_FULLY_UNPROTECTED);
|
|
||||||
write<Pacr2>(Pacr::ALL_UNBUFFERED_AND_FULLY_UNPROTECTED);
|
|
||||||
write<Pacr3>(Pacr::ALL_UNBUFFERED_AND_FULLY_UNPROTECTED);
|
|
||||||
write<Pacr4>(Pacr::ALL_UNBUFFERED_AND_FULLY_UNPROTECTED);
|
|
||||||
write<Opacr1>(Pacr::ALL_UNBUFFERED_AND_FULLY_UNPROTECTED);
|
|
||||||
write<Opacr2>(Pacr::ALL_UNBUFFERED_AND_FULLY_UNPROTECTED);
|
|
||||||
write<Opacr3>(Pacr::ALL_UNBUFFERED_AND_FULLY_UNPROTECTED);
|
|
||||||
write<Opacr4>(Pacr::ALL_UNBUFFERED_AND_FULLY_UNPROTECTED);
|
|
||||||
write<Opacr5>(Pacr::ALL_UNBUFFERED_AND_FULLY_UNPROTECTED);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Board driver for core
|
|
||||||
*/
|
|
||||||
struct Board : Board_base
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Static AIPS 1 instance
|
|
||||||
*/
|
|
||||||
static Aips * aips_1() { static Aips a(AIPS_1_MMIO_BASE); return &a; }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Static AIPS 2 instance
|
|
||||||
*/
|
|
||||||
static Aips * aips_2() { static Aips a(AIPS_2_MMIO_BASE); return &a; }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure this module appropriately for the first kernel run
|
|
||||||
*/
|
|
||||||
static void prepare_kernel()
|
|
||||||
{
|
|
||||||
aips_1()->prepare_kernel();
|
|
||||||
aips_2()->prepare_kernel();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void outer_cache_invalidate() { }
|
|
||||||
static void outer_cache_flush() { }
|
|
||||||
static bool is_smp() { return false; }
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* _BOARD_H_ */
|
|
@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Programmable interrupt controller for core
|
|
||||||
* \author Martin Stein
|
|
||||||
* \date 2012-04-23
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2012-2013 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _PIC_H_
|
|
||||||
#define _PIC_H_
|
|
||||||
|
|
||||||
namespace Genode
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Programmable interrupt controller for core
|
|
||||||
*/
|
|
||||||
class Pic;
|
|
||||||
}
|
|
||||||
|
|
||||||
class Genode::Pic : public Mmio
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
|
|
||||||
struct Intcntl : Register<0x0, 32> { }; /* IRQ control register */
|
|
||||||
struct Nimask : Register<0x4, 32> { }; /* normal IRQ mask reg. */
|
|
||||||
struct Intennum : Register<0x8, 32> { }; /* IRQ enable nr. reg. */
|
|
||||||
struct Intdisnum : Register<0xc, 32> { }; /* IRQ disable nr. reg. */
|
|
||||||
struct Intenableh : Register<0x10, 32> { }; /* IRQ enable register */
|
|
||||||
struct Intenablel : Register<0x14, 32> { }; /* IRQ enable register */
|
|
||||||
struct Inttypeh : Register<0x18, 32> { }; /* IRQ type register */
|
|
||||||
struct Inttypel : Register<0x1c, 32> { }; /* IRQ type register */
|
|
||||||
struct Intsrch : Register<0x48, 32> { }; /* IRQ source register */
|
|
||||||
struct Intsrcl : Register<0x4c, 32> { }; /* IRQ source register */
|
|
||||||
struct Nipndh : Register<0x58, 32> { }; /* normal IRQ pending */
|
|
||||||
struct Nipndl : Register<0x5c, 32> { }; /* normal IRQ pending */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Normal interrupt priority registers
|
|
||||||
*/
|
|
||||||
struct Nipriority : Register_array<0x20, 32, 8, 32> { };
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Normal interrupt vector and status register
|
|
||||||
*/
|
|
||||||
struct Nivecsr : Register<0x40, 32>
|
|
||||||
{
|
|
||||||
struct Nvector : Bitfield<16, 16> { };
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validate request number 'i'
|
|
||||||
*/
|
|
||||||
bool _valid(unsigned const i) const { return i < NR_OF_IRQ; }
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
enum { NR_OF_IRQ = 64 };
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
Pic() : Mmio(Board::AVIC_MMIO_BASE)
|
|
||||||
{
|
|
||||||
write<Intenablel>(0);
|
|
||||||
write<Intenableh>(0);
|
|
||||||
write<Nimask>(~0);
|
|
||||||
write<Intcntl>(0);
|
|
||||||
write<Inttypeh>(0);
|
|
||||||
write<Inttypel>(0);
|
|
||||||
for (unsigned i = 0; i < Nipriority::ITEMS; i++) {
|
|
||||||
write<Nipriority>(0, i); }
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Try to receive an IRQ in 'i' and return wether it was successful
|
|
||||||
*/
|
|
||||||
bool take_request(unsigned & i)
|
|
||||||
{
|
|
||||||
i = read<Nivecsr::Nvector>();
|
|
||||||
return _valid(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unmask IRQ 'i'
|
|
||||||
*/
|
|
||||||
void unmask(unsigned const i, unsigned) {
|
|
||||||
if (_valid(i)) { write<Intennum>(i); } }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Mask IRQ 'i'
|
|
||||||
*/
|
|
||||||
void mask(unsigned const i) { if (i < NR_OF_IRQ) write<Intdisnum>(i); }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return wether IRQ 'irq_id' is inter-processor IRQ of CPU 'cpu_id'
|
|
||||||
*/
|
|
||||||
bool is_ip_interrupt(unsigned, unsigned) { return false; }
|
|
||||||
|
|
||||||
/*************
|
|
||||||
** Dummies **
|
|
||||||
*************/
|
|
||||||
|
|
||||||
void init_cpu_local() { }
|
|
||||||
void trigger_ip_interrupt(unsigned) { }
|
|
||||||
void finish_request() { /* done by source retraction or masking */ }
|
|
||||||
};
|
|
||||||
|
|
||||||
namespace Kernel { class Pic : public Genode::Pic { }; }
|
|
||||||
|
|
||||||
#endif /* _PIC_H_ */
|
|
@ -1,72 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Platform implementations specific for base-hw and i.MX31
|
|
||||||
* \author Norman Feske
|
|
||||||
* \date 2012-08-30
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2012-2013 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* core includes */
|
|
||||||
#include <platform.h>
|
|
||||||
#include <board.h>
|
|
||||||
#include <pic.h>
|
|
||||||
#include <cpu.h>
|
|
||||||
|
|
||||||
using namespace Genode;
|
|
||||||
|
|
||||||
Native_region * Platform::_ram_regions(unsigned const i)
|
|
||||||
{
|
|
||||||
static Native_region _regions[] =
|
|
||||||
{
|
|
||||||
{ Board::RAM_0_BASE, Board::RAM_0_SIZE }
|
|
||||||
};
|
|
||||||
return i < sizeof(_regions)/sizeof(_regions[0]) ? &_regions[i] : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Native_region * Platform::_mmio_regions(unsigned const i)
|
|
||||||
{
|
|
||||||
static Native_region _regions[] =
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* The address range below 0x30000000 is used for secure ROM, ROM, and
|
|
||||||
* internal RAM.
|
|
||||||
*/
|
|
||||||
{ 0x30000000, 0x50000000 },
|
|
||||||
/*
|
|
||||||
* The address range between 0x8000000 and 0x9fffffff is designated for
|
|
||||||
* SDRAM. The remaining address range is populated with peripherals.
|
|
||||||
*/
|
|
||||||
{ 0xa0000000, 0x24000000 }
|
|
||||||
};
|
|
||||||
return i < sizeof(_regions)/sizeof(_regions[0]) ? &_regions[i] : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Native_region * Platform::_core_only_mmio_regions(unsigned const i)
|
|
||||||
{
|
|
||||||
static Native_region _regions[] =
|
|
||||||
{
|
|
||||||
/* core UART */
|
|
||||||
{ Board::UART_1_MMIO_BASE, Board::UART_1_MMIO_SIZE },
|
|
||||||
|
|
||||||
/* core timer */
|
|
||||||
{ Board::EPIT_1_MMIO_BASE, Board::EPIT_1_MMIO_SIZE },
|
|
||||||
|
|
||||||
/* interrupt controller */
|
|
||||||
{ Board::AVIC_MMIO_BASE, Board::AVIC_MMIO_SIZE },
|
|
||||||
|
|
||||||
/* bus interface controller */
|
|
||||||
{ Board::AIPS_1_MMIO_BASE, Board::AIPS_1_MMIO_SIZE },
|
|
||||||
{ Board::AIPS_2_MMIO_BASE, Board::AIPS_2_MMIO_SIZE },
|
|
||||||
};
|
|
||||||
return i < sizeof(_regions)/sizeof(_regions[0]) ? &_regions[i] : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Cpu::User_context::User_context() { cpsr = Psr::init_user(); }
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* \brief Driver base for i.MX31 UART-module
|
* \brief Driver base for Freescale's i.MX UART-module
|
||||||
* \author Norman Feske
|
* \author Norman Feske
|
||||||
* \author Martin Stein
|
* \author Martin Stein
|
||||||
* \date 2012-08-30
|
* \date 2012-08-30
|
||||||
@ -12,8 +12,8 @@
|
|||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _INCLUDE__DRIVERS__UART__IMX31_UART_BASE_H_
|
#ifndef _INCLUDE__DRIVERS__UART__IMX_UART_BASE_H_
|
||||||
#define _INCLUDE__DRIVERS__UART__IMX31_UART_BASE_H_
|
#define _INCLUDE__DRIVERS__UART__IMX_UART_BASE_H_
|
||||||
|
|
||||||
/* Genode includes */
|
/* Genode includes */
|
||||||
#include <util/mmio.h>
|
#include <util/mmio.h>
|
||||||
@ -21,9 +21,9 @@
|
|||||||
namespace Genode
|
namespace Genode
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Driver base for i.MX31 UART-module
|
* Driver base for i.MX UART-module
|
||||||
*/
|
*/
|
||||||
class Imx31_uart_base : Mmio
|
class Imx_uart_base : Mmio
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Control register 1
|
* Control register 1
|
||||||
@ -245,7 +245,7 @@ namespace Genode
|
|||||||
*
|
*
|
||||||
* \param base device MMIO base
|
* \param base device MMIO base
|
||||||
*/
|
*/
|
||||||
explicit Imx31_uart_base(addr_t const base) : Mmio(base)
|
explicit Imx_uart_base(addr_t const base) : Mmio(base)
|
||||||
{
|
{
|
||||||
write<Cr1>(Cr1::init_value());
|
write<Cr1>(Cr1::init_value());
|
||||||
write<Cr2>(Cr2::init_value());
|
write<Cr2>(Cr2::init_value());
|
||||||
@ -270,5 +270,5 @@ namespace Genode
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _INCLUDE__DRIVERS__UART__IMX31_UART_BASE_H_ */
|
#endif /* _INCLUDE__DRIVERS__UART__IMX_UART_BASE_H_ */
|
||||||
|
|
@ -1,63 +0,0 @@
|
|||||||
/*
|
|
||||||
* \brief Board definitions for the i.MX31
|
|
||||||
* \author Martin Stein
|
|
||||||
* \author Norman Feske
|
|
||||||
* \date 2011-11-03
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 2012-2013 Genode Labs GmbH
|
|
||||||
*
|
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
|
||||||
* under the terms of the GNU General Public License version 2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _INCLUDE__PLATFORM__BOARD_BASE_H_
|
|
||||||
#define _INCLUDE__PLATFORM__BOARD_BASE_H_
|
|
||||||
|
|
||||||
/* Genode includes */
|
|
||||||
#include <util/mmio.h>
|
|
||||||
|
|
||||||
namespace Genode
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* i.MX31 motherboard
|
|
||||||
*/
|
|
||||||
struct Board_base
|
|
||||||
{
|
|
||||||
enum {
|
|
||||||
RAM_0_BASE = 0x80000000,
|
|
||||||
RAM_0_SIZE = 0x20000000,
|
|
||||||
|
|
||||||
MMIO_0_BASE = 0x30000000,
|
|
||||||
MMIO_0_SIZE = 0x50000000,
|
|
||||||
|
|
||||||
UART_1_IRQ = 45,
|
|
||||||
UART_1_MMIO_BASE = 0x43f90000,
|
|
||||||
UART_1_MMIO_SIZE = 0x00004000,
|
|
||||||
|
|
||||||
EPIT_1_IRQ = 28,
|
|
||||||
EPIT_1_MMIO_BASE = 0x53f94000,
|
|
||||||
EPIT_1_MMIO_SIZE = 0x00004000,
|
|
||||||
|
|
||||||
EPIT_2_IRQ = 27,
|
|
||||||
EPIT_2_MMIO_BASE = 0x53f98000,
|
|
||||||
EPIT_2_MMIO_SIZE = 0x00004000,
|
|
||||||
|
|
||||||
AVIC_MMIO_BASE = 0x68000000,
|
|
||||||
AVIC_MMIO_SIZE = 0x04000000,
|
|
||||||
|
|
||||||
AIPS_1_MMIO_BASE = 0x43F00000,
|
|
||||||
AIPS_1_MMIO_SIZE = 0x00004000,
|
|
||||||
|
|
||||||
AIPS_2_MMIO_BASE = 0x53F00000,
|
|
||||||
AIPS_2_MMIO_SIZE = 0x00004000,
|
|
||||||
|
|
||||||
/* CPU cache */
|
|
||||||
CACHE_LINE_SIZE_LOG2 = 2, /* FIXME get correct value from board spec */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* _INCLUDE__PLATFORM__BOARD_BASE_H_ */
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
|||||||
#
|
|
||||||
# \brief Build-system configurations for Freescale i.MX31
|
|
||||||
# \author Martin Stein
|
|
||||||
# \date 2012-09-26
|
|
||||||
#
|
|
||||||
|
|
||||||
# denote wich specs are also fullfilled by this spec
|
|
||||||
SPECS += arm_v6
|
|
||||||
|
|
||||||
# add repository relative include paths
|
|
||||||
REP_INC_DIR += include/platform/imx31
|
|
||||||
|
|
||||||
# include implied specs
|
|
||||||
include $(call select_from_repositories,mk/spec-arm_v6.mk)
|
|
||||||
|
|
@ -1 +0,0 @@
|
|||||||
REPOSITORIES += $(GENODE_DIR)/repos/base-hw
|
|
@ -30,7 +30,6 @@ usage:
|
|||||||
@echo " 'hw_panda'"
|
@echo " 'hw_panda'"
|
||||||
@echo " 'hw_vea9x4'"
|
@echo " 'hw_vea9x4'"
|
||||||
@echo " 'hw_pbxa9'"
|
@echo " 'hw_pbxa9'"
|
||||||
@echo " 'hw_imx31'"
|
|
||||||
@echo " 'hw_imx53'"
|
@echo " 'hw_imx53'"
|
||||||
@echo " 'hw_imx53_tz'"
|
@echo " 'hw_imx53_tz'"
|
||||||
@echo " 'hw_arndale'"
|
@echo " 'hw_arndale'"
|
||||||
@ -218,9 +217,6 @@ hw_vea9x4::
|
|||||||
hw_panda::
|
hw_panda::
|
||||||
@echo "SPECS = genode hw_panda" > $(BUILD_DIR)/etc/specs.conf
|
@echo "SPECS = genode hw_panda" > $(BUILD_DIR)/etc/specs.conf
|
||||||
|
|
||||||
hw_imx31::
|
|
||||||
@echo "SPECS = genode hw_imx31" > $(BUILD_DIR)/etc/specs.conf
|
|
||||||
|
|
||||||
hw_imx53::
|
hw_imx53::
|
||||||
@echo "SPECS = genode hw_imx53" > $(BUILD_DIR)/etc/specs.conf
|
@echo "SPECS = genode hw_imx53" > $(BUILD_DIR)/etc/specs.conf
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user