А чего это оно? А?

Пока @ua6em со своим ST-Link’ом ковыряется я со своим решил немного…
Запустил Arduino IDE v1.8.19, открыл пример блинка (немного допилил напильником) и запустил компиляцию…

Код
#define LED_BUILTIN 13

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Получил вот такое:

Вывод ИДЕ

M:\ Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘_open’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:79:30: warning: unused parameter ‘path’ [-Wunused-parameter]
__weak int _open(const char *path, int flags, …) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:79:40: warning: unused parameter ‘flags’ [-Wunused-parameter]
__weak int _open(const char *path, int flags, …) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘_close’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:83:23: warning: unused parameter ‘fd’ [-Wunused-parameter]
__weak int _close(int fd) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘_fstat’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:87:23: warning: unused parameter ‘fd’ [-Wunused-parameter]
__weak int _fstat(int fd, struct stat *st) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘_isatty’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:92:24: warning: unused parameter ‘fd’ [-Wunused-parameter]
__weak int _isatty(int fd) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘isatty’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:96:23: warning: unused parameter ‘fd’ [-Wunused-parameter]
__weak int isatty(int fd) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘_lseek’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:100:23: warning: unused parameter ‘fd’ [-Wunused-parameter]
__weak int _lseek(int fd, off_t pos, int whence) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:100:33: warning: unused parameter ‘pos’ [-Wunused-parameter]
__weak int _lseek(int fd, off_t pos, int whence) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:100:42: warning: unused parameter ‘whence’ [-Wunused-parameter]
__weak int _lseek(int fd, off_t pos, int whence) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘_read’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:109:22: warning: unused parameter ‘fd’ [-Wunused-parameter]
__weak int _read(int fd, char *buf, size_t cnt) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:109:44: warning: unused parameter ‘cnt’ [-Wunused-parameter]
__weak int _read(int fd, char *buf, size_t cnt) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘putch’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:115:33: warning: unused parameter ‘c’ [-Wunused-parameter]
__weak void putch(unsigned char c) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘_write’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:161:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < cnt; i++)
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:158:23: warning: unused parameter ‘fd’ [-Wunused-parameter]
__weak int _write(int fd, const char *buf, size_t cnt) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘fgets’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:168:48: warning: unused parameter ‘f’ [-Wunused-parameter]
__weak char *fgets(char *s, int bufsize, void *f) {
^
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c: In function ‘_exit’:
M:\Arduino IDE\portable\packages\stm32duino\hardware\STM32F1\2022.9.26\variants\generic_stm32f103r\wirish\syscalls.c:173:23: warning: unused parameter ‘exitcode’ [-Wunused-parameter]
__weak void _exit(int exitcode) {
^
Скетч использует 15696 байт (5%) памяти устройства. Всего доступно 262144 байт.
Глобальные переменные используют 2736 байт (4%) динамической памяти, оставляя 62800 байт для локальных переменных. Максимум: 65536 байт.

Не понял. Полез в интернет - ничего подобного не встретил.
Решл создать тему.
Пока писал - запустил еще раз компиляцию, только номер пина сменил с 13го на 5й. Никаких ворнингов. Странна.
Вернул номер 13 на место. Опять никаких варнингов.
Вдвойне странно.
Закрываю / открываю ИДЕ - опять всё тоже самое. Что за фигня?

И почему в старой прошивке (что в STM загружена) вот такое отображается?

Картинко

В IDE так и должно быть.

Все предупреждения были на файл “syscalls.c”. Он компилируется один раз, а потом, берётся готовый. Видимо, при закрытие IDE скомпилированная версия уничтожается, поэтому при перезапуске он снова компилируется (и лезут предупреждения) но опять же один раз.

От этого никак не избавиться?

И про то, что во флеше STM ничем не поможете?

Только выключить соответствующий варнинг, но это чревато.
Видимо у автора пакета эти варнинги были выключены. Или ему было пофиг.

Ну, можно исправить файл syscalls.c, там же несложно, но, боюсь, это “до ближайшего обновления”.

Мой подход к таким делам Вы знаете. Софт, который так написан – фтопку.

Я как-то Архату сказал, что Arhat.h выдаёт больше строк предупреждений, чем в ней самой. Он ответил: “я об этом не парюсь”.

2 лайка

скорее “фтопку” тех, кто включает в вывод предупреждения о неиспользованных параметрах.
И это еще что. Ардуино ЕСП32 не компилирует с этим, там unused включено, как ошибка, а не предупреждение.

На мой взгляд - бред и мешает разработке. Пример мой: я дела модуль и под него завожу некоторые имена. При передаче Заказчику мне неудобно полностью вычищать наброски нового модуля. У меня - все ненужное выключено, а у Заказчика чистая Ардуино ИДЕ, которая сыплет ему тонну ошибок.
Поэтому unused - ну очень вредное предупреждение. А ж в качестве ошибки - никакого оправдания!


Это только ИМХО, не для спора. Б…же упаси!

а вот интересно, поправить можно было…
PS я “Пётр Петрович Гарин” у Adafruit библиотеки правил, там тоже были косяки с варнингами

Накину немного на вентилятор :slight_smile:
Для каждого МК есть свои специализированные IDE…

тут какой-то наш МК презентовали, говорят пойдёт в автомобильную тематику, нет, конечно двигателем он управлять не сможет, но подъёмником двери - вполне )))

Да кто же спорит?
Хотя, думаю, @b707 не согласился бы с таким утверждением ))

ну можно же закрыть все неиспользуемые переменные макросом UNUSED() и все предупреждения и ошибки уйдут.
Зато приучает к аккуратности.

Ну…натянуть сову на глобус (какой то пример на какой то МК в какой то несовместимой ide) так себе удовольствие :slight_smile:
Не зря же ЕвгенийП пишет для avr в в avr studio, наверное он что то знает…

Дверь “крыло чайки” в семерку решил приспособить?

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

Вот, я именно об этом.

Избавиться от этого предупреждения – как два пальца. Единственное, почему автор этого не сделал – забил – “и так сойдёт” / “на скорость не влияет”.

И у меня тут же возникает вопрос. Если автор в этом месте руководствовался принципом “и так сойдёт”, где ещё (и что ещё) “и так сойдёт”? На что ещё он забил? На тщательность тестирования? На проектирование? Если автор, как он явственно показал, не страдает маниакальной педантичность и аккуратностью, в каком месте его программы ожидать очередного "не влияния на скорость"?

Т.е. я просто не доверяю авторам такого софта.

Тем более, что в данной конкретной библиотеке, кроме unused, есть и предупреждения о смешении знаковых и беззнаковых величин при сравнении, а эти предупреждения уже далеко не так безобидны.