реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Использование RAM в CCS
slavokhire5
сообщение Oct 8 2015, 08:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 31-03-14
Из: Харьков
Пользователь №: 81 165



Привет всем. Пишу проект в CCSv6 под msp430f6721 (32к FLASH, 2к RAM) оптимизация отключена.
никак не могу разобраться, где посмотреть как лежат в памяти мои переменные.
Смотрю map-файл - в нем есть секции .bss, .data, .stack. Со стеком все понятно. в .data лежит список из нескольких файлов в формате *.obj:

CODE
.data 0 00002052 0000001a UNINITIALIZED
00002052 00000008 sensor_service.obj (.data)
0000205a 00000007 adc.obj (.data)
00002061 00000001 hci.obj (.data)
00002062 00000006 ble.obj (.data)
00002068 00000004 main.obj (.data)


я так понимаю, это использование памяти автоматическими и/или статическими переменными, расположенными внутри функций в соответствующих файлах. окей, смотрим содержимое main.c:
есть внутри main() переменная uint32_t systick_old, больше там никаких переменных не создается. 4 байта. подходит. Далее смотрим adc.c. там переменных внутри ф-ций побольше:
static uint8_t adc_cnt;
static uint32_t adc_total;
uint8_t voltage;
uint8_t percents;
static uint8_t voltage_old;
получается 8 байт. все эти переменные используются. похоже, на счет того, что лежит в области .data я ошибаюсь. что же там лежит? это первый вопрос

в области .bss вероятно лежат глобальные переменные (если я ошибаюсь - скажите)

второй вопрос: как увидеть нормальный map-файл, где видно занимаемый объем памяти каждой переменной? допустим у меня есть глобальная переменная systick, в map-файле указано, где она лежит, но не указано, сколько занимает. с мелкими переменными в своем коде все просто. а если где-то в недрах библиотеки какой-то буфер жрет кучу памяти, как его найти в .map?

и третий вопрос. есть в CCS вкладка memory allocation, которая показывает, сколько памяти занимается. там указан объем используемой RAM == 1212 байт и FLASH == 10726 байт.
Когда же я захожу в дебаг, в консоли написано:
Loading complete. There were 10726 (code) and 48 (data) bytes written to FLASH/FRAM. The expected RAM usage is 1822 (uninitialized data + stack) bytes.

Отчего так разрослась используемая область RAM? где глянуть что ее сожрало? (в дебаге CIO отключено)

Сообщение отредактировал slavokhire5 - Oct 8 2015, 08:40
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th August 2025 - 14:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.0136 секунд с 7
ELECTRONIX ©2004-2016