Например TDA7294

Форум РадиоКот • Просмотр темы - Лучше не использовать типы char в stm32?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт окт 23, 2025 02:49:00

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 121 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 09:06:14 
Родился

Карма: -4
Рейтинг сообщений: -3
Зарегистрирован: Вт авг 03, 2021 09:53:53
Сообщений: 11
Рейтинг сообщения: 0
Лучше ли не использовать типы char в программировании stm32 или embedded?
Например, если вы хотите прочитать что-то из 24c02, лучше не использовать %c, чтобы отобразить и прочитать вот так? Как на рисунке.


Вложения:
1448625616_916802.png [25.38 KiB]
Скачиваний: 242
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 09:22:48 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Мама дорогая! printf на микроконтроллере!..
Вы туда еще malloc запихайте ради полного "Щассья".

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 09:36:14 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Пт фев 01, 2013 21:05:30
Сообщений: 343
Рейтинг сообщения: 0
а почему не обычный массив uint8?
И функции принф тоже не особо нужны, кож можно написать и без них. Всего то пара циклов


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 09:38:25 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Eddy_Em, а что не так с этим printf и malloc?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 09:59:38 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
printf - очень жирная фиговина. Некоторые кривые реализации вообще чуть ли не 2кБ отжирают! А иметь сложный форматированный вывод на МК - блажь! Флоаты там нафиг не нужны, т.е. математика в основном целочисленная или с фиксированной точкой → сделать при необходимости форматированный вывод можно и самому, без этих килобайтов.
Что до алллокаторов памяти, то без MMU они нафиг не нужы, т.к. тоже через одно место делаются и вносят лишний оверхед.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 10:07:10 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Eddy_Em писал(а):
Некоторые кривые реализации вообще чуть ли не 2кБ отжирают!
Это еще мало.
Eddy_Em писал(а):
Вы туда еще malloc запихайте ради полного "Щассья".
Ну на мега8 malloc занимает где-то 350 байт кода, и весь код охота уместить в 2кило кода в месте с таблицей на 3кило флеша, что бы еще места осталось.
Ну а на Raspberry Pi pico 264кб SRAM и 2 Мб встроенной флэш-памяти, да я б об этом и не волновался.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 10:34:12 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
Цитата:
printf - очень жирная фиговина.
Для отладки можно. Быстрее нагородить форматный вывод в UART, чем в 100500-й раз реализовывать вывод в захардкоженном формате.
А в случае сложного обмена по тому же UART'у даже и в финальной версии может быть опревдано.
Цитата:
Что до алллокаторов памяти, то без MMU они нафиг не нужы, т.к. тоже через одно место делаются и вносят лишний оверхед.
Как связаны аллокаторы и MMU? Распределением памяти программа занимается самостоятельно в виртуальном линейном пространстве. Доступа к MMU у нее нет.
---
Что с malloc, что с printf проблема не во флеше или аппаратных модулях, а в скорости и оперативке. Сколько времени уйдет на формирование строки по хитрому формату? Сколько памяти потребуется чтобы хранить служебную информацию malloc?
Цитата:
чтобы отобразить и прочитать вот так? Как на рисунке.

А "вот так" это вот как?
Если имеется в виду пять %c подряд, то я бы отладочную информацию выводил по-другому:
Код:
UART_puts("ID OCT-");
UART_write(&str[18], 5);

Но это у меня есть функция вывода в UART сырого массива. Можно через строковый вывод:
Код:
UART_puts("ID OCT-");
str[23] = 0; //терминирующий ноль
UART_puts(&str[18]);

Цитата:
Цитата:
Некоторые кривые реализации вообще чуть ли не 2кБ отжирают!

Это еще мало.

Для полноценной реализации примерно столько и уйдет. Вот только в контроллерах эта полноценная реализация нужна примерно никогда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 10:53:07 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Кстати, я как-то видел еще и sscanf у ардуинщиков! Вот уж треш - так треш!..
Что до печати HEX, то это легко делается самостоятельно, как-то так.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 14:11:03 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Eddy_Em писал(а):
Что до печати HEX
если нужна только печать HEX, то, наверно, можно сэкономить 2 кило флеш с 2Мб, будет оправдано.
Повторяю, у ТС Raspberry Pi pico.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 14:43:11 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Повторяю, у ТС Raspberry Pi pico.

Не заметил. Но если у ТС - "пика", то почему он в заголовке о STM32 говорит?
Но все равно если есть возможность сэкономить, лучше сэкономить. Зачем уподобляться всяким "разработчикам" под андроиды и гейфы, да "веб-погромистам", которые настолько ленивы, что считают, раз есть дофига оперативы, можно и не оптимизировать ничего. А если оперативы не хватает, пусть пользователь новую модель покупает!

