Перейти к содержанию
    

Использование RAM в CCS

Привет всем. Пишу проект в CCSv6 под msp430f6721 (32к FLASH, 2к RAM) оптимизация отключена.

никак не могу разобраться, где посмотреть как лежат в памяти мои переменные.

Смотрю map-файл - в нем есть секции .bss, .data, .stack. Со стеком все понятно. в .data лежит список из нескольких файлов в формате *.obj:

 

.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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...