Stm32 с чего начать изучение...
- linux_rulezz
- Вымогатель припоя
- Сообщения: 611
- Зарегистрирован: Пн сен 15, 2025 08:43:23
- Откуда: Маленький СССР посреди шариатской республики
Re: Stm32 с чего начать изучение...
А я вот с утра, пока ждал будильника, подумал: а как вы, любители ртосей, решаете проблему аллокаторов?
Ведь в "младших" ARMянах нет возможности отобразить "кусочную" память на линейную виртуальную. Соответственно, выделять можно только целыми кусками, без разрывов. А это в итоге приведет к тому, что sbrk перестанет работать, т.к. кончатся целые куски нужного размера!
Ведь в "младших" ARMянах нет возможности отобразить "кусочную" память на линейную виртуальную. Соответственно, выделять можно только целыми кусками, без разрывов. А это в итоге приведет к тому, что sbrk перестанет работать, т.к. кончатся целые куски нужного размера!
Windows must die!
- Реклама
Re: Stm32 с чего начать изучение...
Статическое распределение памяти на этапе компиляции - и никаких проблем! Требование MISRA выполняется. В этом смысле РТОС не отличается от обычной системы.
- linux_rulezz
- Вымогатель припоя
- Сообщения: 611
- Зарегистрирован: Пн сен 15, 2025 08:43:23
- Откуда: Маленький СССР посреди шариатской республики
Re: Stm32 с чего начать изучение...
Rapra, однако, бывают и любители аллокаторов. Зачем их тащить в МК - не понимаю, но как-то ведь тащат!
Windows must die!
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
Помимо описанного там мастер и слейв модбас, которые прекрасно укладываются в парадигму RTOS, причем давно отлажены.
Отказываться от этого желания нет
Добавлено after 3 minutes 41 second:
По поводу аллокаторов: работа со строками стандартными libc-функциями при статическом распределении памяти порождает большой расход памяти на промежуточные буферы... И борьба с этим, порой, страшнее динамического выделения стандартными же функциями.
Отказываться от этого желания нет
Добавлено after 3 minutes 41 second:
По поводу аллокаторов: работа со строками стандартными libc-функциями при статическом распределении памяти порождает большой расход памяти на промежуточные буферы... И борьба с этим, порой, страшнее динамического выделения стандартными же функциями.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Stm32 с чего начать изучение...
У меня ПЛК исполняет задачу пользователя. Априори не известно, сколько потребуется памяти для буферов запросов, например, по Модбас, которые будет делать программа пользователя. Поэтому при старте МК у ОС запрашивается, например, 2К ОЗУ, размещением данных в которых управляют мои переопределённые new/delete. Поскольку формат данных известен, то получается работать внутри этих 2К без утечек памяти.linux_rulezz писал(а):Зачем их тащить в МК - не понимаю
- Реклама
- linux_rulezz
- Вымогатель припоя
- Сообщения: 611
- Зарегистрирован: Пн сен 15, 2025 08:43:23
- Откуда: Маленький СССР посреди шариатской республики
Re: Stm32 с чего начать изучение...
[uquote="tonyk",url="/forum/viewtopic.php?p=4790278#p4790278"]Поскольку формат данных известен, то получается работать внутри этих 2К без утечек памяти.[/uquote]
А как бороться с фрагментацией и отсутствием виртуального линейного адресного пространства?
А как бороться с фрагментацией и отсутствием виртуального линейного адресного пространства?
Windows must die!
Re: Stm32 с чего начать изучение...
Я же выше написал, что формат данных известен, плюс соответствующий подход к организации хранения, поэтому не возникает утечки памяти, вызванной её фрагментацией.linux_rulezz писал(а):А как бороться с фрагментацией и отсутствием виртуального линейного адресного пространства?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
а вот такой вопрос, касающийся упаковки структур.
если я описал структуру с битовыми полями, то она по умолчанию будет упакована в 32-битную ячейку памяти, так?
а если мне надо, чтобы она упаковалась в 16-битную, что надо сделать? прагма там какая-нибудь или атрибут - что?
если я описал структуру с битовыми полями, то она по умолчанию будет упакована в 32-битную ячейку памяти, так?
а если мне надо, чтобы она упаковалась в 16-битную, что надо сделать? прагма там какая-нибудь или атрибут - что?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Stm32 с чего начать изучение...
Нет.ARV писал(а):так?
Открываю описание языка:
Код: Выделить всё
struct имя_структуры
{
тип1 имя_поля1 : ширина_поля1;
тип2 имя_поля2 : ширина_поля2;
//..............
типi имя_поляi : ширина_поляi;
}Пишу:
Код: Выделить всё
struct
{
short
a:2,
b:3;
}
packed_structure;- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
[uquote="tonyk",url="/forum/viewtopic.php?p=4790298#p4790298"]
как в 32-битных системах - не знаю. просто мне нужно описать битовые поля для 16-битного доступа МК.
Где здесь про 4 байта?[/uquote]нигде. если я не ошибаюсь, структура с битовыми полями пакуется в размер int по умолчанию, или кратно этому размеру. если активировать packed - тут я уже путаюсь, но в опциях AVR-GCC была возможность принудительно паковать в байт.ARV писал(а):так?
как в 32-битных системах - не знаю. просто мне нужно описать битовые поля для 16-битного доступа МК.
Код: Выделить всё
typedef struct{
bool fld1 : 1;
bool fld2 : 1;
} my_struct;
// нужно чтобы sizeof(my_struct) == 2если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Stm32 с чего начать изучение...
А я вам что показал? Или спецификацию языка не читали?ARV писал(а):просто мне нужно описать битовые поля для 16-битного доступа МК.
Код: Выделить всё
struct
{
short
a:2,
b:3;
}
packed_structure;- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
хм... я ожидал, что все биты всех полей будут просуммировны и впихнуты в размер int независимо от размеров типов самих полей...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Stm32 с чего начать изучение...
[uquote="ARV",url="/forum/viewtopic.php?p=4790321#p4790321"]хм... я ожидал, что все биты всех полей будут просуммировны и впихнуты в размер int независимо от размеров типов самих полей...[/uquote]
Такое выравнивание включают для ускорения доступа. Если этого не делать, то компилятор вставляет дополнительный код для извлечения таких данных.
Такое выравнивание включают для ускорения доступа. Если этого не делать, то компилятор вставляет дополнительный код для извлечения таких данных.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
То есть мой вопрос в итоге сводится к следующему: по умолчанию структура пакуется в минимальное количество байт или для этого надо какие-то опции включить?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Stm32 с чего начать изучение...
[uquote="ARV",url="/forum/viewtopic.php?p=4790309#p4790309"][/uquote]
Код: Выделить всё
// нужно чтобы sizeof(my_struct) == 2Код: Выделить всё
#pragma pack(push, 2)
typedef struct{
bool fld1 : 1;
bool fld2 : 1;
} my_struct;
#pragma pack(pop)
Re: Stm32 с чего начать изучение...
[uquote="ARV",url="/forum/viewtopic.php?p=4790328#p4790328"]То есть мой вопрос в итоге сводится к следующему: по умолчанию структура пакуется в минимальное количество байт или для этого надо какие-то опции включить?[/uquote]
Не забывайте, что ещё есть линковщик, у которого есть свои настройки по выравниванию. Ваше
Не забывайте, что ещё есть линковщик, у которого есть свои настройки по выравниванию. Ваше
будет выполняться, но данные в памяти могут занимать гораздо больше.// нужно чтобы sizeof(my_struct) == 2
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
ну можете ответить на мой вопрос прямо, или так и будете загадки мне загадывать? если бы я знал отгадки, я б не спрашивал.
если нужны настройки - то какие именно?
мне важно, чтобы при обращению к массиву моих структур по индексу я не переписывал соседние структуры, и чтобы между структурами массива не было "дыр" из неиспользуемых байтов (т.к. в эту область памяти данные пишутся побайтно).
если нужны настройки - то какие именно?
мне важно, чтобы при обращению к массиву моих структур по индексу я не переписывал соседние структуры, и чтобы между структурами массива не было "дыр" из неиспользуемых байтов (т.к. в эту область памяти данные пишутся побайтно).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Stm32 с чего начать изучение...
Думаю, ARV, имеет в виду выравнивание по 16-ти битам, а не заботится о занятой памяти.tonyk писал(а):будет выполняться, но данные в памяти могут занимать гораздо больше.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18561
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Stm32 с чего начать изучение...
[uquote="Аlex",url="/forum/viewtopic.php?p=4790337#p4790337"]
да, именно. у меня эти "структуры" читаются и пишутся в виде регистров модбас (16-битных), а драйвер модбаса имеет к ним доступ в виде линейного массива 16-битных ячеек. поэтому мне крайне важно, чтобы ни при каких обстоятельствах между регистрами не появились дырки, и чтобы ни при каких обстоятельствах моя программа не стала писать туда по 32 бита за раз, только по 16.
Думаю, ARV, имеет в виду выравнивание по 16-ти битам, а не заботится о занятой памяти.[/uquote]tonyk писал(а):будет выполняться, но данные в памяти могут занимать гораздо больше.
да, именно. у меня эти "структуры" читаются и пишутся в виде регистров модбас (16-битных), а драйвер модбаса имеет к ним доступ в виде линейного массива 16-битных ячеек. поэтому мне крайне важно, чтобы ни при каких обстоятельствах между регистрами не появились дырки, и чтобы ни при каких обстоятельствах моя программа не стала писать туда по 32 бита за раз, только по 16.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Stm32 с чего начать изучение...
Тогда #pragma packARV писал(а):да, именно. ....


