Size: a a a

2020 December 14

КО

Кот Обормот... in Embedded Group
Всем привет. Можно ли на этапе компиляции узнать сколько оперативки будет использовать код?
Не учитывая всякие маллоки
источник

VK

Viacheslav Kaloshin in Embedded Group
Ну обычно после компиляции это пишется. А так objdump или как-то так на обьектик натравливаешь и он говорит, сколько чего занимает
источник

A

Alexander in Embedded Group
Кот Обормот
Всем привет. Можно ли на этапе компиляции узнать сколько оперативки будет использовать код?
Не учитывая всякие маллоки
+ map файлы можно посмотреть - если не оч. замороченные линкерные файлы
источник

КО

Кот Обормот... in Embedded Group
Спасибо) Еще вопрос)

И правда в мэп файле очень удобно смотреть инфу по оперативе.

printf("Test message: %d", number);
Где хранится строка "Test message: %d" в опреативе или во флешке?


Я так понимаю что в оперативе.  Если в оперативе, могу я каким то хитрым макросом поместить ее на флешку?
источник

I

Igor in Embedded Group
зависит от конфигурационных файлов на входе линкера
приличные среды сразу кладут всё, куда положено
источник

I

Igor in Embedded Group
константы во флэш, переменные в озу
источник

КО

Кот Обормот... in Embedded Group
Igor
зависит от конфигурационных файлов на входе линкера
приличные среды сразу кладут всё, куда положено
Например? Какие приличные а какие нет?
источник

I

Igor in Embedded Group
Кот Обормот
Например? Какие приличные а какие нет?
я сейчас конкретно про IAR и его дефолтные icf-файлы
источник

КО

Кот Обормот... in Embedded Group
Спасибо что просветили, но я не услышал ответа на вопрос, где лежит строка в моем конкретном случае. В оперативе или на флешке?
источник

I

Igor in Embedded Group
вероятнее всего, на флэшке, но настроить размещение можно как угодно
источник

h

hardegor in Embedded Group
Кот Обормот
Спасибо что просветили, но я не услышал ответа на вопрос, где лежит строка в моем конкретном случае. В оперативе или на флешке?
можно глазами в бинарник посмотреть, если он генерируется.
источник

h

hardegor in Embedded Group
И увидеть что программу с этим текстом  он положит во флеш.
источник

h

hardegor in Embedded Group
а если программа заливается в ram, то в ram положит
источник

LZ

Leonid Zaliubovskii in Embedded Group
Кот Обормот
Спасибо) Еще вопрос)

И правда в мэп файле очень удобно смотреть инфу по оперативе.

printf("Test message: %d", number);
Где хранится строка "Test message: %d" в опреативе или во флешке?


Я так понимаю что в оперативе.  Если в оперативе, могу я каким то хитрым макросом поместить ее на флешку?
если мы говорим о МК, например СТМ32 и настройки по умолчанию - оно будет записано во флеш и при старте, в pre-main (scatter load Не суть) скопирует в ОЗУ, как и любую другую константу
источник

LZ

Leonid Zaliubovskii in Embedded Group
Если грузишь все в ОЗУ - то все в ОЗУ и будет
источник

LZ

Leonid Zaliubovskii in Embedded Group
советую почитат ьпро секции .text, .bss и иже с ними. И о том, как происходит старт программы в МК.
источник

LZ

Leonid Zaliubovskii in Embedded Group
pre main arm cc например ключевые слова
источник

DC

Dmitry CTM in Embedded Group
Господа, нет ли у кого под рукой заведомо рабочего модуля I2C master для STM32F4?
Решение на HAL актуальной версии:
1. Через DMA не хочет передавать по 1 байту, только от 2х и более.
2. Известная проблема с "зависанием" STM32 I2C master проявляется вплоть до постоянного нахождения в EV-прерывании (какой-то флаг не сбрасывается в HAL-обработчике).
источник

h

hardegor in Embedded Group
Dmitry CTM
Господа, нет ли у кого под рукой заведомо рабочего модуля I2C master для STM32F4?
Решение на HAL актуальной версии:
1. Через DMA не хочет передавать по 1 байту, только от 2х и более.
2. Известная проблема с "зависанием" STM32 I2C master проявляется вплоть до постоянного нахождения в EV-прерывании (какой-то флаг не сбрасывается в HAL-обработчике).
легких путей нет - либо написать свой, либо разобраться в существующем, потому что у каждого свой глюк вылазит.
источник

DC

Dmitry CTM in Embedded Group
hardegor
легких путей нет - либо написать свой, либо разобраться в существующем, потому что у каждого свой глюк вылазит.
спасибо за совет, egor. К сожалению, это крайний вариант просто по ограниченности по времени сейчас. Если бы  кто-то подсказал, как исправить чтение / запись 1 байта через DMA (хотя бы запись!), возможно, это решило бы данную задачу...
источник