Added renode board: nrf52840

pull/176/head
Daniele Lacamera 2022-02-03 15:47:59 +01:00
parent 11d7a67498
commit f2280f5575
4 changed files with 98 additions and 3 deletions

View File

@ -0,0 +1,25 @@
ARCH?=ARM
TARGET?=nrf52
SIGN?=ECC256
HASH?=SHA256
DEBUG?=0
VTOR?=1
CORTEX_M0?=0
NO_ASM?=0
NO_MPU=1
EXT_FLASH?=0
SPI_FLASH?=0
ALLOW_DOWNGRADE?=0
NVM_FLASH_WRITEONCE?=0
WOLFBOOT_VERSION?=0
V?=0
SPMATH?=1
RAM_CODE?=0
DUALBANK_SWAP?=0
IMAGE_HEADER_SIZE?=256
PKA?=0
WOLFBOOT_PARTITION_SIZE?=0x40000
WOLFBOOT_SECTOR_SIZE?=0x1000
WOLFBOOT_PARTITION_BOOT_ADDRESS?=0x20000
WOLFBOOT_PARTITION_UPDATE_ADDRESS?=0x60000
WOLFBOOT_PARTITION_SWAP_ADDRESS?=0xe0000

View File

@ -31,6 +31,18 @@
#define GPIO_OUTCLR *((volatile uint32_t *)(GPIO_BASE + 0x50C))
#define GPIO_PIN_CNF ((volatile uint32_t *)(GPIO_BASE + 0x700)) // Array
#define BAUD_115200 0x01D7E000
#define UART0_BASE (0x40002000)
#define UART0_TASK_STARTTX *((volatile uint32_t *)(UART0_BASE + 0x008))
#define UART0_TASK_STOPTX *((volatile uint32_t *)(UART0_BASE + 0x00C))
#define UART0_EVENT_ENDTX *((volatile uint32_t *)(UART0_BASE + 0x120))
#define UART0_ENABLE *((volatile uint32_t *)(UART0_BASE + 0x500))
#define UART0_TXD_PTR *((volatile uint32_t *)(UART0_BASE + 0x544))
#define UART0_TXD_MAXCOUNT *((volatile uint32_t *)(UART0_BASE + 0x548))
#define UART0_BAUDRATE *((volatile uint32_t *)(UART0_BASE + 0x524))
static void gpiotoggle(uint32_t pin)
{
uint32_t reg_val = GPIO_OUT;
@ -38,12 +50,42 @@ static void gpiotoggle(uint32_t pin)
GPIO_OUTSET = (~reg_val) & (1 << pin);
}
void uart_init(void)
{
UART0_BAUDRATE = BAUD_115200;
UART0_ENABLE = 1;
}
void uart_write(char c)
{
UART0_EVENT_ENDTX = 0;
UART0_TXD_PTR = &c;
UART0_TXD_MAXCOUNT = 1;
UART0_TASK_STARTTX = 1;
while(UART0_EVENT_ENDTX == 0)
;
}
static const char START='*';
void main(void)
{
//uint32_t pin = 19;
uint32_t pin = 6;
int i;
uint32_t version = 0;
uint8_t *v_array = (uint8_t *)&version;
GPIO_PIN_CNF[pin] = 1; /* Output */
version = wolfBoot_current_firmware_version();
uart_init();
uart_write(START);
for (i = 3; i >= 0; i--) {
uart_write(v_array[i]);
}
while(1) {
gpiotoggle(pin);
for (i = 0; i < 800000; i++) // Wait a bit.

View File

@ -0,0 +1,23 @@
:name: NRF52840
:description: This script runs wolfboot on NRF52840.
using sysbus
mach create
machine LoadPlatformDescription @platforms/cpus/nrf52840.repl
emulation CreateUartPtyTerminal "term" "/tmp/wolfboot.uart" True
connector Connect uart0 term
cpu PerformanceInMips 100
macro reset
"""
### Load bootloader + signed image
sysbus LoadELF @/tmp/renode-wolfboot.elf
sysbus LoadBinary @/tmp/renode-test-v1.bin 0x20000
start
"""
runMacro $reset

View File

@ -2,8 +2,8 @@ TEST_UPDATE_VERSION?=2
WOLFBOOT_VERSION?=0
RENODE_UART=/tmp/wolfboot.uart
RENODE_PORT=55155
RENODE_OPTIONS=--pid-file=/tmp/renode.pid -P $(RENODE_PORT)
RENODE_OPTIONS+=--disable-xwt
RENODE_OPTIONS=--pid-file=/tmp/renode.pid
RENODE_OPTIONS+=--disable-xwt -P $(RENODE_PORT)
RENODE_CONFIG=tools/renode/stm32f4_discovery_wolfboot.resc
POFF=131067
@ -40,6 +40,10 @@ ifeq ($(TARGET),hifive1)
RENODE_CONFIG=tools/renode/sifive_fe310_wolfboot.resc
endif
ifeq ($(TARGET),nrf52)
RENODE_CONFIG=tools/renode/nrf52840_wolfboot.resc
endif
ifeq ($(SIGN),NONE)
SIGN_ARGS+=--no-sign
endif
@ -76,7 +80,8 @@ endif
#
renode-on: FORCE
@rm -f /tmp/wolfboot.uart
@renode $(RENODE_OPTIONS) $(RENODE_CONFIG) 2>&1 >/tmp/renode.log &
#@renode $(RENODE_OPTIONS) $(RENODE_CONFIG) 2>&1 >/tmp/renode.log &
@renode $(RENODE_OPTIONS) $(RENODE_CONFIG) &
@while ! (test -e /tmp/wolfboot.uart); do sleep .1; done
@echo "Renode up: uart port activated"
@echo "Renode running: renode has been started."