67 lines
2.4 KiB
Plaintext
67 lines
2.4 KiB
Plaintext
: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
|