Я использую Keil's ARM-MDK 4.11. У меня есть статически выделенный блок памяти, который используется только при запуске. Он используется до того, как планировщик инициализирован и из-за того, как RL-RTX получает контроль над управлением кучей, не может быть динамически распределен (иначе последующие распределения после запуска планировщика вызывают сбои).Как добавить память в кучу во время выполнения?
Я хотел бы добавить этот статический блок в виде свободного блока в системную кучу после инициализации планировщика. Казалось бы, __Heap_ProvideMemory() может предоставить ответ, который вызывается во время инициализации для создания начальной кучи. Однако для этого потребуется знание адреса дескриптора кучи, и я не могу найти документального метода его получения.
Любые идеи?
Я поднял запрос поддержки с ARM/Keil для этого, но их больше интересует вопрос, почему я хотел бы это сделать, и предлагая альтернативные решения. Я хорошо знаю альтернативы, но в этом случае, если это можно было бы сделать, это было бы самым чистым решением.
Реверсивное проектирование может быть решением, но это делает код восприимчивым к разрушению при обновлении инструментальной цепи. Альтернатива, которую я рассматриваю, делает задачу root намного проще (что требует минимального распределения стека) и порождает из нее обычную задачу для инициализации, так что ее стек можно динамически распределять и, следовательно, повторно использовать. Как говорится, нет проблемы, которая не может быть решена без еще одного уровня косвенности (за исключением проблемы слишком большого количества направлений)!Исходная лицензия Keil для библиотеки RL-ARM доступна за определенную плату. – Clifford 2010-12-01 09:51:37