apps/nxdiag: Add dignostic info logging support during build on nxdiag example for Espressif devices

This commit is contained in:
Eren Terzioglu 2024-11-20 13:03:29 +01:00 committed by Xiang Xiao
parent f1ae5f32f5
commit f2e5d5c13f
3 changed files with 91 additions and 0 deletions

View file

@ -74,4 +74,10 @@ config SYSTEM_NXDIAG_ESPRESSIF_CHIP
---help---
Enable Espressif-specific information about chip. Chip must be connected during build process.
config SYSTEM_NXDIAG_ESPRESSIF_VERBOSE
bool "Espressif Verbose"
default n
---help---
Enable printing Espressif-specific information about chip during build.
endif # SYSTEM_NXDIAG

View file

@ -93,6 +93,10 @@ ifeq ($(CONFIG_SYSTEM_NXDIAG_ESPRESSIF_CHIP),y)
NXDIAG_FLAGS += --espressif_chip
endif
ifeq ($(CONFIG_SYSTEM_NXDIAG_ESPRESSIF_VERBOSE),y)
NXDIAG_FLAGS += --espressif_verbose
endif
endif
# Common build

View file

@ -234,6 +234,56 @@ def get_espressif_hal_version(hal_dir):
return hal_version
def espressif_verbose(info, esp_logs):
"""
Prepare and print information on build screen.
Args:
info (dict): Information dictionary of build system.
esp_logs (str): Information string of espressif specific features.
Returns:
None.
"""
esp_verbose = "=" * 79 + "\n"
esp_verbose += "NuttX RTOS info: {}\n\n".format(info["OS_VERSION"])
if args.flags:
esp_verbose += "NuttX CFLAGS: {}\n\n".format(info["NUTTX_CFLAGS"])
esp_verbose += "NuttX CXXFLAGS: {}\n\n".format(info["NUTTX_CXXFLAGS"])
esp_verbose += "NuttX LDFLAGS: {}\n\n".format(info["NUTTX_LDFLAGS"])
if args.config:
esp_verbose += "NuttX configuration options: \n"
for i in range(len(info["NUTTX_CONFIG"])):
esp_verbose += " " + info["NUTTX_CONFIG"][i].replace('"', '\\"') + "\n"
esp_verbose += "\n\n"
if args.path:
esp_verbose += "Host system PATH: \n"
for i in range(len(info["SYSTEM_PATH"])):
esp_verbose += " " + info["SYSTEM_PATH"][i] + "\n"
esp_verbose += "\n\n"
if args.packages:
esp_verbose += "Host system installed packages: \n"
for i in range(len(info["INSTALLED_PACKAGES"])):
esp_verbose += " " + info["INSTALLED_PACKAGES"][i] + "\n"
esp_verbose += "\n\n"
if args.modules:
esp_verbose += "Host system installed python modules: \n"
for i in range(len(info["PYTHON_MODULES"])):
esp_verbose += " " + info["PYTHON_MODULES"][i] + "\n"
esp_verbose += "\n\n"
esp_verbose += "Espressif specific information: \n\n"
esp_verbose += esp_logs
esp_verbose += "=" * 79 + "\n"
eprint(esp_verbose)
# Common functions #
@ -602,9 +652,12 @@ def generate_header(args):
len(info["ESPRESSIF_BOOTLOADER"])
)
output += "static const char *ESPRESSIF_BOOTLOADER[ESPRESSIF_BOOTLOADER_ARRAY_SIZE] =\n{\n"
build_output = "Bootloader version:\n"
for key, value in info["ESPRESSIF_BOOTLOADER"].items():
output += ' "{}: {}",\n'.format(key, value)
build_output += " {}: {},\n".format(key, value)
output += "};\n\n"
build_output += "\n\n"
# Espressif toolchain version
@ -613,9 +666,12 @@ def generate_header(args):
len(info["ESPRESSIF_TOOLCHAIN"])
)
output += "static const char *ESPRESSIF_TOOLCHAIN[ESPRESSIF_TOOLCHAIN_ARRAY_SIZE] =\n{\n"
build_output += "Toolchain version:\n"
for key, value in info["ESPRESSIF_TOOLCHAIN"].items():
output += ' "{}: {}",\n'.format(key, value)
build_output += " {}: {},\n".format(key, value)
output += "};\n\n"
build_output += "\n\n"
# Espressif esptool version
@ -625,6 +681,9 @@ def generate_header(args):
output += 'static const char ESPRESSIF_ESPTOOL[] = "{}";\n\n'.format(
info["ESPRESSIF_ESPTOOL"].split("-")[1]
)
build_output += "Esptool version: {}\n\n".format(
info["ESPRESSIF_ESPTOOL"].split("-")[1]
)
# Espressif HAL version
@ -632,40 +691,53 @@ def generate_header(args):
output += 'static const char ESPRESSIF_HAL[] = "{}";\n\n'.format(
info["ESPRESSIF_HAL"]
)
build_output += "HAL version: {}\n\n".format(info["ESPRESSIF_HAL"])
if args.espressif_chip and info["ESPRESSIF_ESPTOOL"] not in "Not found":
info["ESPRESSIF_CHIP_ID"] = get_espressif_chip_id()
output += 'static const char ESPRESSIF_CHIP_ID[] = "{}";\n\n'.format(
info["ESPRESSIF_CHIP_ID"]
)
build_output += "CHIP ID: = {}\n\n".format(info["ESPRESSIF_CHIP_ID"])
info["ESPRESSIF_FLASH_ID"] = get_espressif_flash_id()
output += "#define ESPRESSIF_FLASH_ID_ARRAY_SIZE {}\n".format(
len(info["ESPRESSIF_FLASH_ID"])
)
output += "static const char *ESPRESSIF_FLASH_ID[ESPRESSIF_FLASH_ID_ARRAY_SIZE] =\n{\n"
build_output += "Flash ID:\n"
for each_item in info["ESPRESSIF_FLASH_ID"]:
output += ' "{}",\n'.format(each_item)
build_output += " {}\n".format(each_item)
output += "};\n\n"
build_output += "\n\n"
info["ESPRESSIF_SECURITY_INFO"] = get_espressif_security_info()
output += "#define ESPRESSIF_SECURITY_INFO_ARRAY_SIZE {}\n".format(
len(info["ESPRESSIF_SECURITY_INFO"])
)
output += "static const char *ESPRESSIF_SECURITY_INFO[ESPRESSIF_SECURITY_INFO_ARRAY_SIZE] =\n{\n"
build_output += "Security information: \n"
for each_item in info["ESPRESSIF_SECURITY_INFO"]:
output += ' "{}",\n'.format(each_item)
build_output += " {}\n".format(each_item)
output += "};\n\n"
build_output += "\n\n"
info["ESPRESSIF_FLASH_STAT"] = get_espressif_flash_status()
output += 'static const char ESPRESSIF_FLASH_STAT[] = "{}";\n\n'.format(
info["ESPRESSIF_FLASH_STAT"]
)
build_output += "Flash status: {}\n\n".format(info["ESPRESSIF_FLASH_STAT"])
info["ESPRESSIF_MAC_ADDR"] = get_espressif_mac_address()
output += 'static const char ESPRESSIF_MAC_ADDR[] = "{}";\n\n'.format(
info["ESPRESSIF_MAC_ADDR"]
)
build_output += "MAC address: {}\n\n".format(info["ESPRESSIF_MAC_ADDR"])
if args.espressif_verbose:
espressif_verbose(info, build_output)
output += "#endif /* __SYSTEM_INFO_H */\n"
@ -703,6 +775,9 @@ if __name__ == "__main__":
--espressif_chip:
Get Espressif specific information about chip.
Requires device connection during build.
--espressif_verbose:
Enable printing Espressif-specific information about
chip during build.
"""
# Generic arguments
@ -766,6 +841,12 @@ if __name__ == "__main__":
help="Get Espressif specific information about chip. Requires device connection during build.",
)
parser.add_argument(
"--espressif_verbose",
action="store_true",
help="Enable printing Espressif-specific information about chip during build",
)
# Parse arguments
if len(sys.argv) == 1: