mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	add pyocd upload
This commit is contained in:
		| @@ -48,7 +48,7 @@ from esphome.util import ( | |||||||
|     get_serial_ports, |     get_serial_ports, | ||||||
| ) | ) | ||||||
| from esphome.log import color, setup_log, Fore | from esphome.log import color, setup_log, Fore | ||||||
| from .zephyr_tools import smpmgr_upload, list_pyocd | from .zephyr_tools import smpmgr_upload | ||||||
|  |  | ||||||
| _LOGGER = logging.getLogger(__name__) | _LOGGER = logging.getLogger(__name__) | ||||||
|  |  | ||||||
| @@ -97,17 +97,9 @@ def choose_upload_log_host( | |||||||
|         #     ) |         #     ) | ||||||
|     if default == "SERIAL": |     if default == "SERIAL": | ||||||
|         return choose_prompt(options, purpose=purpose) |         return choose_prompt(options, purpose=purpose) | ||||||
|     pyocd = list_pyocd() |     if default == "PYOCD": | ||||||
|     if len(pyocd) > 0: |         options = [("pyocd", "PYOCD")] | ||||||
|         for probe in list_pyocd(): |         return choose_prompt(options, purpose=purpose) | ||||||
|             options.append( |  | ||||||
|                 ( |  | ||||||
|                     f"pyOCD {probe['product_name']} ({probe['unique_id']})", |  | ||||||
|                     f"pyocd {probe['unique_id']}", |  | ||||||
|                 ) |  | ||||||
|             ) |  | ||||||
|         if default == "PYOCD": |  | ||||||
|             return choose_prompt(options, purpose=purpose) |  | ||||||
|     if (show_ota and "ota" in CORE.config) or (show_api and "api" in CORE.config): |     if (show_ota and "ota" in CORE.config) or (show_api and "api" in CORE.config): | ||||||
|         options.append((f"Over The Air ({CORE.address})", CORE.address)) |         options.append((f"Over The Air ({CORE.address})", CORE.address)) | ||||||
|         if default == "OTA": |         if default == "OTA": | ||||||
| @@ -350,9 +342,8 @@ def upload_program(config, args, host): | |||||||
|  |  | ||||||
|         raise EsphomeError(f"Unknown target platform: {CORE.target_platform}") |         raise EsphomeError(f"Unknown target platform: {CORE.target_platform}") | ||||||
|  |  | ||||||
|     if host.startswith("pyocd"): |     if host == "PYOCD": | ||||||
|         print(host.split(" ")[1]) |         return upload_using_platformio(config, host, ["-t", "flash_pyocd"]) | ||||||
|         raise EsphomeError("Not implemented") |  | ||||||
|  |  | ||||||
|     if host.startswith("mcumgr"): |     if host.startswith("mcumgr"): | ||||||
|         firmware = os.path.abspath( |         firmware = os.path.abspath( | ||||||
|   | |||||||
| @@ -1,88 +0,0 @@ | |||||||
| import esphome.codegen as cg |  | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import ( |  | ||||||
|     CONF_ID, |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| from esphome.components.zephyr import zephyr_add_prj_conf, zephyr_add_overlay |  | ||||||
|  |  | ||||||
| fota_ns = cg.esphome_ns.namespace("fota") |  | ||||||
| FOTAComponent = fota_ns.class_("FOTAComponent", cg.Component) |  | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( |  | ||||||
|     cv.Schema( |  | ||||||
|         { |  | ||||||
|             cv.GenerateID(): cv.declare_id(FOTAComponent), |  | ||||||
|         } |  | ||||||
|     ).extend(cv.COMPONENT_SCHEMA), |  | ||||||
|     cv.only_on_nrf52, |  | ||||||
|     cv.only_with_zephyr, |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| bt = True |  | ||||||
| cdc = True |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): |  | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |  | ||||||
|     zephyr_add_prj_conf("NET_BUF", True) |  | ||||||
|     zephyr_add_prj_conf("ZCBOR", True) |  | ||||||
|     zephyr_add_prj_conf("MCUMGR", True) |  | ||||||
|     zephyr_add_prj_conf("BOOTLOADER_MCUBOOT", True) |  | ||||||
|  |  | ||||||
|     zephyr_add_prj_conf("IMG_MANAGER", True) |  | ||||||
|     zephyr_add_prj_conf("STREAM_FLASH", True) |  | ||||||
|     zephyr_add_prj_conf("FLASH_MAP", True) |  | ||||||
|     zephyr_add_prj_conf("FLASH", True) |  | ||||||
|     zephyr_add_prj_conf("MCUBOOT_SHELL", True) |  | ||||||
|     zephyr_add_prj_conf("SHELL", True) |  | ||||||
|     zephyr_add_prj_conf("SYSTEM_WORKQUEUE_STACK_SIZE", 2304) |  | ||||||
|     zephyr_add_prj_conf("MAIN_STACK_SIZE", 2048) |  | ||||||
|  |  | ||||||
|     zephyr_add_prj_conf("MCUMGR_GRP_IMG", True) |  | ||||||
|     zephyr_add_prj_conf("MCUMGR_GRP_OS", True) |  | ||||||
|  |  | ||||||
|     # echo |  | ||||||
|     zephyr_add_prj_conf("MCUMGR_GRP_OS_ECHO", True) |  | ||||||
|     # for Android-nRF-Connect-Device-Manager |  | ||||||
|     zephyr_add_prj_conf("MCUMGR_GRP_OS_INFO", True) |  | ||||||
|     zephyr_add_prj_conf("MCUMGR_GRP_OS_BOOTLOADER_INFO", True) |  | ||||||
|     zephyr_add_prj_conf("MCUMGR_GRP_OS_MCUMGR_PARAMS", True) |  | ||||||
|     # bt update fails without this |  | ||||||
|     zephyr_add_prj_conf("MCUMGR_GRP_SHELL", True) |  | ||||||
|     # make MTU bigger and other things |  | ||||||
|     zephyr_add_prj_conf("NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP", True) |  | ||||||
|  |  | ||||||
|     # zephyr_add_prj_conf("MCUMGR_TRANSPORT_LOG_LEVEL_DBG", True) |  | ||||||
|  |  | ||||||
|     if bt: |  | ||||||
|         zephyr_add_prj_conf("BT", True) |  | ||||||
|         zephyr_add_prj_conf("BT_PERIPHERAL", True) |  | ||||||
|         zephyr_add_prj_conf("MCUMGR_TRANSPORT_BT", True) |  | ||||||
|         # fix corrupted data during ble transport |  | ||||||
|         zephyr_add_prj_conf("MCUMGR_TRANSPORT_BT_REASSEMBLY", True) |  | ||||||
|     if cdc: |  | ||||||
|         zephyr_add_prj_conf("MCUMGR_TRANSPORT_UART", True) |  | ||||||
|         zephyr_add_prj_conf("USB_DEVICE_STACK", True) |  | ||||||
|         zephyr_add_prj_conf("BASE64", True) |  | ||||||
|         zephyr_add_prj_conf("CONSOLE", True) |  | ||||||
|         # needed ? |  | ||||||
|         zephyr_add_prj_conf("SERIAL", True) |  | ||||||
|         zephyr_add_prj_conf("UART_LINE_CTRL", True) |  | ||||||
|         zephyr_add_overlay( |  | ||||||
|             """ |  | ||||||
| / { |  | ||||||
|     chosen { |  | ||||||
|         zephyr,uart-mcumgr = &cdc_acm_uart0; |  | ||||||
|     }; |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| &zephyr_udc0 { |  | ||||||
|     cdc_acm_uart0: cdc_acm_uart0 { |  | ||||||
|         compatible = "zephyr,cdc-acm-uart"; |  | ||||||
|     }; |  | ||||||
| }; |  | ||||||
| """ |  | ||||||
|         ) |  | ||||||
|  |  | ||||||
|     await cg.register_component(var, config) |  | ||||||
| @@ -11,7 +11,6 @@ from smpclient import SMPClient | |||||||
| from smpclient.mcuboot import IMAGE_TLV, ImageInfo, TLVNotFound | from smpclient.mcuboot import IMAGE_TLV, ImageInfo, TLVNotFound | ||||||
| from smpclient.requests.image_management import ImageStatesRead, ImageStatesWrite | from smpclient.requests.image_management import ImageStatesRead, ImageStatesWrite | ||||||
| from smpclient.requests.os_management import ResetWrite | from smpclient.requests.os_management import ResetWrite | ||||||
| from pyocd.tools.lists import ListGenerator |  | ||||||
|  |  | ||||||
| from smpclient.generics import error, success | from smpclient.generics import error, success | ||||||
| from esphome.espota2 import ProgressBar | from esphome.espota2 import ProgressBar | ||||||
| @@ -127,7 +126,3 @@ async def smpmgr_upload(config, host, firmware): | |||||||
|         return 1 |         return 1 | ||||||
|  |  | ||||||
|     return 0 |     return 0 | ||||||
|  |  | ||||||
|  |  | ||||||
| def list_pyocd(): |  | ||||||
|     return ListGenerator.list_probes()["boards"] |  | ||||||
|   | |||||||
| @@ -29,8 +29,6 @@ argcomplete>=2.0.0 | |||||||
| # for mcumgr | # for mcumgr | ||||||
| git+https://github.com/tomaszduda23/smp/@f9b85266485062f6a466989e8f59b913cc83b08b | git+https://github.com/tomaszduda23/smp/@f9b85266485062f6a466989e8f59b913cc83b08b | ||||||
| git+https://github.com/tomaszduda23/smpclient/@d25c8035ae2858fd41a106058297b619d58fbcb5 | git+https://github.com/tomaszduda23/smpclient/@d25c8035ae2858fd41a106058297b619d58fbcb5 | ||||||
| # move to framework? |  | ||||||
| git+https://github.com/tomaszduda23/pyOCD/@949193f7cbf09081f8e46d6b9d2e4a79e536997e |  | ||||||
| bleak==0.21.1 | bleak==0.21.1 | ||||||
| pydantic==2.16.2 | pydantic==2.16.2 | ||||||
| cbor2==5.6.1 | cbor2==5.6.1 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user