zwischenstand
This commit is contained in:
@@ -1,17 +1,16 @@
|
||||
if(CONFIG_FS_MGMT)
|
||||
if(CONFIG_FW_MGMT)
|
||||
zephyr_library()
|
||||
zephyr_library_sources(src/fs_mgmt.c)
|
||||
zephyr_library_sources(src/fw_mgmt.c)
|
||||
zephyr_include_directories(include)
|
||||
|
||||
if(CONFIG_FILE_SYSTEM_LITTLEFS)
|
||||
if(DEFINED ZEPHYR_LITTLEFS_MODULE_DIR)
|
||||
zephyr_include_directories(${ZEPHYR_LITTLEFS_MODULE_DIR})
|
||||
elseif(DEFINED WEST_TOPDIR)
|
||||
zephyr_include_directories(${WEST_TOPDIR}/modules/fs/littlefs)
|
||||
if(CONFIG_MCUBOOT_IMG_MANAGER)
|
||||
# img_mgmt.h pulls in <bootutil/image.h> and <zcbor_common.h>
|
||||
if(DEFINED ZEPHYR_MCUBOOT_MODULE_DIR)
|
||||
zephyr_include_directories(${ZEPHYR_MCUBOOT_MODULE_DIR}/boot/bootutil/include)
|
||||
zephyr_include_directories(${ZEPHYR_MCUBOOT_MODULE_DIR}/boot/zephyr/include)
|
||||
endif()
|
||||
|
||||
if(DEFINED ZEPHYR_BASE)
|
||||
zephyr_include_directories(${ZEPHYR_BASE}/modules/littlefs)
|
||||
if(DEFINED ZEPHYR_ZCBOR_MODULE_DIR)
|
||||
zephyr_include_directories(${ZEPHYR_ZCBOR_MODULE_DIR}/include)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -1,64 +1,22 @@
|
||||
menuconfig FS_MGMT
|
||||
bool "File System Management"
|
||||
menuconfig FW_MGMT
|
||||
bool "Firmware Management"
|
||||
select FLASH
|
||||
select FLASH_MAP
|
||||
select FILE_SYSTEM
|
||||
select FILE_SYSTEM_LITTLEFS
|
||||
select FILE_SYSTEM_MKFS
|
||||
select STREAM_FLASH
|
||||
select FLASH_PAGE_LAYOUT
|
||||
select NORDIC_QSPI_NOR if SOC_SERIES_NRF52X && (SOC_NRF52840_QIAA || SOC_NRF52833_QIAA)
|
||||
select BOOTLOADER_MCUBOOT
|
||||
select IMG_MANAGER
|
||||
select MCUBOOT_IMG_MGR
|
||||
select HWINFO
|
||||
|
||||
help
|
||||
Library for initializing and managing the file system.
|
||||
Library for firmware operations.
|
||||
|
||||
if FS_MGMT
|
||||
config FS_MGMT_MOUNT_POINT
|
||||
string "Littlefs Mount Point"
|
||||
default "/lfs"
|
||||
help
|
||||
Set the mount point for the Littlefs file system. Default is "/lfs".
|
||||
|
||||
config FS_MGMT_AUDIO_SUBDIR
|
||||
string "Audio File Path"
|
||||
default "/a"
|
||||
help
|
||||
Set the path for the audio file within the file system. Default is "/a".
|
||||
|
||||
config FS_MGMT_SYSTEM_SUBDIR
|
||||
string "System File Path"
|
||||
default "/sys"
|
||||
help
|
||||
Set the path for the system file within the file system. Default is "/sys".
|
||||
|
||||
config FS_MGMT_THREAD_STACK_SIZE
|
||||
int "File System Management Thread Stack Size"
|
||||
default 2048
|
||||
help
|
||||
Set the stack size for the file system management thread. Default is 2048 bytes.
|
||||
|
||||
config FS_MGMT_THREAD_PRIORITY
|
||||
int "File System Management Thread Priority"
|
||||
default 6
|
||||
help
|
||||
Set the priority for the file system management thread. Default is 6.
|
||||
|
||||
if SOC_SERIES_NRF52X
|
||||
config PM_PARTITION_REGION_LITTLEFS_EXTERNAL
|
||||
default y
|
||||
|
||||
config PM_PARTITION_SIZE_LITTLEFS
|
||||
default 0x1000000
|
||||
endif # SOC_SERIES_NRF52X
|
||||
|
||||
config FS_LITTLEFS_READ_SIZE
|
||||
default 256
|
||||
config FS_LITTLEFS_PROG_SIZE
|
||||
default 256
|
||||
config FS_LITTLEFS_CACHE_SIZE
|
||||
default 4096
|
||||
config FS_LITTLEFS_LOOKAHEAD_SIZE
|
||||
default 512
|
||||
|
||||
module = FS_MGMT
|
||||
module-str = fs_mgmt
|
||||
if FW_MGMT
|
||||
config MCUBOOT_UTIL_LOG_LEVEL_ERR
|
||||
# config CONFIG_MCUMGR_GRP_IMG
|
||||
# default y
|
||||
module = FW_MGMT
|
||||
module-str = fw_mgmt
|
||||
source "subsys/logging/Kconfig.template.log_config"
|
||||
endif # FS_MGMT
|
||||
endif # FW_MGMT
|
||||
23
firmware/libs/fw_mgmt/include/fw_mgmt.h
Normal file
23
firmware/libs/fw_mgmt/include/fw_mgmt.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef FW_MGMT_H
|
||||
#define FW_MGMT_H
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FW_STATE_CONFIRMED = 0x00,
|
||||
FW_STATE_PENDING = 0x01,
|
||||
FW_STATE_TESTING = 0x02,
|
||||
FW_STATE_UNKNOWN = 0xFF
|
||||
} fw_state_t;
|
||||
|
||||
const char *fw_mgmt_get_fw_version_string(void);
|
||||
const char *fw_mgmt_get_kernel_version_string(void);
|
||||
const char *fw_mgmt_get_board_name();
|
||||
const char *fw_mgmt_get_board_revision();
|
||||
const char *fw_mgmt_get_soc_name();
|
||||
int fw_mgmt_get_id(uint8_t *buffer, size_t length);
|
||||
ssize_t fw_mgmt_get_slot1_size(void);
|
||||
|
||||
fw_state_t fw_mgmt_get_fw_state(void);
|
||||
#endif /* FW_MGMT_H */
|
||||
79
firmware/libs/fw_mgmt/src/fw_mgmt.c
Normal file
79
firmware/libs/fw_mgmt/src/fw_mgmt.c
Normal file
@@ -0,0 +1,79 @@
|
||||
#include <zephyr/kernel.h>
|
||||
#include <zephyr/logging/log.h>
|
||||
#include <zephyr/dfu/mcuboot.h>
|
||||
#include <zephyr/drivers/hwinfo.h>
|
||||
#include <zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt.h>
|
||||
#include <version.h>
|
||||
#include <app_version.h>
|
||||
|
||||
#include "fw_mgmt.h"
|
||||
|
||||
#define SLOT1_PARTITION_SIZE DT_REG_SIZE(DT_NODELABEL(slot1_partition))
|
||||
|
||||
static char fw_version_string[] = APP_VERSION_STRING;
|
||||
static char kernel_version_string[] = KERNEL_VERSION_STRING;
|
||||
static char board_name[] = CONFIG_BOARD;
|
||||
static char board_revision[] = CONFIG_BOARD_REVISION;
|
||||
static char soc_name[] = CONFIG_SOC;
|
||||
static uint8_t hwid[8];
|
||||
|
||||
LOG_MODULE_REGISTER(fw_mgmt, CONFIG_FW_MGMT_LOG_LEVEL);
|
||||
|
||||
const char* fw_mgmt_get_fw_version_string(void)
|
||||
{
|
||||
return (const char*)fw_version_string;
|
||||
}
|
||||
|
||||
const char* fw_mgmt_get_kernel_version_string(void)
|
||||
{
|
||||
return (const char*)kernel_version_string;
|
||||
}
|
||||
|
||||
const char* fw_mgmt_get_board_name(void)
|
||||
{
|
||||
return (const char*)board_name;
|
||||
}
|
||||
|
||||
const char* fw_mgmt_get_board_revision(void)
|
||||
{
|
||||
return (const char*)board_revision;
|
||||
}
|
||||
|
||||
const char* fw_mgmt_get_soc_name(void)
|
||||
{
|
||||
return (const char*)soc_name;
|
||||
}
|
||||
|
||||
int fw_mgmt_get_id(uint8_t *buffer, size_t length)
|
||||
{
|
||||
int ret = hwinfo_get_device_id(hwid, length);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to get device EUI64: %d", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
memcpy(buffer, hwid, sizeof(hwid));
|
||||
return ret;
|
||||
}
|
||||
|
||||
fw_state_t fw_mgmt_get_fw_state(void)
|
||||
{
|
||||
if (!boot_is_img_confirmed()) {
|
||||
return FW_STATE_TESTING;
|
||||
}
|
||||
int swap_type = mcuboot_swap_type();
|
||||
if (swap_type == BOOT_SWAP_TYPE_NONE) {
|
||||
return FW_STATE_CONFIRMED;
|
||||
} else if (swap_type == BOOT_SWAP_TYPE_TEST) {
|
||||
return FW_STATE_PENDING;
|
||||
} else {
|
||||
LOG_ERR("Unexpected swap type: %d", swap_type);
|
||||
return FW_STATE_UNKNOWN; // Fallback auf bestätigten Zustand bei unerwartetem Swap-Typ
|
||||
}
|
||||
return FW_STATE_UNKNOWN; // Fallback, sollte nie erreicht werden
|
||||
}
|
||||
|
||||
ssize_t fw_mgmt_get_slot1_size(void)
|
||||
{
|
||||
return SLOT1_PARTITION_SIZE;
|
||||
}
|
||||
Reference in New Issue
Block a user