MIPSfpga is an FPGA based dev platform. In a nutshell, its a microAptiv cpu core with lots of Xilinx IP blocks The FPGA dev board used is the Nexys4DDR board by Digilent. For more information, check the Readme file in board/imgtec/xilfpga Signed-off-by: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> Reviewed-by: Paul Burton <paul.burton@imgtec.com> Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>master
parent
d4e85377e7
commit
ebf2b9e3df
@ -0,0 +1,15 @@ |
||||
if TARGET_XILFPGA |
||||
|
||||
config SYS_BOARD |
||||
default "xilfpga" |
||||
|
||||
config SYS_VENDOR |
||||
default "imgtec" |
||||
|
||||
config SYS_CONFIG_NAME |
||||
default "imgtec_xilfpga" |
||||
|
||||
config SYS_TEXT_BASE |
||||
default 0x80C00000 |
||||
|
||||
endif |
@ -0,0 +1,6 @@ |
||||
XILFPGA BOARD |
||||
M: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> |
||||
S: Maintained |
||||
F: board/imgtec/xilfpga |
||||
F: include/configs/xilfpga.h |
||||
F: configs/imgtec_xilfpga_defconfig |
@ -0,0 +1,7 @@ |
||||
#
|
||||
# Copyright (C) 2016, Imagination Technologies Ltd.
|
||||
# Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
obj-y := xilfpga.o
|
@ -0,0 +1,55 @@ |
||||
/* |
||||
* Copyright (C) 2016, Imagination Technologies Ltd. |
||||
* |
||||
* Zubair Lutfullah Kakakhel, Zubair.Kakakhel@imgtec.com |
||||
*/ |
||||
|
||||
MIPSfpga |
||||
======================================= |
||||
|
||||
MIPSfpga is an FPGA based development platform by Imagination Technologies |
||||
As we are dealing with a MIPS core instantiated on an FPGA, specifications |
||||
are fluid and can be varied in RTL. |
||||
|
||||
The example project provided by IMGTEC runs on the Nexys4DDR board by |
||||
Digilent powered by the ARTIX-7 FPGA by Xilinx. Relevant details about |
||||
the example project and the Nexys4DDR board: |
||||
|
||||
- microAptiv UP core m14Kc |
||||
- 50MHz clock speed |
||||
- 128Mbyte DDR RAM at 0x0000_0000 |
||||
- 8Kbyte RAM at 0x1000_0000 |
||||
- axi_intc at 0x1020_0000 |
||||
- axi_uart16550 at 0x1040_0000 |
||||
- axi_gpio at 0x1060_0000 |
||||
- axi_i2c at 0x10A0_0000 |
||||
- custom_gpio at 0x10C0_0000 |
||||
- axi_ethernetlite at 0x10E0_0000 |
||||
- 8Kbyte BootRAM at 0x1FC0_0000 |
||||
- 16Mbyte QPI at 0x1D00_0000 |
||||
|
||||
Boot protocol: |
||||
-------------- |
||||
|
||||
The BootRAM is a writeable "RAM" in FPGA at 0x1FC0_0000. |
||||
This is for easy reprogrammibility via JTAG. |
||||
|
||||
DDR initialization is already handled by a HW IP block. |
||||
|
||||
When the example project bitstream is loaded, the cpu_reset button |
||||
needs to be pressed. |
||||
|
||||
The bootram initializes the cache and axi_uart |
||||
Then checks if there is anything non 0xffff_ffff at location 0x1D40_0000 |
||||
|
||||
If there is, then that is considered as u-boot. u-boot is copied from |
||||
0x1D40_0000 to memory and the bootram jumps into u-boot code. |
||||
|
||||
At this point, the board is ready to load the Linux kernel + buildroot initramfs |
||||
|
||||
This can be done in multiple ways: |
||||
|
||||
1- JTAG load the binary and jump into it. |
||||
2- Load kernel stored in the QSPI flash at 0x1D80_0000 |
||||
3- Load uImage via tftp. Ethernet works in u-boot. |
||||
e.g. env set server ip 192.168.154.45; dhcp uImage; bootm |
@ -0,0 +1,20 @@ |
||||
/*
|
||||
* Imagination Technologies MIPSfpga platform code |
||||
* |
||||
* Copyright (C) 2016, Imagination Technologies Ltd. |
||||
* |
||||
* Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
* |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
|
||||
/* initialize the DDR Controller and PHY */ |
||||
phys_size_t initdram(int board_type) |
||||
{ |
||||
/* MIG IP block is smart and doesn't need SW
|
||||
* to do any init */ |
||||
return CONFIG_SYS_SDRAM_SIZE; /* in bytes */ |
||||
} |
@ -0,0 +1,25 @@ |
||||
CONFIG_MIPS=y |
||||
CONFIG_SYS_MALLOC_F_LEN=0x600 |
||||
CONFIG_TARGET_XILFPGA=y |
||||
# CONFIG_MIPS_BOOT_ENV_LEGACY is not set |
||||
CONFIG_MIPS_BOOT_FDT=y |
||||
CONFIG_DEFAULT_DEVICE_TREE="nexys4ddr" |
||||
CONFIG_BOOTDELAY=5 |
||||
CONFIG_HUSH_PARSER=y |
||||
CONFIG_SYS_PROMPT="MIPSfpga # " |
||||
# CONFIG_CMD_IMLS is not set |
||||
# CONFIG_CMD_SAVEENV is not set |
||||
CONFIG_CMD_MEMINFO=y |
||||
# CONFIG_CMD_FLASH is not set |
||||
# CONFIG_CMD_FPGA is not set |
||||
CONFIG_CMD_DHCP=y |
||||
CONFIG_CMD_MII=y |
||||
CONFIG_CMD_PING=y |
||||
CONFIG_CMD_TIME=y |
||||
CONFIG_OF_EMBED=y |
||||
CONFIG_NET_RANDOM_ETHADDR=y |
||||
CONFIG_NETCONSOLE=y |
||||
CONFIG_CLK=y |
||||
CONFIG_XILINX_EMACLITE=y |
||||
CONFIG_SYS_NS16550=y |
||||
CONFIG_CMD_DHRYSTONE=y |
@ -0,0 +1,68 @@ |
||||
/*
|
||||
* Copyright (C) 2016, Imagination Technologies Ltd. |
||||
* |
||||
* Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
* |
||||
* Imagination Technologies Ltd. MIPSfpga |
||||
*/ |
||||
|
||||
#ifndef __XILFPGA_CONFIG_H |
||||
#define __XILFPGA_CONFIG_H |
||||
|
||||
/* BootROM + MIG is pretty smart. DDR and Cache initialized */ |
||||
#define CONFIG_SKIP_LOWLEVEL_INIT |
||||
|
||||
/*--------------------------------------------
|
||||
* CPU configuration |
||||
*/ |
||||
/* CPU Timer rate */ |
||||
#define CONFIG_SYS_MIPS_TIMER_FREQ 50000000 |
||||
|
||||
/* Cache Configuration */ |
||||
#define CONFIG_SYS_MIPS_CACHE_MODE CONF_CM_CACHABLE_NONCOHERENT |
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* Memory Layout |
||||
*/ |
||||
|
||||
/* SDRAM Configuration (for final code, data, stack, heap) */ |
||||
#define CONFIG_SYS_SDRAM_BASE 0x80000000 |
||||
#define CONFIG_SYS_SDRAM_SIZE 0x08000000 /* 128 Mbytes */ |
||||
#define CONFIG_SYS_INIT_SP_ADDR \ |
||||
(CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_SDRAM_SIZE - 0x1000) |
||||
|
||||
#define CONFIG_SYS_MALLOC_LEN (256 << 10) |
||||
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE |
||||
#define CONFIG_SYS_LOAD_ADDR 0x80500000 /* default load address */ |
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* Commands |
||||
*/ |
||||
#define CONFIG_SYS_LONGHELP /* undef to save memory */ |
||||
|
||||
/*-------------------------------------------------
|
||||
* FLASH configuration |
||||
*/ |
||||
#define CONFIG_SYS_NO_FLASH |
||||
|
||||
/*------------------------------------------------------------
|
||||
* Console Configuration |
||||
*/ |
||||
#define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buffer Size */ |
||||
#define CONFIG_SYS_MAXARGS 16 /* max number of command args*/ |
||||
#define CONFIG_BAUDRATE 115200 |
||||
|
||||
/* -------------------------------------------------
|
||||
* Environment |
||||
*/ |
||||
#define CONFIG_ENV_IS_NOWHERE 1 |
||||
#define CONFIG_ENV_SIZE 0x4000 |
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
* Board boot configuration |
||||
*/ |
||||
#define CONFIG_TIMESTAMP /* Print image info with timestamp */ |
||||
|
||||
#endif /* __XILFPGA_CONFIG_H */ |
Loading…
Reference in new issue