Merge pull request #11040 from kaspar030/fix_hifive1_reset

boards/hifive1: fix hifive1 reset
This commit is contained in:
Juan I Carrano 2019-03-12 14:59:36 +01:00 committed by GitHub
commit b50ad9ed4c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 2 deletions

View File

@ -13,6 +13,7 @@ PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
include $(RIOTMAKE)/tools/serial.inc.mk
# this board uses openocd
export OPENOCD_CMD_RESET_RUN=_reset
include $(RIOTMAKE)/tools/openocd.inc.mk
# use our own openocd script to flash since HiFive1 has reset problems.

View File

@ -31,7 +31,8 @@ $_TARGETNAME configure -work-area-phys 0x80000000 -work-area-size 10000 -work-ar
flash bank onboard_spi_flash fespi 0x20000000 0 0 0 $_TARGETNAME
#init
#reset -- This type of reset is not implemented yet
if {[ info exists pulse_srst]} {
proc _reset {} {
ftdi_set_signal nSRST 0
ftdi_set_signal nSRST z
#Wait for the reset stretcher
@ -39,6 +40,10 @@ if {[ info exists pulse_srst]} {
#will incur lots of delays for later commands.
sleep 1500
}
if {[ info exists pulse_srst]} {
_reset
}
#halt
#flash protect 0 64 last off
#

View File

@ -17,7 +17,9 @@
* @}
*/
#include <stdint.h>
#include "periph/pm.h"
#include "vendor/platform.h"
void pm_set_lowest(void)
{
@ -30,4 +32,13 @@ void pm_off(void)
void pm_reboot(void)
{
AON_REG(AON_WDOGKEY) = AON_WDOGKEY_VALUE;
AON_REG(AON_WDOGCMP) = 0;
//wdogconfig: : wdogrsten | enablealways | reset to 0 | max scale
AON_REG(AON_WDOGKEY) = AON_WDOGKEY_VALUE;
AON_REG(AON_WDOGCFG) |= (AON_WDOGCFG_RSTEN | AON_WDOGCFG_ENALWAYS |\
AON_WDOGCFG_ZEROCMP | AON_WDOGCFG_SCALE) ;
AON_REG(AON_WDOGKEY) = AON_WDOGKEY_VALUE;
AON_REG(AON_WDOGFEED) = AON_WDOGFEED_VALUE;
while(1) {}
}

View File

@ -90,6 +90,8 @@
# the target when starting a debug session. 'reset halt' can also be used
# depending on the type of target.
: ${OPENOCD_DBG_START_CMD:=-c 'halt'}
# command used to reset the board
: ${OPENOCD_CMD_RESET_RUN:="-c 'reset run'"}
# This is an optional offset to the base address that can be used to flash an
# image in a different location than it is linked at. This feature can be useful
# when flashing images for firmware swapping/remapping boot loaders.
@ -323,7 +325,7 @@ do_reset() {
-c 'telnet_port 0' \
-c 'gdb_port 0' \
-c 'init' \
-c 'reset run' \
${OPENOCD_CMD_RESET_RUN} \
-c 'shutdown'"
}