Files
simulation_core/scripts/multi-node/nrf52840-ble-hci-uart-zephyr.resc

67 lines
2.4 KiB
Plaintext
Raw Permalink Normal View History

:name: Zephyr BLE HCI-UART on nRF52840
:description: Two pairs of machines (host-controller) communicating through BLE. Hosts and controllers communicate using HCI-UART. Every machine is running Zephyr on nRF52840.
emulation CreateUARTHub "central_hci"
emulation CreateUARTHub "peripheral_hci"
emulation CreateBLEMedium "wireless"
using sysbus
$central_bin?=@https://dl.antmicro.com/projects/renode/nrf52840dk--zephyr-ble_central_hr_hci_uart.elf-s_3302344-e0d303c14ad52fda2b16157c09ce62f1d065bc31
$peripheral_bin?=@https://dl.antmicro.com/projects/renode/nrf52840dk--zephyr-ble_peripheral_hr_hci_uart.elf-s_3094464-d15ff2ff7cf4ba4105b1896b445b5e4baeb7a487
$hci_uart_bin?=@https://dl.antmicro.com/projects/renode/nrf52840dk--zephyr-ble_hci_uart.elf-s_2437336-4bf9cccb70ca95fb12667896eec3f777f39f90ee
# Create central machines
mach create "central_host"
machine LoadPlatformDescription @platforms/boards/nrf52840dk_nrf52840.repl
connector Connect sysbus.uart1 central_hci
showAnalyzer uart0
mach create "central_controller"
machine LoadPlatformDescription @platforms/boards/nrf52840dk_nrf52840.repl
connector Connect sysbus.radio wireless
connector Connect sysbus.uart1 central_hci
# Create peripheral machines
mach create "peripheral_host"
machine LoadPlatformDescription @platforms/boards/nrf52840dk_nrf52840.repl
connector Connect sysbus.uart1 peripheral_hci
showAnalyzer uart0
mach create "peripheral_controller"
machine LoadPlatformDescription @platforms/boards/nrf52840dk_nrf52840.repl
connector Connect sysbus.radio wireless
connector Connect sysbus.uart1 peripheral_hci
# Set Quantum value for CPUs. This is required by BLE stack
# as it results in more often synchronization between machines.
emulation SetGlobalQuantum "0.00001"
macro reset
"""
mach set "central_host"
sysbus LoadELF $central_bin
cpu IsHalted true
mach set "peripheral_host"
sysbus LoadELF $peripheral_bin
cpu IsHalted true
mach set "central_controller"
sysbus LoadELF $hci_uart_bin
mach set "peripheral_controller"
sysbus LoadELF $hci_uart_bin
# Controllers need to be started earlier as they need time to configure UART devices for reception.
# Hosts begin UART transmission early so without the delay the initial part of the communication would be dropped.
emulation RunFor "1"
mach set "central_host"
cpu IsHalted false
mach set "peripheral_host"
cpu IsHalted false
"""
runMacro $reset