Intel4004 2 22 апреля, 2019 Опубликовано 22 апреля, 2019 (изменено) · Жалоба Проблема в том, что на этапе компиляции я еще не знаю какие именно микросхемы SRAM будут распаяны на плате. Достаточно ли для этого по новому адресу прописать пустую HEAP-структуру, и подменить указатель на heap по адресу __user_libspace()+8 ? Или ссылки на heap еще где-то присутствуют? Изменено 22 апреля, 2019 пользователем Intel4004 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба А как вы собираетесь из кода выяснять какого объема ОЗУ стоит снаружи? Кстати, какой компилятор? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба Хоть убей, не понимаю проблему. Если прошивка помещается и работает на каком-то минимальном объёме памяти, то установка большего количества памяти ничего не изменит. Ну не будет она использоваться на всю, да и хрен с ней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intel4004 2 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба Поясняю: на плате могут распаять SRAM разного размера, могут вообще не распаивать. Конфигурация платы будет прошита в EEPROMке. В зависимости от конфигурации настраиваю heap (адрес/размер), и в зависимости от размера блокирую некоторые функции программы, чтобы не выжрать весь heap. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба Компилятор какой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intel4004 2 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба 13 minutes ago, Forger said: Компилятор какой? Keil. ARM. 5 или 6. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба 3 minutes ago, Intel4004 said: Keil. ARM. 5 или 6. http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0349a/CJAGAAHA.html Нужно переопределить библиотечную функцию __user_setup_stackheap() или __user_initial_stackheap() и учесть, что они вызывается автоматом ДО вызова main(). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба 1 час назад, Intel4004 сказал: Достаточно ли для этого по новому адресу прописать пустую HEAP-структуру, и подменить указатель на heap по адресу __user_libspace()+8 ? Думаете менеджер кучи при старте детектирует какие вы микросхемы памяти впаяли и сколько? Ищите в настройках компилятора где задаётся размер кучи. В IAR-е подсказать могу, но в Кейле не силён, увы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intel4004 2 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба 4 minutes ago, Forger said: Нужно переопределить библиотечную функцию __user_setup_stackheap() или __user_initial_stackheap() и учесть, что они вызывается автоматом ДО вызова main(). Этот вариант я знаю. Проблема в том, что конфигурацию платы я могу прочитать только после запуска RTOS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба 4 minutes ago, Intel4004 said: Этот вариант я знаю. Проблема в том, что конфигурацию платы я могу прочитать только после запуска RTOS. Есть простое решение - отказаться от использования штатной кучи. Вообще. Во всех своих проектах именно так и сделал - одной головной болью меньше ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба 46 минут назад, Intel4004 сказал: Конфигурация платы будет прошита в EEPROMке. Вместо этого зашить прошивку с урезанным/расширенным функционалом и не сношать мозги. 7 минут назад, Intel4004 сказал: Проблема в том, что конфигурацию платы я могу прочитать только после запуска RTOS. Заратустра не позволяет что-ли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба 18 минут назад, jcxz сказал: Ищите в настройках компилятора где задаётся размер кучи. В IAR-е подсказать могу, но в Кейле не силён, увы. В Кейле задается в startup_... .s Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intel4004 2 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба 2 minutes ago, Forger said: Есть простое решение - отказаться от использования штатной кучи. Вообще. Во всех своих проектах именно так и сделал - одной головной болью меньше ;) Я бы с удовольствием. Но сторонние библиотеки (JSON например) эту кучу пользуют со страшной силой. 4 minutes ago, VladislavS said: Вместо этого зашить прошивку с урезанным/расширенным функционалом и не сношать мозги. И компилять из одного комплекта исходников пару десятков разных бинарников? И иметь геморрой с производством, которое все перепутает и будет, как вы говорите, сношать мне мозги что ничего не работает? Лучше я отмучаюсь один раз, написав универсальную прошивку, чем пару раз в неделю заново объяснять что и в каком случае из этого зоопарка надо прошивать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба Just now, Intel4004 said: Я бы с удовольствием. Но сторонние библиотеки (JSON например) эту кучу пользуют со страшной силой. Я же говорю - отказаться от использования штатной кучи , используйте стороннюю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intel4004 2 22 апреля, 2019 Опубликовано 22 апреля, 2019 · Жалоба Just now, Forger said: Я же говорю - отказаться от использования штатной кучи , используйте стороннюю. Тогда второй вопрос: а как к этому отнесется Keil RTX ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться