Или все используют хардовые?
Вопросы по С/С++ (СИ)
Кто-нибудь писал для софтовых контроллеров (которые реализуются внутри ПЛИС, например NIOS в Альтере/Интел)?
Или все используют хардовые?
Или все используют хардовые?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="VladislavS",url="/forum/viewtopic.php?p=4555482#p4555482"]Писал под Microblaze.[/uquote]
Запомним...
Запомним...
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 145
- Зарегистрирован: Пн апр 02, 2012 15:56:23
Коллеги, вопрос по размещению кода в программе.
Есть микроконтроллер простенький, без поддержки двухбанковой схемы. Появилась потребность обновлять на нем прошивку, для чего в планах написать несложный бутлоадер, а "гостевая" прошивка будет с кастомным линкер-скриптом, примерно как в ЭТОМ проекте.
Однако указанный проект хочется чуть доработать таким образом, чтобы ведомый контроллер мог перейти в режим прошивки по 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 раз.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
В загрузчике сделать таблицу с адресами библиотечных функций наподобие таблицы векторов прерываний. Сами функции тоже в загрузчике. Гостевые прошивки будут вызывать функции по указателю.
- Реклама
- Сообщения: 145
- Зарегистрирован: Пн апр 02, 2012 15:56:23
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
- Сообщения: 145
- Зарегистрирован: Пн апр 02, 2012 15:56:23
[uquote="главный колбасист",url="/forum/viewtopic.php?p=4551510#p4551510"]Да, так получилось.
з.ы.
А почему такой файл .exe огромный,под 1мб. не многовато ли для вывода двух слов ?[/uquote]
Убедись, что компилируешь Reliase версию программы, а не с включённой информацией для отладки: -g0
Используй оптимизацию по размеру: -Os
Используй удаление отладочных символов (strip): -s
з.ы.
А почему такой файл .exe огромный,под 1мб. не многовато ли для вывода двух слов ?[/uquote]
Убедись, что компилируешь Reliase версию программы, а не с включённой информацией для отладки: -g0
Используй оптимизацию по размеру: -Os
Используй удаление отладочных символов (strip): -s
- Сообщения: 2
- Зарегистрирован: Вс апр 14, 2024 21:21:27
Вопрос к специалистам по C++.
Какую литературу посоветуете для фундаментального изучения языка применительно к микроконтроллерам (STM32)? Желательно с заданиями для самостоятельного выполнения, потому что после обычных справочников в голове мало что остается.
Какую литературу посоветуете для фундаментального изучения языка применительно к микроконтроллерам (STM32)? Желательно с заданиями для самостоятельного выполнения, потому что после обычных справочников в голове мало что остается.
Предполагаю, что основы булевой математики и цифровой электроники Вам уже понятны. Если нет, начните с этого.
Затем ознакомьтесь с тем, что содержит внутри STM32, например какой-нибудь простой, широко используемый МК. Начните с простого проекта.
Даю ориентир: мигание светодиода на одном пине, мигание определенной продолжительности, передача буква на телеграф ... (напр.: VVV, VVV, VVV ... и 5 секунды на настройку). Со временем проекты будут усложняться (и каждый последующий будет содержать решения из предыдущих проектов).
Сначала пробуете проект 1:1 из интернета, потом понимаете как он работает и что-то немного меняете, потом меняете, добавите функции. Через некоторое время создадите свой проект и будете только лишь немного смотреть из интернета или совсем не смотреть. Книги: это уже старинкая технология. Руководства, инфо из интернета, подчеркнув то, что нужно, удобным и понятным для способом.
Даю первое задание: светофор с STM32F103C8T6
. Ето казалось простым и забавным, но ... не торопитесь. Покажите свою программу. Через неделю-месяц ... у Вас наверняка будет 15 алгоритмов светофора ... Никто не рождается образованным, и каждый выбирает путь к знаниям. Общих рекомендаций нет.
Затем ознакомьтесь с тем, что содержит внутри STM32, например какой-нибудь простой, широко используемый МК. Начните с простого проекта.
Даю ориентир: мигание светодиода на одном пине, мигание определенной продолжительности, передача буква на телеграф ... (напр.: VVV, VVV, VVV ... и 5 секунды на настройку). Со временем проекты будут усложняться (и каждый последующий будет содержать решения из предыдущих проектов).
Сначала пробуете проект 1:1 из интернета, потом понимаете как он работает и что-то немного меняете, потом меняете, добавите функции. Через некоторое время создадите свой проект и будете только лишь немного смотреть из интернета или совсем не смотреть. Книги: это уже старинкая технология. Руководства, инфо из интернета, подчеркнув то, что нужно, удобным и понятным для способом.
Даю первое задание: светофор с STM32F103C8T6
Последний раз редактировалось veso74 Пн апр 15, 2024 11:13:21, всего редактировалось 1 раз.
- Сообщения: 2
- Зарегистрирован: Вс апр 14, 2024 21:21:27
Спасибо.
Понимаете, какая штука. Поморгать светодиодом на обычном Си я могу. И по USART принять/отправить, и вывести на DAC что-нибудь. У меня немного другой сейчас интерес. Например, тот же самый светодиод - как лучше и эффективнее работать с периферией, какими способами? В интернете, может, и много разных примеров. Но проблема интернета в том, что практически никто не дает систематических знаний. Это только в учебниках, ну или на некоторых курсах. С обычным Си примеров гораздо больше, и разобраться с ним проще (поскольку объема информации много, да и сам язык попроще). А вот с C++ проблема. Ну или мне просто не попадались нужные источники информации.
Можно, конечно, пробовать разные варианты и смотреть, во что это разворачивается в ассемблере. Но самостоятельно это довольно долгий путь. Хочется какого-то системного обучения, что-ли.
Понимаете, какая штука. Поморгать светодиодом на обычном Си я могу. И по USART принять/отправить, и вывести на DAC что-нибудь. У меня немного другой сейчас интерес. Например, тот же самый светодиод - как лучше и эффективнее работать с периферией, какими способами? В интернете, может, и много разных примеров. Но проблема интернета в том, что практически никто не дает систематических знаний. Это только в учебниках, ну или на некоторых курсах. С обычным Си примеров гораздо больше, и разобраться с ним проще (поскольку объема информации много, да и сам язык попроще). А вот с C++ проблема. Ну или мне просто не попадались нужные источники информации.
Можно, конечно, пробовать разные варианты и смотреть, во что это разворачивается в ассемблере. Но самостоятельно это довольно долгий путь. Хочется какого-то системного обучения, что-ли.
- Сообщения: 1379
- Зарегистрирован: Вт ноя 19, 2019 06:10:18
Ни разу не встречал такую, или программирование МК, но на С, или С++ без привязки к МК.iD-audio писал(а):Какую литературу посоветуете для фундаментального изучения языка применительно к микроконтроллерам (STM32)?
Напишите "hellow, World!" на С++, целиком, без HAL и ассемблера. И обработчики прерываний сделайте виртуальными методами классов, дабы соблюсти ОО-парадигму.
"Разбиваете" сложные задачи на простые, которые решаете одну за другой, а затем снова складываете воедино. Если простая задача снова оказывается сложной, и ее разбиваете на части, которые решаете по отдельности или вместе. В сборке также много несогласованностей, поэтому принцип "от простого к сложному" должно сработать со временем. По какому-то устройству (напр. драйвер) "ходим по кругу" безрезультатно часами, днями, неделями ... но после тысяч попыток, результат часто "блещет" сам по себе. Просто нужно быть настойчивым ... И хорошо, когда есть проекты, даже, казалось бы, бессмысленные, к которым хочется приступить прямо сейчас. В противном случае только чтение или только написание прогр. кода не будет эффективно и действенно. (частично пользуюсь переводчиком БГ-РУ)
- Сообщения: 1840
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="iD-audio",url="/forum/viewtopic.php?p=4568559#p4568559"]У меня немного другой сейчас интерес. Например, тот же самый светодиод - как лучше и эффективнее работать с периферией, какими способами?[/uquote]Самый лучший способ: Всё время смотреть в листинг! Написали строчку кода, скомпилили (с макс.оптимизацией), посмотрели в листинг - что получилось? И следующая итерация. И т.д.
[uquote="iD-audio",url="/forum/viewtopic.php?p=4568559#p4568559"]Можно, конечно, пробовать разные варианты и смотреть, во что это разворачивается в ассемблере.[/uquote]Так и следует делать.
[uquote="iD-audio",url="/forum/viewtopic.php?p=4568559#p4568559"]Но самостоятельно это довольно долгий путь.[/uquote]Быстро только кошки плодятся.
Если будете делать это несамостоятельно, то в голове ничего не останется.
[uquote="iD-audio",url="/forum/viewtopic.php?p=4568559#p4568559"]Можно, конечно, пробовать разные варианты и смотреть, во что это разворачивается в ассемблере.[/uquote]Так и следует делать.
[uquote="iD-audio",url="/forum/viewtopic.php?p=4568559#p4568559"]Но самостоятельно это довольно долгий путь.[/uquote]Быстро только кошки плодятся.
Если будете делать это несамостоятельно, то в голове ничего не останется.
- Сообщения: 1454
- Зарегистрирован: Вт июн 07, 2011 08:03:18
[uquote="jcxz",url="/forum/viewtopic.php?p=4569039#p4569039"]Самый лучший способ: Всё время смотреть в листинг! Написали строчку кода, скомпилили (с макс.оптимизацией), посмотрели в листинг - что получилось? И следующая итерация. И т.д.[/uquote]
Нафига? Это смотря какие цели.) К примеру, я хочу писать красиво и лаконично. На кой мне листинг?)
Нафига? Это смотря какие цели.) К примеру, я хочу писать красиво и лаконично. На кой мне листинг?)
[uquote="OKF",url="/forum/viewtopic.php?p=4571314#p4571314"]К примеру, я хочу писать красиво и лаконично. На кой мне листинг?)[/uquote]
Между "я хочу" и "я умею" есть некоторая разница.
Когда это десятки раз писалось в разных вариантах и успешно работало - можно и без листинга. Да и то: в сложных случаях непонятно - то ли компилятор дурит, то ли сам накосячил. А вид сгенерированного кода всё расставит по местам.
Между "я хочу" и "я умею" есть некоторая разница.
- Сообщения: 1454
- Зарегистрирован: Вт июн 07, 2011 08:03:18
- Сообщения: 1454
- Зарегистрирован: Вт июн 07, 2011 08:03:18
[uquote="OKF",url="/forum/viewtopic.php?p=4571486#p4571486"]Не обижайтесь.)[/uquote]
Чего мне обижаться - я же не компилятор
А начинающим (по программному делу) я был этак в году 76-м прошлого тысячелетия.
А насчёт наличия ошибок в компиляторе... Когда в преферансе мне сетовали за недозаказ - я спрашиваю:
- А если 4 на 4 в двух мастях на одной руке?
- Ну, этого никогда не бывает.
- Значит, ты мало играл. У меня случалось.
Чего мне обижаться - я же не компилятор
А насчёт наличия ошибок в компиляторе... Когда в преферансе мне сетовали за недозаказ - я спрашиваю:
- А если 4 на 4 в двух мастях на одной руке?
- Ну, этого никогда не бывает.
- Значит, ты мало играл. У меня случалось.
© А.Пугачёва, жена иноагента.То-то и оно.




