summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile8
-rw-r--r--README.md70
-rw-r--r--bsp/coreip-e31-arty/openocd.cfg30
-rw-r--r--bsp/coreip-s51-arty/openocd.cfg30
-rw-r--r--bsp/freedom-e310-arty/openocd.cfg30
-rwxr-xr-xbsp/update-targets.sh2
6 files changed, 158 insertions, 12 deletions
diff --git a/Makefile b/Makefile
index a25ecc7..491a3dd 100644
--- a/Makefile
+++ b/Makefile
@@ -131,17 +131,21 @@ RISCV_GXX := $(CROSS_COMPILE)-g++
RISCV_OBJDUMP := $(CROSS_COMPILE)-objdump
RISCV_GDB := $(CROSS_COMPILE)-gdb
RISCV_AR := $(CROSS_COMPILE)-ar
-RISCV_OPENOCD := openocd
else
RISCV_GCC := $(abspath $(RISCV_PATH)/bin/$(CROSS_COMPILE)-gcc)
RISCV_GXX := $(abspath $(RISCV_PATH)/bin/$(CROSS_COMPILE)-g++)
RISCV_OBJDUMP := $(abspath $(RISCV_PATH)/bin/$(CROSS_COMPILE)-objdump)
RISCV_GDB := $(abspath $(RISCV_PATH)/bin/$(CROSS_COMPILE)-gdb)
RISCV_AR := $(abspath $(RISCV_PATH)/bin/$(CROSS_COMPILE)-ar)
-RISCV_OPENOCD := $(abspath $(RISCV_PATH)/bin/openocd)
PATH := $(abspath $(RISCV_PATH)/bin):$(PATH)
endif
+ifeq ($(RISCV_OPENOCD_PATH),)
+RISCV_OPENOCD := openocd
+else
+RISCV_OPENOCD := $(abspath $(RISCV_OPENOCD_PATH)/bin/openocd)
+endif
+
#############################################################
# Compiles an instance of the MEE targeted at $(BOARD)
#############################################################
diff --git a/README.md b/README.md
index 73c1b89..ae2384f 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,40 @@
-# README #
+# SiFive Freedom E SDK README #
-This repository, maintained by SiFive, Inc, makes it easy to get started developing software for the Freedom E RISC-V platform.
+This repository, maintained by SiFive Inc, makes it easy to get started developing
+software for the Freedom E and Freedom S Embedded RISC-V Platforms.
### Contents ###
-* Board Support Packages for FE310 and Development Kits
+#### Freedom Metal Compatibility Library ####
+
+* Board Support Packages for
+ - SiFive HiFive 1 (sifive-hifive1)
+ - SiFive Freedom E310 Arty (freedom-e310-arty)
+ - SiFive CoreIP (e.g. coreip-e31)
+ - SiFive CoreIP Arty FPGA Evaluation targets (e.g. coreip-e31-arty)
* A Few Example Programs
+ - Example programs targeting the Freedom Metal compatibility library can be identified
+ as submodules within the software/ directory, rather than being maintained in-tree
+ like the legacy examples are.
+
+#### (Deprecated) Legacy Freedom E SDK Library ####
+
+As we transition to supporting SiFive targets and examples with the new Freedom Metal
+compatibility library, the legacy Freedom E SDK libraries and examples are still available
+within this repository.
+
+* Board Support Packages for
+ - SiFive HiFive 1 (freedom-e300-hifive1)
+ - SiFive Freedom E310 Arty (freedom-e300-arty)
+ - SiFive CoreIP Arty FPGA Evaluation Targets (e.g. coreplexip-e31-arty)
+ - Additional legacy targets are contained within the bsp/env/ directory.
+* A Few Example Programs
+ - Example programs targeting the legacy Freedom E SDK can be identified as being tracked
+ within this repository in the software/ directory, rathre than being maintained
+ out-of-tree like the Freedom Metal examples are.
+
+Legacy examples can be built using the same commands as the Freedom Metal examples and simply
+omitting the `BSP=mee` argument or substituting it with `BSP=legacy`.
### Setting up the SDK ###
@@ -15,6 +44,12 @@ First, clone this repository:
git clone --recursive https://github.com/sifive/freedom-e-sdk.git
```
+If at first you omit the `--recursive` option, you can update submodules using the command:
+
+```
+git submodule update --init --recursive
+```
+
To see Makefile options:
```
@@ -52,19 +87,36 @@ git pull origin master
git submodule update --init --recursive
```
-If you would like to recompile the entire toolchain after performing the above:
+### Using the Tools ###
+
+#### Building an Example ####
+
+To compile a bare-metal RISC-V program:
+
+```
+cd freedom-e-sdk
+make BSP=mee [PROGRAM=hello] [BOARD=sifive-hifive1] software
+```
+
+#### Uploading to the Target Board ####
+
+```
+cd freedom-e-sdk
+make BSP=mee [PROGRAM=hello] [BOARD=sifive-hifive1] upload
+```
+
+#### Debugging a Target Program ####
```
-make uninstall
-make tools
+cd freedom-e-sdk
+make BSP=mee [PROGRAM=hello] [BOARD=sifive-hifive1] debug
```
-### Using the Tools ###
-To compile a bare-metal RISC-V program:
+#### Cleaning a Target Program Build Directory ####
```
cd freedom-e-sdk
-make software [PROGRAM=demo_gpio] [BOARD=freedom-e300-hifive1]
+make BSP=mee [PROGRAM=hello] [BOARD=sifive-hifive1] clean
```
Run `make help` for more commands.
diff --git a/bsp/coreip-e31-arty/openocd.cfg b/bsp/coreip-e31-arty/openocd.cfg
new file mode 100644
index 0000000..34b9f88
--- /dev/null
+++ b/bsp/coreip-e31-arty/openocd.cfg
@@ -0,0 +1,30 @@
+adapter_khz 10000
+
+#source [find interface/ftdi/olimex-arm-usb-tiny-h.cfg]
+
+interface ftdi
+ftdi_device_desc "Olimex OpenOCD JTAG ARM-USB-TINY-H"
+ftdi_vid_pid 0x15ba 0x002a
+
+ftdi_layout_init 0x0808 0x0a1b
+ftdi_layout_signal nSRST -oe 0x0200
+ftdi_layout_signal nTRST -data 0x0100 -oe 0x0100
+ftdi_layout_signal LED -data 0x0800
+#
+
+set _CHIPNAME riscv
+jtag newtap $_CHIPNAME cpu -irlen 5
+
+set _TARGETNAME $_CHIPNAME.cpu
+target create $_TARGETNAME riscv -chain-position $_TARGETNAME
+$_TARGETNAME configure -work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1
+
+flash bank my_first_flash fespi 0x40000000 0 0 0 $_TARGETNAME 0x20004000
+init
+#reset
+if {[ info exists pulse_srst]} {
+ ftdi_set_signal nSRST 0
+ ftdi_set_signal nSRST z
+}
+halt
+#flash protect 0 64 last off
diff --git a/bsp/coreip-s51-arty/openocd.cfg b/bsp/coreip-s51-arty/openocd.cfg
new file mode 100644
index 0000000..34b9f88
--- /dev/null
+++ b/bsp/coreip-s51-arty/openocd.cfg
@@ -0,0 +1,30 @@
+adapter_khz 10000
+
+#source [find interface/ftdi/olimex-arm-usb-tiny-h.cfg]
+
+interface ftdi
+ftdi_device_desc "Olimex OpenOCD JTAG ARM-USB-TINY-H"
+ftdi_vid_pid 0x15ba 0x002a
+
+ftdi_layout_init 0x0808 0x0a1b
+ftdi_layout_signal nSRST -oe 0x0200
+ftdi_layout_signal nTRST -data 0x0100 -oe 0x0100
+ftdi_layout_signal LED -data 0x0800
+#
+
+set _CHIPNAME riscv
+jtag newtap $_CHIPNAME cpu -irlen 5
+
+set _TARGETNAME $_CHIPNAME.cpu
+target create $_TARGETNAME riscv -chain-position $_TARGETNAME
+$_TARGETNAME configure -work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1
+
+flash bank my_first_flash fespi 0x40000000 0 0 0 $_TARGETNAME 0x20004000
+init
+#reset
+if {[ info exists pulse_srst]} {
+ ftdi_set_signal nSRST 0
+ ftdi_set_signal nSRST z
+}
+halt
+#flash protect 0 64 last off
diff --git a/bsp/freedom-e310-arty/openocd.cfg b/bsp/freedom-e310-arty/openocd.cfg
new file mode 100644
index 0000000..ba13207
--- /dev/null
+++ b/bsp/freedom-e310-arty/openocd.cfg
@@ -0,0 +1,30 @@
+adapter_khz 10000
+
+#source [find interface/ftdi/olimex-arm-usb-tiny-h.cfg]
+
+interface ftdi
+ftdi_device_desc "Olimex OpenOCD JTAG ARM-USB-TINY-H"
+ftdi_vid_pid 0x15ba 0x002a
+
+ftdi_layout_init 0x0808 0x0a1b
+ftdi_layout_signal nSRST -oe 0x0200
+ftdi_layout_signal nTRST -data 0x0100 -oe 0x0100
+ftdi_layout_signal LED -data 0x0800
+#
+
+set _CHIPNAME riscv
+jtag newtap $_CHIPNAME cpu -irlen 5
+
+set _TARGETNAME $_CHIPNAME.cpu
+target create $_TARGETNAME riscv -chain-position $_TARGETNAME
+$_TARGETNAME configure -work-area-phys 0x80000000 -work-area-size 10000 -work-area-backup 1
+
+flash bank my_first_flash fespi 0x20000000 0 0 0 $_TARGETNAME 0x10014000
+init
+#reset
+if {[ info exists pulse_srst]} {
+ ftdi_set_signal nSRST 0
+ ftdi_set_signal nSRST z
+}
+halt
+#flash protect 0 64 last off
diff --git a/bsp/update-targets.sh b/bsp/update-targets.sh
index 337d493..780d662 100755
--- a/bsp/update-targets.sh
+++ b/bsp/update-targets.sh
@@ -9,7 +9,7 @@ DTB_FILENAME=temp.dtb
HEADER_FILENAME=mee.h
LDSCRIPT_FILENAME=mee.lds
-TARGET_LIST="$(ls coreip* -d) "
+TARGET_LIST="$(ls -d coreip*) "
TARGET_LIST+="sifive-hifive1 freedom-e310-arty "
update_target() {