Skip to content

Commit 6c3adef

Browse files
committed
giga_r1: load firmware image from QSPI flash
Reduces flash image size by 400kB.
1 parent 2106eda commit 6c3adef

File tree

4 files changed

+61
-1
lines changed

4 files changed

+61
-1
lines changed

loader/blobs/4343WA1_bin_qspi.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Copyright 2025 Arduino SA
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
#include <zephyr/devicetree.h>
7+
#include "wiced_resource.h"
8+
9+
#define QUADSPI_MMAP_BASE DT_REG_ADDR_BY_IDX(DT_NODELABEL(quadspi), 1)
10+
#define FLASH_CHIP_OFFSET DT_REG_ADDR(DT_NODELABEL(qspi_flash))
11+
#define AIROC_PART_OFS DT_REG_ADDR(DT_NODELABEL(airoc_firmware))
12+
13+
#define FW_ADDR (QUADSPI_MMAP_BASE + FLASH_CHIP_OFFSET + AIROC_PART_OFS)
14+
#define FW_SIZE 421098 /* same as the _bin.c file */
15+
16+
const resource_hnd_t wifi_firmware_image = {
17+
RESOURCE_IN_MEMORY,
18+
FW_SIZE,
19+
{ .mem = { (const char *) FW_ADDR } }
20+
};

loader/blobs/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ endif()
1414
if(CONFIG_AIROC_WIFI_CUSTOM)
1515
zephyr_include_directories(${CMAKE_CURRENT_LIST_DIR}) # for wifi_nvram_image.h
1616
zephyr_library_sources(4343WA1_clm_blob.c)
17-
zephyr_library_sources(4343WA1_bin.c)
17+
zephyr_library_sources(4343WA1_bin_qspi.c) # use _bin.c for a static build
1818
endif()

variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ CONFIG_SDIO_STACK=y
7070
CONFIG_SDHC_INIT_PRIORITY=75
7171

7272
CONFIG_AIROC_WIFI_CUSTOM=y
73+
CONFIG_STM32_MEMMAP=y
7374

7475
CONFIG_NETWORKING=y
7576
CONFIG_WIFI=y

variants/arduino_giga_r1_stm32h747xx_m7/arduino_giga_r1_stm32h747xx_m7.overlay

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,45 @@
342342
};
343343
};
344344

345+
qspi_flash: &n25q128a1 {
346+
/delete-node/ partitions;
347+
partitions {
348+
compatible = "fixed-partitions";
349+
#address-cells = <1>;
350+
#size-cells = <1>;
351+
352+
/* Partition 1: WiFi firmware and certificates 1MB - 4kB */
353+
wlan_partition: partition@1000 {
354+
label = "wlan";
355+
reg = <0x001000 DT_SIZE_K(1020)>;
356+
};
357+
358+
/* Partition 2: OTA 5MB */
359+
ota_partition: partition@100000 {
360+
label = "ota";
361+
reg = <0x100000 DT_SIZE_M(5)>;
362+
};
363+
364+
/* Partition 3: Provisioning KVStore 1MB */
365+
kvs_partition: partition@600000 {
366+
label = "kvs";
367+
reg = <0x600000 DT_SIZE_M(1)>;
368+
};
369+
370+
/* Partition 4: User data 7MB */
371+
storage_partition: partition@700000 {
372+
label = "storage";
373+
reg = <0x700000 DT_SIZE_M(7)>;
374+
};
375+
376+
/* Partition 5: Binary FW image for the Airoc WLAN */
377+
airoc_firmware: partition@f80000 {
378+
label = "4343WA1.bin";
379+
reg = <0xf80000 DT_SIZE_K(512)>;
380+
};
381+
};
382+
};
383+
345384
/ {
346385
zephyr,user {
347386
digital-pin-gpios = <&arduino_header 6 0>,

0 commit comments

Comments
 (0)