@@ -80,6 +80,28 @@ Functions
80
80
The result of :func: `gc.mem_free() ` is the total of the current "free"
81
81
and "max new split" values printed by :func: `micropython.mem_info() `.
82
82
83
+ .. function :: idf_task_stats()
84
+
85
+ Returns information about running ESP-IDF/FreeRTOS tasks, which include
86
+ MicroPython threads. This data is useful to gain insight into how much time
87
+ tasks spend running or if they are blocked for significant parts of time,
88
+ and to determine if allocated stacks are fully utilized or might be reduced.
89
+
90
+ ``CONFIG_FREERTOS_USE_TRACE_FACILITY=y `` must be set in the board
91
+ configuration to make this method available. Additionally setting
92
+ ``CONFIG_FREERTOS_VTASKLIST_INCLUDE_COREID=y `` and
93
+ ``CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=y `` is recommended to be able to
94
+ retrieve the core id and runtime respectively.
95
+
96
+ The return value is a 2-tuple where the first value is the total runtime,
97
+ and the second a list of tasks. Each task is a 7-tuple containing: the task
98
+ ID, name, current state, priority, runtime, stack high water mark, and the
99
+ ID of the core it is running on.
100
+
101
+ .. note :: For an easier to use output based on this function you can use the
102
+ `utop library <https://github.com/micropython/micropython-lib/tree/master/micropython/utop> `,
103
+ which implements a live overview similar to the Unix ``top `` command.
104
+
83
105
84
106
Flash partitions
85
107
----------------
@@ -93,6 +115,43 @@ methods to enable over-the-air (OTA) updates.
93
115
of the partition to retrieve, or one of the constants: ``BOOT `` or ``RUNNING ``.
94
116
*block_size * specifies the byte size of an individual block.
95
117
118
+
119
+ /**
120
+ * @brief Register a partition on an external flash chip
121
+ *
122
+ * This API allows designating certain areas of external flash chips (identified by the esp_flash_t structure)
123
+ * as partitions. This allows using them with components which access SPI flash through the esp_partition API.
124
+ *
125
+ * @param flash_chip Pointer to the structure identifying the flash chip
126
+ * @param offset Address in bytes, where the partition starts
127
+ * @param size Size of the partition in bytes
128
+ * @param label Partition name
129
+ * @param type One of the partition types (ESP_PARTITION_TYPE_*), or an integer. Note that applications can not be booted from external flash
130
+ * chips, so using ESP_PARTITION_TYPE_APP is not supported.
131
+ * @param subtype One of the partition subtypes (ESP_PARTITION_SUBTYPE_*), or an integer.
132
+ * @param[out] out_partition Output, if non-NULL, receives the pointer to the resulting esp_partition_t structure
133
+ * @return
134
+ * - ESP_OK on success
135
+ * - ESP_ERR_NO_MEM if memory allocation has failed
136
+ * - ESP_ERR_INVALID_ARG if the new partition overlaps another partition on the same flash chip
137
+ * - ESP_ERR_INVALID_SIZE if the partition doesn't fit into the flash chip size
138
+ */
139
+ // esp_err_t esp_partition_register_external(esp_flash_t * flash_chip, size_t offset, size_t size,
140
+ // const char* label, esp_partition_type_t type, esp_partition_subtype_t subtype,
141
+ // const esp_partition_t** out_partition);
142
+
143
+ .. classmethod :: Partition.register(offset, size, label=None, type=TYPE_DATA, subtype=0x06, block_size=4096)
144
+
145
+ Register a new partition that isn't specified in the partition table. Useful for
146
+ accessing data outside of the defined partitions. Returns a Partition object.
147
+
148
+ *block_size * specifies the byte size of an individual block used by the returned
149
+ object.
150
+
151
+ .. method :: Partition.deregister()
152
+
153
+ Deregisters a previously registered partition.
154
+
96
155
.. classmethod :: Partition.find(type=TYPE_APP, subtype=0xff, label=None, block_size=4096)
97
156
98
157
Find a partition specified by *type *, *subtype * and *label *. Returns a
0 commit comments