Add memory diagnostics and optimize PSRAM usage

This commit is contained in:
2026-08-25 11:08:02 +02:00
parent f6a275c543
commit d779fb046e
7 changed files with 106 additions and 14 deletions
+11 -3
View File
@@ -28,6 +28,7 @@
#define SSH_TRANSPORT_TASK_STACK_SIZE 20480U
#define SSH_TRANSPORT_TASK_PRIORITY 5U
#define SSH_TRANSPORT_TASK_CORE 1
#define SSH_TRANSPORT_LOOP_DELAY_MS 10U
#define SSH_TRANSPORT_COMMAND_TIMEOUT_MS 10000U
#define SSH_TRANSPORT_RECONCILE_INTERVAL_US 250000LL
@@ -984,9 +985,9 @@ esp_err_t ssh_transport_init(void)
s_session_snapshots[index].socket_fd = -1;
s_session_snapshots[index].state = SSH_TRANSPORT_SESSION_FREE;
}
BaseType_t created = xTaskCreate(transport_task, "ssh_transport",
SSH_TRANSPORT_TASK_STACK_SIZE, NULL,
SSH_TRANSPORT_TASK_PRIORITY, &s_task);
BaseType_t created = xTaskCreatePinnedToCore(
transport_task, "ssh_transport", SSH_TRANSPORT_TASK_STACK_SIZE, NULL,
SSH_TRANSPORT_TASK_PRIORITY, &s_task, SSH_TRANSPORT_TASK_CORE);
if (created != pdPASS) {
s_task = NULL;
vSemaphoreDelete(command_mutex);
@@ -1127,12 +1128,15 @@ esp_err_t ssh_transport_get_snapshot(ssh_transport_snapshot_t *snapshot)
taskEXIT_CRITICAL(&s_lock);
return ESP_ERR_INVALID_STATE;
}
TaskHandle_t task = s_task;
memset(snapshot, 0, sizeof(*snapshot));
snapshot->initialized = s_initialized;
snapshot->running = s_running;
snapshot->transitioning = s_transitioning;
snapshot->port = SSH_TRANSPORT_PORT;
snapshot->last_error = s_last_error;
snapshot->task_core_id = SSH_TRANSPORT_TASK_CORE;
snapshot->task_stack_size = SSH_TRANSPORT_TASK_STACK_SIZE;
snapshot->counters = s_counters;
for (size_t index = 0U; index < SSH_TRANSPORT_MAX_SESSIONS; ++index) {
snapshot->sessions[index] = s_session_snapshots[index];
@@ -1141,6 +1145,10 @@ esp_err_t ssh_transport_get_snapshot(ssh_transport_snapshot_t *snapshot)
}
}
taskEXIT_CRITICAL(&s_lock);
if (task != NULL) {
snapshot->task_stack_free_minimum =
(uint32_t)uxTaskGetStackHighWaterMark(task);
}
return ESP_OK;
}