Копроэкономика в чистом виде.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Чт окт 14, 2021 16:40:59 
Сверлит текстолит когтями

Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1250
Рейтинг сообщения: 0
Если есть вероятность переносить свою прогу на восьмибитные МК, то налетишь на то, что у printf нет форматного преобразования char для печати его как десятичного или шестнадцатеричного числа, поэтому тупо написать "%d" и передать char может закончиться печатью фигни, если не сделать явное приведение char к int. Тонкость в том, объявление этой функции в стандартной библиотеке как

int printf( const char*, .. );

напрочь отключает проверки соответствия формата выводимых чисел и фактически переданных, и, значит, к отсутствию сообщений об ошибках.
Сталкивался с таким в Кейле, в остальных компилятор нужно проверять.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Пт окт 15, 2021 08:32:16 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
Что до печати HEX, то это легко делается самостоятельно, как-то так.

Это никак не отменяет, что написать sprintf для отладки быстрее, чем искать в каком же исходнике ты это в последний раз писал или писать заново с нуля.
Кстати, мне после AVR не нравится сдвиг на (4*j), лучше бы исходное число двигать, как в выводе десятичного:
Код:
do{
  uint8_t temp = val & 0xFF;
  buf[1] = temp & 0x0F;
  if(buf[1] < 10)buf[1] += '0'; else buf[1] = buf[1] - 0x0A + 'A';
  buf[0] = temp >> 4;
  if(buf[0] < 10)buf[0] += '0'; else buf[0] = buf[0] - 0x0A + 'A';
  buf -= 2;
  val >>= 8; //не все контроллеры любят сдвиг на нецелое число, поэтому сдвигаем на байт
}while(val);

Или в более общем виде
Код:
do{
  buf[0] = val % base;
  if(buf[0] < 10)buf[0] += '0'; else buf[0] = buf[0] - 0x0A + 'A';
  buf--;
  val /= base;
}while(val);


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Пт окт 15, 2021 10:21:43 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
Повторяю, у ТС Raspberry Pi pico.

Не заметил. Но если у ТС - "пика", то почему он в заголовке о STM32 говорит?

и там и там cortex. так какая разница?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Пт окт 15, 2021 10:39:38 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Разница огромная! У популярных STM32 нет FPU, нулевки даже делить не умеют.
Ну, это ваше дело, как МК использовать. Я не люблю, когда ядро чем-то слишком долго занимается. Ведь тогда приходится ломать КА, впихивая всякие некошерные прерывания!

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Пт окт 15, 2021 13:23:59 
Мудрый кот

Карма: 11
Рейтинг сообщений: 114
Зарегистрирован: Пт июн 01, 2018 07:28:45
Сообщений: 1759
Рейтинг сообщения: 0
а char и FPU как связаны?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Пт окт 15, 2021 14:02:59 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Просто какая-то фантастика: одному делить не нравится, второму сдвиг не нравится ...

Я проект ARV DIGISCRIPT написанный и заточенный под 8 битную платформу AVR перенес на 32 битную платформу F100 и F030 без малейшей правки основного кода.
И все крутится и работает и сдвигается и делится.

Вернемся к первоначальному вопросу
Marlin Boardley писал(а):
Лучше ли не использовать типы char в программировании stm32
По чему нельзя использовать?
Marlin Boardley писал(а):
если вы хотите прочитать что-то из 24c02, лучше не использовать %c
а ты, ТС, загнал туда, в 24c02, эти символы, что бы их потом прочитать, или, хотя бы терминал в HEX переключил?

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Пт окт 15, 2021 14:04:58 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
При чем здесь char? Речь о printf. Особенно типа
Код:
printf("%10.3f\n", f);

Особенно, если f - double или даже float на МК без FPU!

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Пт окт 15, 2021 14:33:34 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
А ардуинщики что-то смело f используют и на МК без FPU.

Вот когда речь будет идти о производительности вот тогда и поговорим, а пока вопрос ТС
Marlin Boardley писал(а):
Лучше ли не использовать типы char в программировании stm32 или embedded?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Пт окт 15, 2021 14:36:36 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
А ардуинщики что-то смело f используют и на МК без FPU.

Абдуринщики, "аудиофилы", антипрививочники, ЛГБТ и т.п. — просто разные последствия повреждения головного мозга.

Что до вопроса ТС, то вся проблема кроется в его непонимании. Как поймет, так и не будет глупых вопросов задавать. Если он хочет char отобразить как int, так пусть и вызывает printf("%d\n", c). А если ему беззнаковое целое нужно, то стоило вместо char сразу брать uint8_t…

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Лучше не использовать типы char в stm32?
СообщениеДобавлено: Пт окт 15, 2021 15:05:44 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Я бы не стал так отзываться о других, мы сами не лучше их, мы ни чего не создали чем можно было бы гордиться, пока что у нас получаются 1 Гигабатные браузеры и 50 Гигабатные игры. Так чем мы лучше их?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 121 ]  1, , , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y