Вопросы по С/С++ (СИ)
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
[uquote="VladislavS",url="/forum/viewtopic.php?p=4544645#p4544645"]WiseLord, хотел посмотреть откуда 82 байта, а функция segmNum в коде вообще не используется.[/uquote]
Да, функция не используется именно в этом проекте, просто в библиотеке она есть. Для проверки добавлял её вызов в main.c сразу после segmTime(). Ну и ещё на -flto отключал.
Да, функция не используется именно в этом проекте, просто в библиотеке она есть. Для проверки добавлял её вызов в main.c сразу после segmTime(). Ну и ещё на -flto отключал.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
В AVR-ке деления через библиотечные функции. Для каждого типа (разрядности и знаковости) своя функция. Шаг в сторону с выбором типа и плюс дополнительная функция прилинковывается к коду. Отсюда и скачки в размере прошивки. Повторюсь, надо смотреть листинг в каждом конкретном случае когда оптимизацией занимаешься.
- главный колбасист
- Это не хвост, это антенна
- Сообщения: 1322
- Зарегистрирован: Чт авг 21, 2014 11:11:48
- Откуда: краснодарский край
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
А куда в шаблоне для окна windows из Dev-C++ надо засовывать свой код?
Чтобы выполнилось в этом окне.
Я куда ни сую его,компилируется с ошибками, а если ничего никуда не совать,
ошибок нет,но выполняется файл exe просто как пустое окно.
В какую щель между строками я должен вставить свой код ?
Чтобы выполнилось в этом окне.
Я куда ни сую его,компилируется с ошибками, а если ничего никуда не совать,
ошибок нет,но выполняется файл exe просто как пустое окно.
В какую щель между строками я должен вставить свой код ?
- Вложения
-
- шаблон.txt
- (2.35 КБ) 69 скачиваний
- главный колбасист
- Это не хвост, это антенна
- Сообщения: 1322
- Зарегистрирован: Чт авг 21, 2014 11:11:48
- Откуда: краснодарский край
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Да, так получилось.
з.ы.
А почему такой файл .exe огромный,под 1мб. не многовато ли для вывода двух слов ?
з.ы.
А почему такой файл .exe огромный,под 1мб. не многовато ли для вывода двух слов ?
Re: Вопросы по С/С++ (СИ)
Видимо ваш компилятор пристегивает к файлу, какие то, нужные с его точки зрения либы, у меня этот файл после компиляции g++ v.11.2 x64 имеет размер 49 кб без отладочной информации и 54 кб с нею...
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Вопросы по С/С++ (СИ)
Кто-нибудь писал для софтовых контроллеров (которые реализуются внутри ПЛИС, например NIOS в Альтере/Интел)?
Или все используют хардовые?
Или все используют хардовые?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
Писал под Microblaze.
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Вопросы по С/С++ (СИ)
[uquote="VladislavS",url="/forum/viewtopic.php?p=4555482#p4555482"]Писал под Microblaze.[/uquote]
Запомним...
Запомним...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Вопросы по С/С++ (СИ)
Коллеги, вопрос по размещению кода в программе.
Есть микроконтроллер простенький, без поддержки двухбанковой схемы. Появилась потребность обновлять на нем прошивку, для чего в планах написать несложный бутлоадер, а "гостевая" прошивка будет с кастомным линкер-скриптом, примерно как в ЭТОМ проекте.
Однако указанный проект хочется чуть доработать таким образом, чтобы ведомый контроллер мог перейти в режим прошивки по RPC-команде, потому что в целевой системе уже есть 485 шина с JSON-RPC обменом. Для этого, чтобы не изобретать велосипед, хочется взять как минимум готовое решение по JSON (ArduinoJSON, например), но это не бесплатно по ресурсам, в том числе по флэшу. В то же время обе гостевые прошивки также будут поддерживать JSON, используя, в идеале, те же библиотеки. И тогда получается такая ситуация, что придется трижды тащить зависимость в итак небольшой флэш (загрузчик + каждая прошивка). Но ведь бинарный код один и тот же (примем, что не меняем версии используемых зависимостей, версию компилятора и т.п. Ну или поместим общую часть в static-библиотеку). Собственно, вопрос: можно ли как-то использовать один и тот же код как из загрузчиков, так и из гостевых прошивок. Пока в голову идет только разместить принудительно все функции такой библиотеки в конкретную секцию, в LD-скрипте эту секцию привязать к конкретному адресу, а для гостевых прошивок потом обрезать начало/конец бинарника (где эта секция будет находиться). Спасибо!
Есть микроконтроллер простенький, без поддержки двухбанковой схемы. Появилась потребность обновлять на нем прошивку, для чего в планах написать несложный бутлоадер, а "гостевая" прошивка будет с кастомным линкер-скриптом, примерно как в ЭТОМ проекте.
Однако указанный проект хочется чуть доработать таким образом, чтобы ведомый контроллер мог перейти в режим прошивки по RPC-команде, потому что в целевой системе уже есть 485 шина с JSON-RPC обменом. Для этого, чтобы не изобретать велосипед, хочется взять как минимум готовое решение по JSON (ArduinoJSON, например), но это не бесплатно по ресурсам, в том числе по флэшу. В то же время обе гостевые прошивки также будут поддерживать JSON, используя, в идеале, те же библиотеки. И тогда получается такая ситуация, что придется трижды тащить зависимость в итак небольшой флэш (загрузчик + каждая прошивка). Но ведь бинарный код один и тот же (примем, что не меняем версии используемых зависимостей, версию компилятора и т.п. Ну или поместим общую часть в static-библиотеку). Собственно, вопрос: можно ли как-то использовать один и тот же код как из загрузчиков, так и из гостевых прошивок. Пока в голову идет только разместить принудительно все функции такой библиотеки в конкретную секцию, в LD-скрипте эту секцию привязать к конкретному адресу, а для гостевых прошивок потом обрезать начало/конец бинарника (где эта секция будет находиться). Спасибо!
Последний раз редактировалось azhel12 Пн мар 18, 2024 21:23:36, всего редактировалось 1 раз.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
В загрузчике сделать таблицу с адресами библиотечных функций наподобие таблицы векторов прерываний. Сами функции тоже в загрузчике. Гостевые прошивки будут вызывать функции по указателю.
Re: Вопросы по С/С++ (СИ)
VladislavS, да, действительно, так более понятно будет. Спасибо.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Вопросы по С/С++ (СИ)
VladislavS, спасибо 
- IfoR
- Поставщик валерьянки для Кота
- Сообщения: 2029
- Зарегистрирован: Сб ноя 15, 2008 10:09:56
- Откуда: г. Тула
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
[uquote="главный колбасист",url="/forum/viewtopic.php?p=4551510#p4551510"]Да, так получилось.
з.ы.
А почему такой файл .exe огромный,под 1мб. не многовато ли для вывода двух слов ?[/uquote]
Убедись, что компилируешь Reliase версию программы, а не с включённой информацией для отладки: -g0
Используй оптимизацию по размеру: -Os
Используй удаление отладочных символов (strip): -s
з.ы.
А почему такой файл .exe огромный,под 1мб. не многовато ли для вывода двух слов ?[/uquote]
Убедись, что компилируешь Reliase версию программы, а не с включённой информацией для отладки: -g0
Используй оптимизацию по размеру: -Os
Используй удаление отладочных символов (strip): -s
Re: Вопросы по С/С++ (СИ)
Вопрос к специалистам по C++.
Какую литературу посоветуете для фундаментального изучения языка применительно к микроконтроллерам (STM32)? Желательно с заданиями для самостоятельного выполнения, потому что после обычных справочников в голове мало что остается.
Какую литературу посоветуете для фундаментального изучения языка применительно к микроконтроллерам (STM32)? Желательно с заданиями для самостоятельного выполнения, потому что после обычных справочников в голове мало что остается.
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1903
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Предполагаю, что основы булевой математики и цифровой электроники Вам уже понятны. Если нет, начните с этого.
Затем ознакомьтесь с тем, что содержит внутри STM32, например какой-нибудь простой, широко используемый МК. Начните с простого проекта.
Даю ориентир: мигание светодиода на одном пине, мигание определенной продолжительности, передача буква на телеграф ... (напр.: VVV, VVV, VVV ... и 5 секунды на настройку). Со временем проекты будут усложняться (и каждый последующий будет содержать решения из предыдущих проектов).
Сначала пробуете проект 1:1 из интернета, потом понимаете как он работает и что-то немного меняете, потом меняете, добавите функции. Через некоторое время создадите свой проект и будете только лишь немного смотреть из интернета или совсем не смотреть. Книги: это уже старинкая технология. Руководства, инфо из интернета, подчеркнув то, что нужно, удобным и понятным для способом.
Даю первое задание: светофор с STM32F103C8T6
. Ето казалось простым и забавным, но ... не торопитесь. Покажите свою программу. Через неделю-месяц ... у Вас наверняка будет 15 алгоритмов светофора ... Никто не рождается образованным, и каждый выбирает путь к знаниям. Общих рекомендаций нет.
Затем ознакомьтесь с тем, что содержит внутри STM32, например какой-нибудь простой, широко используемый МК. Начните с простого проекта.
Даю ориентир: мигание светодиода на одном пине, мигание определенной продолжительности, передача буква на телеграф ... (напр.: VVV, VVV, VVV ... и 5 секунды на настройку). Со временем проекты будут усложняться (и каждый последующий будет содержать решения из предыдущих проектов).
Сначала пробуете проект 1:1 из интернета, потом понимаете как он работает и что-то немного меняете, потом меняете, добавите функции. Через некоторое время создадите свой проект и будете только лишь немного смотреть из интернета или совсем не смотреть. Книги: это уже старинкая технология. Руководства, инфо из интернета, подчеркнув то, что нужно, удобным и понятным для способом.
Даю первое задание: светофор с STM32F103C8T6
Последний раз редактировалось veso74 Пн апр 15, 2024 11:13:21, всего редактировалось 1 раз.
Re: Вопросы по С/С++ (СИ)
Спасибо.
Понимаете, какая штука. Поморгать светодиодом на обычном Си я могу. И по USART принять/отправить, и вывести на DAC что-нибудь. У меня немного другой сейчас интерес. Например, тот же самый светодиод - как лучше и эффективнее работать с периферией, какими способами? В интернете, может, и много разных примеров. Но проблема интернета в том, что практически никто не дает систематических знаний. Это только в учебниках, ну или на некоторых курсах. С обычным Си примеров гораздо больше, и разобраться с ним проще (поскольку объема информации много, да и сам язык попроще). А вот с C++ проблема. Ну или мне просто не попадались нужные источники информации.
Можно, конечно, пробовать разные варианты и смотреть, во что это разворачивается в ассемблере. Но самостоятельно это довольно долгий путь. Хочется какого-то системного обучения, что-ли.
Понимаете, какая штука. Поморгать светодиодом на обычном Си я могу. И по USART принять/отправить, и вывести на DAC что-нибудь. У меня немного другой сейчас интерес. Например, тот же самый светодиод - как лучше и эффективнее работать с периферией, какими способами? В интернете, может, и много разных примеров. Но проблема интернета в том, что практически никто не дает систематических знаний. Это только в учебниках, ну или на некоторых курсах. С обычным Си примеров гораздо больше, и разобраться с ним проще (поскольку объема информации много, да и сам язык попроще). А вот с C++ проблема. Ну или мне просто не попадались нужные источники информации.
Можно, конечно, пробовать разные варианты и смотреть, во что это разворачивается в ассемблере. Но самостоятельно это довольно долгий путь. Хочется какого-то системного обучения, что-ли.
Re: Вопросы по С/С++ (СИ)
Ни разу не встречал такую, или программирование МК, но на С, или С++ без привязки к МК.iD-audio писал(а):Какую литературу посоветуете для фундаментального изучения языка применительно к микроконтроллерам (STM32)?
Напишите "hellow, World!" на С++, целиком, без HAL и ассемблера. И обработчики прерываний сделайте виртуальными методами классов, дабы соблюсти ОО-парадигму.
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1903
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
"Разбиваете" сложные задачи на простые, которые решаете одну за другой, а затем снова складываете воедино. Если простая задача снова оказывается сложной, и ее разбиваете на части, которые решаете по отдельности или вместе. В сборке также много несогласованностей, поэтому принцип "от простого к сложному" должно сработать со временем. По какому-то устройству (напр. драйвер) "ходим по кругу" безрезультатно часами, днями, неделями ... но после тысяч попыток, результат часто "блещет" сам по себе. Просто нужно быть настойчивым ... И хорошо, когда есть проекты, даже, казалось бы, бессмысленные, к которым хочется приступить прямо сейчас. В противном случае только чтение или только написание прогр. кода не будет эффективно и действенно. (частично пользуюсь переводчиком БГ-РУ)
