nick555 0 11 августа, 2023 Опубликовано 11 августа, 2023 · Жалоба Сорри, похоже первый пост не туда написал, повторюсь здесь: Подскажите новичку, что не так проект на Stm32CubeIde В программе использую очередь freeRTOS, хочу проверить, есть ли задачи, ожидающие эту очередь. Контекстная подсказка видит (как и отладчик) эту структуру и выдает: MyQueueHandle->xTasksWaitingToReceive.uxNumberOfItem однако компилятор выдает ошибку: invalid use of undefined type 'struct QueueDefinition' Что я не так делаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 11 августа, 2023 Опубликовано 11 августа, 2023 · Жалоба Отвечал уже в соседней теме: Вы можете обращаться к функционалу FeeRTOS только через её API - список функций. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 11 августа, 2023 Опубликовано 11 августа, 2023 · Жалоба 1 hour ago, EdgeAligned said: Вы можете обращаться к функционалу FeeRTOS только через её API - список функций. Но если сильно хочется, то можно и напрямую. Но проще конечно через API Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 12 августа, 2023 Опубликовано 12 августа, 2023 · Жалоба Да не получится там напрямую, поскольку нужно будет вносить изменения в файлы самой РТОС, а это чревато, особливо когда нет понимания работы внутрянки РТОС. QueueHandle_t - это неполный тип структуры. Полный тип xQUEUE находится только внутри файла queue.c . Там в принципе то так и написано в комментах - такой стиль именования структуры сделан для защиты от поломания ядра системы 🙂 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nick555 0 12 августа, 2023 Опубликовано 12 августа, 2023 · Жалоба Спасибо всем ответившим. Собственно, что-то подобное я и подозревал, xQUEUE тоже нашел Просто, как я и писал, смутил тот факт, что и в контекстной подсказке и в отладчике вся "истинная" структура прекрасно видна. В-общем, "защита от поломания" получилась как в анекдоте про попа - вы или трусы оденьте или крестик снимите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 12 августа, 2023 Опубликовано 12 августа, 2023 · Жалоба А потому что написано на Си, а не на С++, потому закрыть видимость на уровне редактора не получается. Но компилятор то не дурак, следит за неправильными действиями. Если прям очень нужно, можете дописать в файл queue.c функцию, получающую доступ к полям этой структуры и вынести прототип ф-ции в queue.h, чтобы она была доступна. Но содержимое полей структуры изменять в добавленных ф-циях не следует, иначе РТОС может поломаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 12 августа, 2023 Опубликовано 12 августа, 2023 · Жалоба 12 minutes ago, EdgeAligned said: А потому что написано на Си, а не на С++, потому закрыть видимость на уровне редактора не получается. Но компилятор то не дурак, следит за неправильными действиями. Если прям очень нужно, можете дописать в файл queue.c функцию, получающую доступ к полям этой структуры и вынести прототип ф-ции в queue.h, чтобы она была доступна. Но содержимое полей структуры изменять в добавленных ф-циях не следует, иначе РТОС может поломаться. Согласен. В следующей версии что-нибудь добавят/убавят и надо будет опять менять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kan35 7 16 августа, 2023 Опубликовано 16 августа, 2023 · Жалоба On 8/11/2023 at 6:15 PM, nick555 said: В программе использую очередь freeRTOS, хочу проверить, есть ли задачи, ожидающие эту очередь. .. Что я не так делаю? Есть вероятность, что вы делаете это зря. В API этого нет именно потому, что сложно представить зачем это может потребоваться, так как на уровне алгоритма работы приложения вы всегда знаете кто и где ждет очередь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 17 августа, 2023 Опубликовано 17 августа, 2023 · Жалоба 16 hours ago, kan35 said: Есть вероятность, что вы делаете это зря. В API этого нет именно потому, что сложно представить зачем это может потребоваться, так как на уровне алгоритма работы приложения вы всегда знаете кто и где ждет очередь. Программист возможно и знает, кто и где может ожидать данные из очереди. Однако некая задача этого знать не обязана, но может сильно хотеть узнать. Зачем? Неважно. Может быть это консольная утилита, которая выводит статистику по ресурсам ОСРВ. P.S. Заметил по себе и по коллегам, которые плотно работают с ОСРВ, что возникает желание что-то доработать, добавить или откорректировать. Иногда желание переходит в действие. Не стоит идеализировать разработчика API этой ОСРВ. Хотя и бездумно что-то делать тоже не следует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kan35 7 17 августа, 2023 Опубликовано 17 августа, 2023 · Жалоба Тут главное - Не начать изобретать велосипед. если у тс очередь принимается из разных задач в разное время ( не одновременно же), то есть еще варианты синхронизации. Немного лирики. В 99% случаев, когда вопрос слишком уж замысловатый, это значит, что проблема совсем не про это, люди склонны создавать себе проблемы сами, знаю по себе))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 17 августа, 2023 Опубликовано 17 августа, 2023 · Жалоба 18 hours ago, haker_fox said: Программист возможно и знает, кто и где может ожидать данные из очереди. Однако некая задача этого знать не обязана, но может сильно хотеть узнать. Зачем? Неважно. Может быть это консольная утилита, которая выводит статистику по ресурсам ОСРВ. P.S. Заметил по себе и по коллегам, которые плотно работают с ОСРВ, что возникает желание что-то доработать, добавить или откорректировать. Иногда желание переходит в действие. Не стоит идеализировать разработчика API этой ОСРВ. Хотя и бездумно что-то делать тоже не следует. Так никто и не запрещает. Берите исходники и меняйте, что хотите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться