Skip to content

Commit 4778e5c

Browse files
authored
Ocre containers: Adding support for NRF5340-DK board (project-ocre#93)
WIP: Using nordic NRF5340DK board for testing and leveraging Ocre containers. Currently adding minimal support to make it compile and run on the actual hardware. Will continue adding configs across with the functionalities Signed-off-by: Federico Roux <rouxfederico@gmail.com>
1 parent f555f1b commit 4778e5c

File tree

5 files changed

+125
-6
lines changed

5 files changed

+125
-6
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
CONFIG_ARM_MPU=y
2+
CONFIG_MAIN_STACK_SIZE=4096
3+
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
4+
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=-1
5+
CONFIG_HEAP_MEM_POOL_SIZE=32768
6+
7+
# Container defaults - Reduced for nRF5340's limited RAM
8+
CONFIG_MAX_CONTAINERS=2
9+
CONFIG_OCRE_WAMR_HEAP_BUFFER_SIZE=180000
10+
CONFIG_OCRE_CONTAINER_DEFAULT_HEAP_SIZE=4096
11+
CONFIG_OCRE_CONTAINER_DEFAULT_STACK_SIZE=4096
12+
13+
# DISABLE OCRE SHELL (this is what's causing the shell_fprintf errors!)
14+
CONFIG_OCRE_SHELL=n
15+
16+
# Disable the main Zephyr shell AND all shell subsystems
17+
CONFIG_NET_SHELL=n
18+
CONFIG_FILE_SYSTEM_SHELL=n
19+
CONFIG_SENSOR_SHELL=n
20+
21+
# Override shell-related configs from prj.conf since shell is disabled
22+
23+
# Random number generator (REQUIRED by networking and RNG sensor)
24+
CONFIG_ENTROPY_GENERATOR=y
25+
CONFIG_TEST_RANDOM_GENERATOR=y
26+
27+
# Reduce networking stack sizes to save RAM
28+
CONFIG_NET_TX_STACK_SIZE=1024
29+
CONFIG_NET_RX_STACK_SIZE=2048
30+
CONFIG_NET_BUF_TX_COUNT=8
31+
CONFIG_NET_BUF_RX_COUNT=16
32+
CONFIG_NET_MGMT_EVENT_STACK_SIZE=1024
33+
CONFIG_NET_PKT_RX_COUNT=8
34+
CONFIG_NET_PKT_TX_COUNT=8
35+
CONFIG_NET_BUF_DATA_SIZE=128
36+
37+
# Bus interfaces
38+
CONFIG_GPIO=y
39+
40+
# Ocre Sensors support
41+
CONFIG_SENSOR=y
42+
CONFIG_OCRE_SENSORS=y
43+
CONFIG_RNG_SENSOR=y
44+
45+
# Ocre GPIO Support (minimal)
46+
CONFIG_OCRE_GPIO=y
47+
CONFIG_OCRE_GPIO_MAX_PORTS=4
48+
CONFIG_OCRE_GPIO_PINS_PER_PORT=8
49+
CONFIG_OCRE_GPIO_MAX_PINS=32
50+
51+
# Disable container messaging to save RAM
52+
CONFIG_OCRE_CONTAINER_MESSAGING=y
53+
54+
# Enable container filesystem for WASI stdio
55+
CONFIG_OCRE_CONTAINER_FILESYSTEM=y
56+
57+
# CONFIG_BOOTLOADER_MCUBOOT=n
58+
# # CONFIG_IMG_MANAGER=n
59+
# CONFIG_MCUBOOT_IMG_MANAGER=n
60+
# CONFIG_STREAM_FLASH=n
61+
# CONFIG_IMG_ERASE_PROGRESSIVELY=n
62+
63+
# Flash settings
64+
CONFIG_FLASH=y
65+
CONFIG_FLASH_MAP=y
66+
CONFIG_FLASH_PAGE_LAYOUT=y
67+
68+
# Serial/UART
69+
CONFIG_SERIAL=y
70+
CONFIG_UART_CONSOLE=y
71+
CONFIG_CONSOLE=y
72+
73+
# Reduce other buffers
74+
CONFIG_ZVFS_OPEN_MAX=8
75+
CONFIG_ZVFS_EVENTFD_MAX=5
76+
77+
CONFIG_LOG_TRACE_SHORT_TIMESTAMP=n
78+
79+
CONFIG_SHELL_PROMPT_UART=""
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/ {
2+
aliases {
3+
rng0 = &rng_device;
4+
led0 = &led0;
5+
};
6+
7+
rng_device: rng_0 {
8+
compatible = "custom,rng-sensor";
9+
label = "RNG Sensor";
10+
status = "okay";
11+
};
12+
13+
devices {
14+
compatible = "custom,devices";
15+
status = "okay";
16+
device_list = <&rng_device>;
17+
};
18+
};
19+
20+
/* Enable one LED for blinky */
21+
&led0 {
22+
status = "okay";
23+
};
24+
25+
&flash0 {
26+
partitions {
27+
/delete-node/ partition@f8000;
28+
29+
user_data_partition: partition@e0000 {
30+
label = "user_data";
31+
reg = <0x000e0000 DT_SIZE_K(128)>;
32+
};
33+
};
34+
};

build.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,11 @@ if [[ "$TARGET" == "z" ]]; then
9191
-DDTC_OVERLAY_FILE=boards/${ZEPHYR_BOARD}.overlay\;boards/enc28j60.overlay"
9292
echo "Building for b_u585i_iot02a with ENC28J60 support"
9393
;;
94+
nrf5340)
95+
ZEPHYR_BOARD="nrf5340dk/nrf5340/cpuapp"
96+
CONF_EXTRA=""
97+
echo "Building for nrf5340dk board: App CPU"
98+
;;
9499
*)
95100
ZEPHYR_BOARD="$BOARD_ARG"
96101
CONF_EXTRA=""

src/ocre/ocre_gpio/ocre_gpio.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ static void gpio_callback_handler(const struct device *port, struct gpio_callbac
384384
}
385385

386386
//========================================================================================================================================================================================================================================================================================================
387-
// By Name
387+
// By Name
388388
//========================================================================================================================================================================================================================================================================================================
389389
static int find_port_index(const struct device *port) {
390390
if (!port) {
@@ -662,12 +662,12 @@ int ocre_gpio_wasm_register_callback_by_name(wasm_exec_env_t exec_env, const cha
662662

663663
int global_pin = port_idx * CONFIG_OCRE_GPIO_PINS_PER_PORT + pin;
664664
LOG_INF("Registering callback by name: %s, global_pin=%d", name, global_pin);
665-
665+
666666
if (global_pin >= CONFIG_OCRE_GPIO_MAX_PINS) {
667667
LOG_ERR("Global pin %d exceeds max %d", global_pin, CONFIG_OCRE_GPIO_MAX_PINS);
668668
return -EINVAL;
669669
}
670-
670+
671671
return ocre_gpio_register_callback(global_pin);
672672
}
673673

@@ -686,6 +686,6 @@ int ocre_gpio_wasm_unregister_callback_by_name(wasm_exec_env_t exec_env, const c
686686

687687
int global_pin = port_idx * CONFIG_OCRE_GPIO_PINS_PER_PORT + pin;
688688
LOG_INF("Unregistering callback by name: %s, global_pin=%d", name, global_pin);
689-
689+
690690
return ocre_gpio_unregister_callback(global_pin);
691691
}

west.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ manifest:
1414
- hal_st
1515
- mbedtls
1616
- cmsis_6
17-
17+
- hal_nordic
18+
1819
self:
19-
path: application
20+
path: application

0 commit comments

Comments
 (0)