{"library":"pyocd","title":"pyOCD","description":"pyOCD is an open-source Python library and command-line tool for programming and debugging Arm Cortex-M microcontrollers using various debug probes such as CMSIS-DAP, J-Link, and ST-Link. It provides a flexible Python API for low-level target control, suitable for automated testing and CI/CD workflows, alongside a powerful command-line interface for common operations like GDB server, flashing, and erasing. Currently at version 0.44.0, pyOCD maintains an active development cycle with several minor releases annually.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install pyocd","pip install pyocd[pemicro]"],"cli":{"name":"pyocd","version":"0.44.1"}},"imports":["from pyocd.core.helpers import ConnectHelper","from pyocd.flash.file_programmer import FileProgrammer"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import time\nimport logging\nimport os\n\nfrom pyocd.core.helpers import ConnectHelper\nfrom pyocd.flash.file_programmer import FileProgrammer\n\nlogging.basicConfig(level=logging.INFO)\n\nFIRMWARE_PATH = \"your_firmware.hex\" # Replace with the actual path to your firmware\n\n# Create a dummy firmware file for demonstration if it doesn't exist\nif not os.path.exists(FIRMWARE_PATH):\n    with open(FIRMWARE_PATH, \"w\") as f:\n        f.write(\":100000000000000000000000000000000000000000\\n\") # Minimal valid HEX file\n\ntry:\n    # Connect to the target with the first found probe.\n    # For a specific probe, use unique_id=\"E6616407E3646B29\"\n    # For a specific target, use options={\"target_override\": \"nrf52840\"}\n    with ConnectHelper.session_with_chosen_probe() as session:\n        target = session.target\n        board_id = session.board.unique_id if session.board else \"Unknown\"\n        logging.info(f\"Connected to probe: {board_id}, target: {target.name}\")\n\n        # Halt the target\n        target.halt()\n        logging.info(\"Target halted.\")\n\n        # Program firmware\n        logging.info(f\"Programming {FIRMWARE_PATH}...\")\n        FileProgrammer(session).program(FIRMWARE_PATH)\n        logging.info(\"Programming complete.\")\n\n        # Reset and run\n        target.reset_and_run()\n        logging.info(\"Target reset and running.\")\n\n        # Allow the target to run for a short period (demonstration)\n        time.sleep(1)\n\nexcept Exception as e:\n    logging.error(f\"An error occurred: {e}\")\n    logging.info(\"Please ensure a debug probe is connected and compatible firmware is specified.\")\n","lang":"python","description":"This quickstart demonstrates how to connect to a debug probe, halt the target microcontroller, program a firmware image (HEX format in this example), and then reset and run the target using the pyOCD Python API. Ensure a debug probe is connected and `your_firmware.hex` is replaced with an actual firmware file or created as a dummy for testing.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"0.44.1","pypi_latest":"0.44.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":4.7,"avg_import_s":1.57,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyocd","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pemicro","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyocd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.5,"import_time_s":1.18,"mem_mb":24.6,"disk_size":"76M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pemicro","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.1,"import_time_s":1.2,"mem_mb":24.8,"disk_size":"86M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyocd","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pemicro","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyocd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.6,"import_time_s":1.73,"mem_mb":27.1,"disk_size":"81M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pemicro","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.9,"import_time_s":1.74,"mem_mb":27.4,"disk_size":"92M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyocd","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pemicro","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyocd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.4,"import_time_s":1.71,"mem_mb":26.7,"disk_size":"72M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pemicro","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.4,"import_time_s":1.86,"mem_mb":26.8,"disk_size":"83M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyocd","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pemicro","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyocd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.1,"import_time_s":1.66,"mem_mb":27.1,"disk_size":"72M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pemicro","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":4.4,"import_time_s":1.65,"mem_mb":27.4,"disk_size":"83M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyocd","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pemicro","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyocd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.1,"import_time_s":1.47,"mem_mb":24.7,"disk_size":"76M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pemicro","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.7,"import_time_s":1.46,"mem_mb":24.9,"disk_size":"86M"}]}}