Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Модератор
Аватара пользователя
Сообщения: 19100
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

ПростоНуб писал(а):Просветитесь, хотя бы в Вики
а ты сам просветись по твоей ссылке, какие МК поддерживают debugWIRE. это крохи от всего семейства AVR.
ПростоНуб писал(а):Не судите по себе. ATATMEL-ICE-PCBA за $60 может позволить себе почти любой. У меня в месяц на соляру в два раза больше уходит!
и ты не суди по себе. я на свою пенсию не могу позволить себе приобрести отладчик.
ARV писал(а):микроконтроллер не делает ничего попусту, он делает то, что ему программой указал человек.
совершенно верно. и человек, который заставляет МК преобразовывать числа в строки, поступает не умно.
ARV писал(а):а на что еще его тратить?
может, ты с таким не сталкивался, но существуют такие задачи, где процессорное время очень дорого, и тратить его на всякую фуету, такую как преобразование чисел в строки, нет возможности.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

ПростоНуб писал(а):Eddy_Em, не тупите.
Это кто еще тупит? Мы с ARV уже неоднократно писали, зачем сериализовать данные на МК и чем это собственно удобно. Кто-то явно либо не читает, либо тупит... Про бритву Оккама вы, пожалуй, не слышали... Зачем мне выдумывать скрипт, если я просто могу запустить сеанс screen и работать с железкой безо всяких посредников?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 19100
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

ладно, остановимся на том, что кому-то это удобно, а кому-то - не удобно.
"о вкусах не спорят, есть тысяча мнений" (с) В.С. Высоцкий.
господа, вы сильно далеко ушли в своей дискуссии от темы "Вопросы по С/С++ (СИ)".
к сожалению, и я поучаствовал в этой дискуссии, вместо того, чтобы сразу попросить вас не отвлекаться от темы топика.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

[uquote="ARV",url="/forum/viewtopic.php?p=3708832#p3708832"]
Мурик писал(а):С каких пор jlink отлаживает авры особенно те что с debugWIRE или вообще не поддерживают аппартаную отладку?
а разве нужно следить за темой и отвечать "впопад"? :))) главное ведь ляпнуть погромче хоть что, а то ведь могут счесть некомпетентым...[/uquote]Это вы ляпаете погромче или скажите что J-Link поддерживает 8-ми битные AVR?
И к тому же я спрашивал не вас.
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

[uquote="Starichok51",url="/forum/viewtopic.php?p=3708840#p3708840"]какие МК поддерживают debugWIRE. это крохи от всего семейства AVR.[/uquote]
Естественно, только младшие. Остальные поддерживают JTAG, отладчик которого намного дешевле ATATMEL-ICE-PCBA из существенно большей распостраненности. Но ни одного AVR вообще без поддержки внутрисхемной отладки я не встречал. Подскажите, пожалуйста, какой же AVR не поддерживает внутрисхемную отладку?
Starichok51 писал(а):
ПростоНуб писал(а):$60 может позволить себе почти любой.
и ты не суди по себе. я на свою пенсию не могу позволить себе приобрести отладчик.
Прошу прощения, если чем-то обидел. Я не зря написал "почти любой". И судил не по себе, а исходил из того, что меньше 10% от средней зарплаты в РФ потраченые на разовую покупку устройства со сроком службы порядка 10 лет - вполне приемлемы.
Тут осциллографами народ хвастается за $300-500 и ничего. Большинство любителей STM32 скорее лишний доллар потратят, чем с трехцентовым МК свяжутся. Так что у меня ощущение, что многие тут зарабатывают существенно больше меня, считающего себестоимость конечного изделия )))
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

ПростоНуб писал(а):Но ни одного AVR вообще без поддержки внутрисхемной отладки я не встречал. Подскажите, пожалуйста, какой же AVR не поддерживает внутрисхемную отладку?
Много какие. ATmega8 например.
Starichok51 писал(а):я на свою пенсию не могу позволить себе приобрести отладчик.
Китайский JTAG отладчик для AVR стоит не много. https://ru.aliexpress.com/item/32787622885.html
Реклама
Модератор
Аватара пользователя
Сообщения: 19100
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

господа, еще раз прошу прекратить посторонние разговоры в теме.
иначе я не поленюсь и почищу последние несколько страниц от оффтопа.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Сообщение arkhnchul »

[uquote="Мурик",url="/forum/viewtopic.php?p=3708816#p3708816"]С каких пор jlink отлаживает авры особенно те что с debugWIRE или вообще не поддерживают аппартаную отладку?[/uquote]каюсь, тут ступил. "Старшие МК" atmel-а у меня ассоциируются со всякими ATSAM-ами, которые не avr.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Мурик писал(а):Китайский JTAG отладчик для AVR стоит не много.
стоит не много во всех смыслах: в смысле отладки он вообще ничего не стоит. не работает он. точнее, крайне неустойчиво работает, из 20 попыток соединиться получается 1 раз, но спустя 3-5 секунд/минут (как повезет) отваливается.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

