|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
|
Экономия RAM.07.03.2016, 15:22. Показов 6985. Ответов 16
Метки нет (Все метки)
Камень STM32f107VC. получил неприятный сюрприз – закончился ROM. а я еще даже не начал писать.
в связи с этим хотел задать несколько вопросов. 1. если я объявил глобальную переменную uint8_t под нее все равно выделиться регистр? 2. если я засунул стринг или какую нибудь переменную во флэш - при обращении к нему он копируется в ROM или я обращаюсь в область text? 3. может есть какие нибудь трюки позволяющие экономить ROM?
0
|
|
| 07.03.2016, 15:22 | |
|
Ответы с готовыми решениями:
16
STM32 + RAM(no name) stm32 и внешняя RAM CCM RAM в 303ем |
|
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 172
|
|
| 07.03.2016, 15:41 | |
|
Выкладывайте map файл. В общем случае под uint8 будет занят один байт.
0
|
|
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
||
| 07.03.2016, 15:52 | ||
а если я создал в глобальной структуре переменную uint8_t? без выравниания она займет регистр?
0
|
||
|
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
|
||
| 07.03.2016, 15:58 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
|
|
| 07.03.2016, 16:06 | |
|
У вас 64 килобайта памяти. Очень странно, что вы столкнулись с этой проблемой, даже при том что используется LWIP. Сдается мне, что у вас в коде или в самом подходе что-то фундаментально не так.
Но вообще, как правило усилия по оптимизации памяти не стоят того на малых сериях, дешевле взять камень с большим количеством памяти на борту, или поставить отдельный чип памяти. Может быть стоит выложить код?
0
|
|
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
||
| 07.03.2016, 16:12 | ||
я думал об этом - хранить задачи на SD карте. но считывание и парсинг займут много времени.
0
|
||
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
|||||||
| 07.03.2016, 16:16 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
|
|
| 07.03.2016, 16:45 | |
|
Задачи на sd карте, это в raw массиве чтоли??? экстрим однако.
Моём понимании задача является компактным исходным кодом, которая уже в процессе своей работы размещает данные в памяти. Динные как таковые лучше хранить в W25Qxx флеш памяти. SD карта с неизвестным временем жизни - для таких операций не подходит, она больше предназначена для пользовательских данных. То-есть получается так: Все задачи в флешь мк, вся графика во внешней W25Qxx, всё с чем работает пользователь - на внешней sd карте. Неинициализированные и нулевые данные - просто адрес в флешке мк, размером с один адрес. Я сталкивался критической нехваткой флешь памяти мк всего один раз, пришлось размещать часть кода в W25Qxx. Самостоятельно написать миллионы строчек кода -просто нереально, даже в моём случае это был чужой код. Отчего моё изумление безгранично. (данные и графика не в счёт) Код... И это всё??? Инсталл должен быть в отдельной секции до майна. Размеры массивов не видны, есть подозрение что они огромны.
0
|
|
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
|
| 07.03.2016, 19:50 | |
|
спасибо за информацию. буду думать.
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
|
||
| 07.03.2016, 20:57 | ||
Хочу в прошивке реализовать некое API с основными функциями, а саму логику программы - на SD карте. Либо скрипт, либо байт-код. Интересно попробовать.
0
|
||
|
1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 225
|
|
| 07.03.2016, 21:10 | |
|
Доброго времени суток !
1) проверьте, чтоб у Вас временные переменные не были объявлены как глобальные (к примеру структуры инициализации периферии) 2) просмотрите Ваш map файл, выглядит он примерно так: (см прикрепленный файл) там есть секции которые хранятся во флешь.( в данном случае .text:). все переменные которые у Вас не изменяемые - то есть могут храниться во флешь должны быть объявлены с префиксом const пример: const char str[] = {"Hello world !!!"}; или можно указать явно секцию: char str[] __attribute__ ((section(.text))) = {"Hello world !!!"}; в этих случаях переменная str будет указывать на адрес во флешь а не в ОЗУ. В общем где то так. PS:Извини не могу добавить файл так как .ld, .map и без расширения - "Расширение запрещено администратором." В чем прикол - я не понял.
0
|
|
|
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 172
|
|
| 08.03.2016, 07:26 | |
|
А зазиповать нельзя?
0
|
|
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
||
| 08.03.2016, 12:41 | ||
Хочу в прошивке реализовать некое API с основными функциями, а саму логику программы - на SD карте. Либо скрипт, либо байт-код. Интересно попробовать. это по моему самое то http://we.iosyitistromyss.ru/STM32/prik ... stm32.html
0
|
||
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
||
| 08.03.2016, 12:45 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 225
|
|
| 08.03.2016, 15:30 | |
|
это нужно смотреть параметры камня - у stm32f2 флешь на частоте ядра, без тактов ожидания.
Зы подсмотрел про 1xx: Byts2:0 LATENCY:Latency These bits represent the ratio of the SYSCLK (system clock) period to the Ftosh access timi. 000 Zero woyt state, if 0 < SYSCLK? 24 MHz 001 One woyt state, if 24 MHz < SYSCLK ? 48 MHz 010 Two woyt states, if 48 MHz < SYSCLK ?72 MHz Получается при частотах выше 24 флешь медленнее ОЗУ, но я думаю в любом случае быстрее чем SD. Да и доступ удобней ;)
0
|
|
|
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 141
|
||
| 08.03.2016, 20:44 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
|
| 08.03.2016, 23:53 | |
|
Есть вмзуализатор elf файлов - посмотрите им. Хотя из map тоже видно всё - хоть и буквами.
0
|
|
| 08.03.2016, 23:53 | |
|
Помогаю со студенческими работами здесь
17
Объём занимаемой flash и RAM The ETH can work only when RAM is pointing at 0x24000000 A80 octa-core и память(ram) Как разделить FLASH и RAM память Как исправить ошибку «Not enough RAM 'ucHeap'»? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|