STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3896303#p3896303"]Чукча - писатель... Может стоит прочесть первоисточник ПОСЛЕ многоточия в цитате?
Несете какую то рандомную хрень... :facepalm:[/uquote]
И понеслось дерьмо по трубам. Вы одним термином назвали разное. Я точно показал, что именно. Обтекайте теперь оба. Голосите про "рандомную херь". Фигли вам остается.
Тимофеев совершенно определенно объясняет необходимость использования указателей на volatile в случае возможности присвоения им адресов volatile-переменных.
Вот в этой фразе? "Также распространенной ошибкой является использование обычного (не volatile) указателя на volatile-переменную." Так я вам открою глаза, что использование обычного указателя на volatile является правильной практикой, а не "распространенной ошибкой".

volatile unsigned int *Port -- это тот самый обычный (не volatile) указатель на volatile переменую. Вы так сами сказали. Вот и разберитесь со своим Тимофеевым, у кого из вас двоих "распространненая ошибка" случилась.

И приводит ДВА примера - ошибочный и правильный.
То есть квалификатор volatile должен быть и у переменной и у указателя на нее. Что не так?
Вы в курсе, что вязните все глубже? Ваше "volatile должен быть и у переменной и у указателя на нее" тогда будет выглядеть так:

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

volatile unsigned int * volatile Port
А теперь идите и посмотрите на "правильный пример" вашего Тихонова. Так кто из вас двоих лажает?
Вам стоит познакомиться с автором текста по ссылке, кстати. Заочно, конечно. Прежде чем быковать. А то ведь стыдно будет, любезный...
Я без вас разберусь, с кем мне знакомиться. И понты свои приберите дешевые. Быдлецой какой-то повеяло.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25881
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Чудовищный демагог и шулер. Сам выдумывает, сам и отрицает.
Почему из моих слов вы опустили слово квалификатор, начав цитату с volatile?
Что я имел ввиду вы отлично поняли, как и то, что имел ввиду Тимофеев. Но продолжаете кривляться.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Если честно, то Тимофеев допустил ляп в процитированном абзаце. Но дальше по тексту все подробно разжёвывает с правильными примерами где volatile буфер, а где volatile указатель.

При всём при этом, это никак не влияет на ненужность volatile в параметрах HAL-овской функции, с которой начиналась дискуссия. С обсуждения которой так упорно соскальзывает на личности аппонент.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="КРАМ",url="/forum/viewtopic.php?p=3896357#p3896357"]Чудовищный демагог и шулер. Сам выдумывает, сам и отрицает.[/uquote]
Да ладно вам плакать. Я цитировал вас обоих и теперь уже дважды повторил, где и кто слажал. Что вы возразили по существу? Ничего! Только персональные наезды. Оно и понятно.
Почему из моих слов вы опустили слово квалификатор, начав цитату с volatile?
У вас галлюцинации? Разуйте глаза: я цитировал вас и вашего визави целиком. Причем, уже не один раз.
Что я имел ввиду вы отлично поняли, как и то, что имел ввиду Тимофеев. Но продолжаете кривляться.
Ваш Тимофеев сказал одно, в то время, как хотел сказать совсем другое. Такое бывает, когда недостает квалификации. Ваши отчаянные вопли ни ему, ни вам никак не помогут -- из песни слов не выкинешь.

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896366#p3896366"]При всём при этом, это никак не влияет на ненужность volatile в параметрах HAL-овской функции, с которой начиналась дискуссия.[/uquote]

То, что компилятор выдает предупреждения на абсолютно правильные передаваемые параметры вас не смущает? Это и есть точка непонимания.
С обсуждения которой так упорно соскальзывает на личности аппонент.
Повторение этой фразы каждый раз показывает лишь то, как вы тщетно стараетесь наскрести хоть какого-нибудь дерьмеца.
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

И так имеем

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

uint8_t  DMABuffer[24];

    /* Write to DMAy Channelx CNDTR */
    DMA1_Channel3->CNDTR = sizeof(DMABuffer);
    /* Write to DMAy Channelx CPAR */
    DMA1_Channel3->CPAR = (uint32_t) & (TIM3->CCR4);
    /* Write to DMAy Channelx CMAR */
    DMA1_Channel3->CMAR = (uint32_t) DMABuffer;
Но это не все

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

volatile bool ws_status;

/* Handles DMA1_Channel3 interrupt request */
void DMA1_Channel2_3_IRQHandler(void)
{
	DMA1->IFCR = DMA1_IT_GL3; /* Clear all interrupt flags */
    ws_status = 1;
}

и там в коде где-то

	memset(DMABuffer, 0, (sizeof(DMABuffer)));

	/* сброс */
	ws_status = 0;
	while(!ws_status){};	// ждать изменение состояния ws_status = 1
	ws_status = 0;
	
ну и сама загрузка буфера
DMABuffer[i] = g & mask ? PULSE_HIGH : PULSE_LOW;	
Я, конечно не селен в магических числах, но это все как-то работает.
Меняю

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

	 uint8_t  DMABuffer[24];
	 на volatile uint8_t DMABuffer[24];
и получаю предупреждение компилятора

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