ARV, возвращаясь к началу, по Вашему личному мнению, считаете ли Вы допустимым использование стандартных (ISO) функций setjmp()/longjmp()? И если не сложно, аргументируйте свой ответ, пожалуйста.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="ARV",url="/forum/viewtopic.php?p=3708995#p3708995"]стоит не много во всех смыслах: в смысле отладки он вообще ничего не стоит. не работает он. точнее, крайне неустойчиво работает, из 20 попыток соединиться получается 1 раз, но спустя 3-5 секунд/минут (как повезет) отваливается.[/uquote]Ну так продолжайте жевать кактус. При том что контроллеров с нормальной отладкой хоть опой жуй.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

VladislavS писал(а):При том что контроллеров с нормальной отладкой хоть опой жуй.
приятного жевания.
ПростоНуб писал(а):по Вашему личному мнению, считаете ли Вы допустимым использование стандартных (ISO) функций setjmp()/longjmp()? И если не сложно, аргументируйте свой ответ, пожалуйста.
когда профессионал задает мне подобный вопрос, очевидно, это делается не в целях найти ответ, а в целях потроллить самоучку недопрограммиста.
поскольку я к этому готов, я легко дам развернутый ответ.

да, я считаю допустимым примерение и goto, и упомянутые вами функции setjmp и longjmp. не смотря на то, что последними я сам никогда не пользовался, я вполне понимаю, для чего они могут быть полезны и в каких случаях.

при этом я никогда не посоветую сам пользоваться ими тем, кто будет задавать подобный вопрос на форуме.

я достаточно арументированно ответил вам, ПростоНуб?

теперь чуть-чуть философствования. try-except или try-finally (или catch - везде по-разному) обладает дъявольской привлектальностью. каждому в душе хочется сделать какое-нибудь сумасбродство, и только опасение неизбежной расплаты останавливает от этого. а тут такая возможность - делай что угодно внутри этой "обертки" и ничего тебе не будет. вместо проверки диапазонов аргументов функций просто заверни в try-xxxxxx. вместо проверки на существование файла, вместо уточнения рамера массива, вместо проверки указателя на NULL - просто делай try - и ничего не бойся!
и попытка оправдать существование setjmp и ей парной функции тем, что в Си нет этой волшебной обертки, я считаю недостаточным аргументом, чтобы советовать всем начинающим творить этот беспредел.


вы возразите, что не только для этого они нужны, но и для всяких там RTOS... может быть, может быть... не стану спорить - не дорос до уровня. но сам не посоветую.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

ARV, сам я эти функции использовал только для организации кооперативной мультизадачности, когда какой-то процесс (или процессы) могли что-то делать столь долго, что это потребовало бы излишне длинный кольцевой буфер сообщений или недопустимо бы задерживало обработку более срочных сообщений из этого буфера. Применение же этих функций для обработки исключений я встречал, но сам предпочитаю так не делать, по схожим с Вашими причинам.

Первый раз я ими воспользовался еще под MS DOS, когда делал редактор символьного интерфейса пользователя. Так как результат работы этого редактора надо было сохранять в базу данных (программы, пользующиеся этим ресурсом считывали его оттуда), объемы информации могли быть большими, а надежность компьютеров невысока, то сохранение измененных данных выполнялось в фоне, при этом никак не влияя на время реакции при нажатии кнопок или движении мыши.

Когда появилась OS/2, нужда в этой технике пропала, пока я не столкнулся с однозадачными МК.

Что касается исключений в C++, то не стоит их идеализировать. Бездумное их использование их очень сильно влияет на производительность программы. Поэтому, если производительность важна, лучше их использовать только в тех случаях, когда вероятность возникновения исключения близка к нулю. В последнем случае, исключения могут дать даже прирост производительности, по сравнению с классическими проверками.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Я исключения в микроконтроллере использую выставив ключ компилятора вот так: "-fno-exceptions".

Добавлено after 17 minutes 2 seconds:
Что-то мне сегодня не спалось утром, решил покомпилировать проект разными способами одним и тем же тулчейном. Сначала IDE-шечкой.
Спойлер

Код: Выделить всё

1>Linking VisualGDB/Release/F303-CDC-VGDB...
1>Map file saved to file://d:\!Projects\STM32-Discovery\Discovery-STM32F303\F303-CDC-VGDB\VisualGDB\Release\F303-CDC-VGDB.map
1>------------------- Memory utilization report -------------------
1>Used FLASH: 2812 bytes out of 256KB (1%)
1>Used SRAM: 112 bytes out of 40KB (0%)
1>Used CCMRAM: 0 bytes out of 8192 bytes (0%)
========== Сборка: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========
Затем make в мастдайке
Спойлер

Код: Выделить всё

C:/CPP/GNU Tools ARM Embedded/8 2019-q3-update/bin/arm-none-eabi-size Bin\Release/Discovery-STM32F303.elf
   text    data     bss     dec     hex filename
   2808       4     112    2924     b6c Bin\Release/Discovery-STM32F303.elf
и в красноглазой среде
Спойлер

Код: Выделить всё