warning: passing argument 1 of 'memset' discards 'volatile' qualifier from pointer target type [enabled by default]
Уважаемый a5021, в чем проблема и как решить ее?
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=3896374#p3896374"]То, что компилятор выдает предупреждения на абсолютно правильные передаваемые параметры вас не смущает?[/uquote]Ни капли, приведение типов обыденная для С программиста процедура, выполняемая много раз в день.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25881
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="a5021",url="/forum/viewtopic.php?p=3896374#p3896374"]У вас галлюцинации? Разуйте глаза: я цитировал вас и вашего визави целиком. Причем, уже не один раз.[/uquote]
Еще раз. Вы методично пытаетесь вешать лапшу на уши, привязавшись к нестрогому термину "указатель volatile", который ОЧЕВИДНО не имеет смысла как volatile-указатель. Пропущенный предлог "на" так же очевидно следует из контекста и по сути ошибкой не является. Просто потому, что рассматривать отдельно, как особый случай, volatile-указатели нет никакого смысла. Они ничем не отличаются от volatile-переменных в смысле их использования.
Однако дело тут совершенно в другом. И это лично мне так же очевидно. Ведь Тимофеев как раз ПОДТВЕРЖДАЕТ изначальную постановку вопроса. ВАШЕГО, милейший, вопроса. И к тому же, Мурик ранее привел ссылку на pdf той же статьи Тимофеева и ЛИЧНО ВЫ эту ссылку привели как поучительную...
А дело тут в "Маньке" и ее "буферАх"... Ну если не считать воспаленное "самизнаетечто" у Вас, любезный....
За сим и закончим беспредметное пикирование. Лично я все давно понял.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896380#p3896380"]приведение типов обыденная для С программиста процедура, выполняемая много раз в день.[/uquote]
Желаю это видеть. Попробуйте унять компилятор здесь приведением типов. Буду следить за этим с нескрываемым интересом.

[uquote="КРАМ",url="/forum/viewtopic.php?p=3896392#p3896392"]Лично я все давно понял.[/uquote]
Не поняли вы только одного -- когда у вас выходит лажа, надо уметь признавать ее и отвечать за свои слова. Но этому не научить, к сожалению.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=3896395#p3896395"]Желаю это видеть. Попробуйте унять компилятор здесь приведением типов. Буду следить за этим с нескрываемым интересом.[/uquote]Хотеть не вредно. Пример я приводил. Да и не припомню я чтобы когда-то что-то вам задолжал. Успехов в войне с ветряными мельницами. Чао.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896407#p3896407"]Пример я приводил.[/uquote]
Лажу вы приводили. Фиг с ним, что оно не портабельно и не собирается шлангом. Я исправил. Но проблема ровно на том же месте, где и была. Вы не понимали этого и не понимаете сейчас.

Изображение

Я не стал заострять, но, как оказалось, напрасно. На данный момент в рамках этого обсуждения вы уже дважды отказались отвечать за свои слова. Показательно.
Успехов в войне с ветряными мельницами. Чао.
Да мне-то все равно. Гоните лажу, важно вытягивайте шею. Вы в своем праве.
Вложения
volatile3.jpg
(55.78 КБ) 601 скачивание
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Clang выступил в роли капитана очевидность. Я и без него знаю, что внутри функции не будет volatile, он там и не нужен. Нет никакой проблемы. Код компилируется и работает как задумано. А то что вы не знаете что такое uint32_t(adr)... Да чего удивляться то после всего вышенаписанного.
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896426#p3896426"]Clang выступил в роли капитана очевидность. Я и без него знаю, что внутри функции не будет volatile, он там и не нужен. Нет никакой проблемы. Код компилируется и работает как задумано.[/uquote]
Вот так он компилируется:

Изображение

Если было задумано, чтобы варнинги были на каждой строчке, то цель, безусловно, достигнута. Поздравьте себя.
А то что вы не знаете что такое uint32_t(adr)...
Вы возомнили себя единственным знатоком заплесневелого легаси? Офигеть!
Вложения
legacy_and_ugly.jpg
(64.57 КБ) 574 скачивания
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

А говорил не собирается... Наврал? Ты ещё MISRA запусти. Своей головой думать надо! :kill:
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896500#p3896500"]А говорил не собирается... Наврал?[/uquote]
В си и не должно собираться. Таковы видать у вас представления о доступном изложении -- намотать бреда и побольше.
Своей головой думать надо!
Главное, чтобы не вашей.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

А с чего вы взяли, что это должно Си собираться? В С++ более строгий контроль типов, если что. Я в своих прошивка ещё вот такой код-барьер от желающих Си собирать вставляю.

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

int main()
{
  [](){[](){[](){[](){[](){}();}();}();}();}();


}
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

VladislavS писал(а):

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

[](){[](){[](){[](){[](){}();}();}();}();}();
Лишний код в прошивке.

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

(32)      [](){[](){[](){[](){[](){}();}();}();}();}();
200001FC	add.w	r3, r7, #8
20000200	mov	r0, r3
20000202	bl	0x200001c4 <<lambda()>::operator()(void) const>
А по поводу доказывания необходимости volatile, вот что вспомнилось.
Спойлер
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896527#p3896527"]Я в своих прошивка ещё вот такой код-барьер от желающих Си собирать вставляю.[/uquote]

И какую цель это преследует? Как обычно, произвести впечатление на несведующих? А есть ведь и разумное решение:

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

#ifndef __cplusplus
  #error "Error while compiling C++ code."
#endif
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Мурик",url="/forum/viewtopic.php?p=3896560#p3896560"]Лишний код в прошивке.[/uquote]Выкиньте компилятор, который на это выражение код генерит :)

[uquote="a5021",url="/forum/viewtopic.php?p=3896564#p3896564"]И какую цель это преследует?[/uquote]Вас забыл спросить. :)))
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3896527#p3896527"]Я в своих прошивках ещё вот такой код-барьер от желающих Си собирать вставляю.[/uquote]
Какой бы "барьер" для любителей компилить сишный код посредством не gcc. а g++ придумать?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3386
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

VladislavS писал(а):Выкиньте компилятор, который на это выражение код генерит
Что предлагаете взамен gcc-arm-none-eabi-9-2020-q2? :)
Думаете компилятор кейла лучше будет? :dont_know:
Ответить

Вернуться в «ARM»