opt/gcc-arm-none-eabi-8-2019-q3-update/bin/arm-none-eabi-size Bin/Release/Discovery-STM32F303.elf
   text	   data	    bss	    dec	    hex	filename
   2808	      4	    112	   2924	    b6c	Bin/Release/Discovery-STM32F303.elf
Как и ожидалось, получил одинаковый результат. Причём в последних двух случаях даже побитово одинаковый, за разницей в направлении слэшей в пути к bинарнику.

За сим откланиваюсь и удаляюсь пить кофею :)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Хотелось бы услышать пару слов о цели этого эксперимента: что вы хотели узнать/проверить/уточнить?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

С чашечкой кофе сел посмотреть доклад про концепты в С++20. Докладчик одновременно и скучный, и юморист, как бы это ни казалось странным. Сначала он отмочил:"Если бы программисты С++ боялись плохого синтаксиса, то они бы давно вымерли от страха."

А потом он вот этот код на слайде прокомментировал: "На самом деле вот тут понятно что написано" и зал дружно заржал

Код: Выделить всё

template<typename T> concept ImplicitlyDefaultConstructible
  = requires { [] (T) {} ({}); };
Какое красивое применения лямбды :)
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

В С настолько нечитабельный код только обфускатор может сделать!
Ещё одно доказательство того, что цепепе придумали для роботов!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3709177#p3709177"]Ещё одно доказательство того, что цепепе придумали для роботов![/uquote]
Как ты на С будешь делать подобные проверки? Была на другом форуме тема, TC захотел print() который будет сам определять тип переданных параметров, в итоге после долгих мучений родилась версия на обобщенных макросах:
Спойлер

Код: Выделить всё

#define dpr_(X) _Generic((X),           \
    const char*:        soft_print_con, \
    char*:              soft_print,     \
    uint8_t:            print_uint8,    \
    uint16_t:           print_uint16,   \
    uint32_t:           print_uint32,   \
    uint64_t:           print_uint64,   \
    int8_t:             print_int8,     \
    int16_t:            print_int16,    \
    int32_t:            print_int32,    \
    int64_t:            print_int64,    \
    float:              print_float,    \
    double:             print_double,   \
    default:            print_nex       \
)(X)

#ifndef CONCAT

#define CONCAT(a,b) a##b
#define CONCAT2(a,b) CONCAT(a,b)

#define ELEVENTH_ARGUMENT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, ...) a11
#define COUNT_ARGS(...) ELEVENTH_ARGUMENT(_, ##__VA_ARGS__, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)

#define dpr_1(X) dpr_(X)
#define dpr_2(X,Y) do{dpr_(X); soft_print(" "); dpr_(Y);}while(0)
#define dpr_3(X,Y,Z) do{dpr_(X); soft_print(" "); dpr_(Y); soft_print(" "); dpr_(Z);}while(0)
#define dpr_4(X,Y,Z,W) do{dpr_(X); soft_print(" "); dpr_(Y); soft_print(" "); dpr_(Z); soft_print(" "); dpr_(W);}while(0)
#define dpr_5(X,Y,Z,W,E) do{dpr_(X); soft_print(" "); dpr_(Y); soft_print(" "); dpr_(Z); soft_print(" "); dpr_(W);soft_print(" ");dpr_(E);}while(0)
#define dpr_6(X,Y,Z,W,E,F) do{dpr_(X); soft_print(" "); dpr_(Y); soft_print(" "); dpr_(Z); soft_print(" "); dpr_(W);soft_print(" ");dpr_(E);soft_print(" ");dpr_(F);}while(0)
#define dpr_7(X,Y,Z,W,E,F,G) do{dpr_(X); soft_print(" "); dpr_(Y); soft_print(" "); dpr_(Z); soft_print(" "); dpr_(W);soft_print(" ");dpr_(E);soft_print(" ");dpr_(F);soft_print(" ");dpr_(G);}while(0)

#define dpr(...) CONCAT2(dpr_, COUNT_ARGS(__VA_ARGS__))(__VA_ARGS__)

#define printo(...) do{dpr(__VA_ARGS__);}while(0)

#endif
Количество параметров ограничено 7-ю, но конечно можно добавить еще больше еще более длинных макросов и это ограничение ослабить. А потом он добавил версию для С++ работающую с любым количеством параметров :)

Код: Выделить всё

template <typename T, typename ... Tail> void dpr(const T& obj, const Tail& ... tail) { dpr(obj); soft_print(' '); dpr(tail ...); }
template<typename ... T> void printo(const T& ... obj) { dpr(obj ...);  }
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Reflector, я же писал выше, что параметрический полиморфизм на мономорфном ядре есть лишь синтаксический сахар. Очень спорно, перевешивают ли его достоинства его недостатки.
Праметрический полиморфизм без недостатков есть, например, в ML, но его обсуждение явно выходит за рамки темы.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Вот бы ещё без рекурсии развернуть вариадик.

Добавлено after 2 minutes 38 seconds:
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=3709253#p3709253"]я же писал выше, что параметрический полиморфизм на мономорфном ядре есть лишь синтаксический сахар.[/uquote]Ну с этим IMHO не соглашусь.
Ответить

Вернуться в «Разные вопросы по МК»