|
Несколько вопросов начинающего |
|
|
|
 |
Ответов
|
May 7 2014, 12:13
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Цитата(juvf @ May 7 2014, 11:43)  2MiklPolikov по существу не скажу. такого опыта не имею. ps: я смотрю на вопросы... и любопытстов всё больше и больше.... динамическое создание задач, самоудаление задач, налету изменение системного тика.... Что за проект? Что вы делаете? Например разрабатываю диктофоны, которые производят Телесистемы в Зеленограде. И другие проекты подобного характера. Иными словами, я делаю "гаджеты". Цитата(kostyan @ May 7 2014, 16:04)  2MiklPolikov, фриртос - это операционка с открытым кодом.
Открыл свой проект, нашел в FreeRTOSConfig.h: #define configCPU_CLOCK_HZ ( SystemCoreClock )
Сделал поиск по configCPU_CLOCK_HZ в проекте.
Нашел что юзается дефайн в "__weak void vPortSetupTimerInterrupt( void )". Сделал иерархию вызова функции: portBASE_TYPE xPortStartScheduler( void ) <- void vTaskStartScheduler( void )
Следовательно, дефолтные настройки системного таймера применяются ровно один раз в проекте. Если вы хотите менять частоту процессора - то в том же коде перенастаивайте таймер системного тика, и будет вам счастье. Пост писал, гораздо дольше чем залез в код и нашел ответы на ваши вопросы. Да, я то же это находил. Но подумал, вдруг есть неочевидные для меня тонкости.
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
May 27 2014, 09:01
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Коллеги, ещё один вопрос :
Верно ли я понимаю, что значение, которое возвращает xTaskGetTickCount(); периодически сбрасывается в 0 и начинает расти заново, т.к. переполняется 32х разрядная переменная, которая считает тики , и стало быть, при использовании xTaskGetTickCount(); я должен обрабатывать этот сброс в 0 ? А все функции операционки которые работают со временем (задержка, взять симофор и т.п. ) , то же обрабатывают сброс счётчика тиков в 0 ?
МП
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
May 28 2014, 00:41
|

Профессионал
    
Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045

|
Цитата(MiklPolikov @ May 27 2014, 19:11)  переполняется 32х разрядная переменная 32-х битная или 16 Код #if( configUSE_16_BIT_TICKS == 1 ) typedef uint16_t TickType_t; #define portMAX_DELAY 0xffff #else typedef uint32_t TickType_t; #define portMAX_DELAY 0xffffffffUL #endif Цитата стало быть, при использовании xTaskGetTickCount(); я должен обрабатывать этот сброс в 0 ? а зачем? Цитата А все функции операционки которые работают со временем (задержка, взять симофор и т.п. ) , то же обрабатывают сброс счётчика тиков в 0 ? ээээ.... а это зачем? зарядили симофор на 100. в счетчик симофора 100. каждый тик из счетчика симофора вычитаем 1. как 0 стал - обработали. вобще счетчик тика тут не причем. (код ос не смотрел, но я бы так сделал) допустим typedef uint16_t TickType_t;. текущее значение 0xfffe. зафиксировали. прошло 100 тиков. счетчик стал 0х0062. Для вычисления периода времени из нового значения вычитаем старое, т.е. 0х0062 - 0xfffe, для типов uint16_t разница равно 100 dec.
|
|
|
|
|
May 29 2014, 15:40
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
juvf, спасибо ! Я всегда работал со временем другим способом, и в нём приходилось проверять, не начался ли счёт с 0
И ещё вопрос. Правильно ли я понимаю работу ОС в целом ? :
В устройстве две SD карты. Задача инициализации написана одна, она создаётся в двух экземплярах, в задачу передаётся параметр № карты. Задача вызывает какие-то функции с локальными переменными, те то же вызывают функции и т.д. Правильно ли я понимаю, что при переключении контекста все эти локальные переменные сохраняются в стеке задачи, т.е. физически копируются из одной области памяти в другую ? Если локальные переменные в функциях определены как static, это не влияет на сохранение в стеке ? Получается, что на переписывание контекста в стек и обратно уходит много времени, и стало быть надо стремится сокращать количество локальных переменных ? Все большие массивы нужно определять как глобальные переменные, и работать с ними как с ресурсом ?
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
May 30 2014, 02:50
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 2-03-06
Из: Минск
Пользователь №: 14 879

|
Цитата(MiklPolikov @ May 29 2014, 22:50)  juvf, спасибо ! Я всегда работал со временем другим способом, и в нём приходилось проверять, не начался ли счёт с 0
И ещё вопрос. Правильно ли я понимаю работу ОС в целом ? :
В устройстве две SD карты. Задача инициализации написана одна, она создаётся в двух экземплярах, в задачу передаётся параметр № карты. Задача вызывает какие-то функции с локальными переменными, те то же вызывают функции и т.д. Правильно ли я понимаю, что при переключении контекста все эти локальные переменные сохраняются в стеке задачи, т.е. физически копируются из одной области памяти в другую ? Если локальные переменные в функциях определены как static, это не влияет на сохранение в стеке ? Получается, что на переписывание контекста в стек и обратно уходит много времени, и стало быть надо стремится сокращать количество локальных переменных ? Все большие массивы нужно определять как глобальные переменные, и работать с ними как с ресурсом ? По поводу переписывания контекства juvf Вам уже ответил. Контекст не переписывается, а переключается. А вот использование static, без понимания, я бы не рекомендовал. При создании такой переменной ее экземпляр будет один и тот же на все задачи. И это может привести к печальным последствиям, если это не учитывать.
|
|
|
|
|
May 30 2014, 04:13
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Цитата(Newegor @ May 30 2014, 11:00)  А вот использование static, без понимания, я бы не рекомендовал. При создании такой переменной ее экземпляр будет один и тот же на все задачи. Newegor, спасибо за информацию про static ! У меня вот это работает, только если возвращаемая переменная static . А если нет, то функция возвращает 0. Как я понимаю, это потому что существование переменной прекращаеся чуть раньше чем программа вышла из функции, и возвращать оказывается нечего. Код char do_something(void) { chatic char result;
//................. return result; }
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
May 31 2014, 08:25
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(MiklPolikov @ May 30 2014, 14:23)  У меня вот это работает, только если возвращаемая переменная static . А если нет, то функция возвращает 0. Как я понимаю, это потому что существование переменной прекращаеся чуть раньше чем программа вышла из функции, и возвращать оказывается нечего. Код char do_something(void) { chatic char result;
//................. return result; } Так не бывает. Тем более с переменной типа char. Она помещается в регистр, поэтому не может прекратить своё существование. Попробуйте убрать статик и назначить переменной какое-то значение по умолчанию, типа Код char do_something(void) { char result = 123;
//................. return result; } И посмотрите, что получится. Если функция будет возвращать 123, значит вы просто забыли присвоить значение переменной result:)
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
MiklPolikov Несколько вопросов начинающего Nov 16 2013, 13:09 AlexMad А нельзя просто, по результату полученного сообщен... Nov 16 2013, 17:13 Lagman Цитата(MiklPolikov @ Nov 16 2013, 17:09) ... Nov 16 2013, 19:06 MiklPolikov Цитата(Lagman @ Nov 16 2013, 23:06) Можно... Nov 16 2013, 19:16  MiklPolikov Вопрос 2 :
Есть USB библиотека. К ней я обращаюсь... Nov 16 2013, 21:35   MiklPolikov Вопрос 3:
Почему 2 задачи работают, а если зап... Nov 17 2013, 23:54    MiklPolikov Вопрос 4:
Почему в файле FreeRtosConfig.h нету п... Nov 18 2013, 02:02   Lagman Цитата(MiklPolikov @ Nov 17 2013, 01:35) ... Nov 18 2013, 19:32    MiklPolikov Цитата(Lagman @ Nov 18 2013, 23:32) Можно... Nov 18 2013, 20:41     Lagman Цитата(MiklPolikov @ Nov 19 2013, 00:41) ... Nov 18 2013, 21:28      MiklPolikov 6 ) Вопрос по структуре программы :
Допустим есть... Nov 21 2013, 11:47       kolobok0 Цитата(MiklPolikov @ Nov 21 2013, 15:47) ... Nov 21 2013, 16:49        MiklPolikov Ещё вопрос, №7
Правильно ли я понимаю, что люб... Dec 9 2013, 03:15         kolobok0 Цитата(MiklPolikov @ Dec 9 2013, 07:15) .... Dec 9 2013, 22:23         juvf Цитата(MiklPolikov @ Dec 9 2013, 09:15) П... Dec 11 2013, 04:28          MiklPolikov Объясните, как подружить FREERTOS и STM32F030 ?
... Dec 21 2013, 17:32           kolobok0 Цитата(MiklPolikov @ Dec 21 2013, 21:32) ... Dec 21 2013, 22:16           juvf Цитата(MiklPolikov @ Dec 21 2013, 22:32) ... Dec 22 2013, 07:10            MiklPolikov juvf , спасибо, получилось. Моя проблема была в то... Dec 22 2013, 13:49             MiklPolikov Вопрос про удаление задач.
Как это организовать пр... Dec 23 2013, 10:38              juvf Цитата(MiklPolikov @ Dec 23 2013, 16:38) ... Dec 23 2013, 11:00               MiklPolikov juvf, спасибо !
У меня ещё вопрос .
В докумен... Dec 23 2013, 16:00 juvf не путай vTaskDelay и vTaskDelete.
vTaskDelay - н... Dec 23 2013, 17:33 MiklPolikov juvf, огромное спасибо !!!
Наблюдения... Dec 24 2013, 02:29  juvf Цитата(MiklPolikov @ Dec 24 2013, 07:29) ... Dec 24 2013, 03:20   MiklPolikov Стало любопытно, каким образом память становится ф... Jan 6 2014, 00:32    juvf Цитата(MiklPolikov @ Jan 6 2014, 05:32) С... Jan 6 2014, 06:57     MiklPolikov Цитата(juvf @ Jan 6 2014, 10:57) Дружище.... Jan 6 2014, 08:12      MiklPolikov У меня новый вопрос.
Правильно ли я отдаю симафор ... Jan 6 2014, 14:44       kolobok0 Цитата(MiklPolikov @ Jan 6 2014, 18:44) .... Jan 6 2014, 17:55        MiklPolikov Цитата(kolobok0 @ Jan 6 2014, 21:55) в ко... Jan 6 2014, 21:06         kolobok0 Цитата(MiklPolikov @ Jan 7 2014, 01:06) К... Jan 6 2014, 23:04          MiklPolikov Цитата(kolobok0 @ Jan 7 2014, 03:04) вот ... Jan 7 2014, 00:38       juvf Цитата(MiklPolikov @ Jan 6 2014, 20:44) К... Jan 7 2014, 08:19        MiklPolikov Цитата(juvf @ Jan 7 2014, 12:19) Какой ка... Jan 7 2014, 20:05         juvf Цитата(MiklPolikov @ Jan 8 2014, 02:05) Ч... Jan 9 2014, 03:22          MiklPolikov juvf, огромное спасибо, сделал приоритет прерывани... Jan 11 2014, 09:09           Lagman Цитата(MiklPolikov @ Jan 11 2014, 13:09) ... Jan 11 2014, 11:55            MiklPolikov Цитата(Lagman @ Jan 11 2014, 15:55) В СТМ... Jan 11 2014, 12:15             Lagman Цитата(MiklPolikov @ Jan 11 2014, 16:15) ... Jan 11 2014, 12:27 MiklPolikov Цитата(juvf @ Dec 23 2013, 21:33) Про зач... Jul 17 2014, 13:17  juvf Цитата(MiklPolikov @ Jul 17 2014, 19:17) ... Jul 17 2014, 19:30   DASM Цитата(juvf @ Jul 17 2014, 23:30) Более т... Jul 17 2014, 19:39    juvf Цитата(DASM @ Jul 18 2014, 01:39) Если на... Jul 17 2014, 20:40   MiklPolikov Цитата(juvf @ Jul 17 2014, 23:30) ps если... Jul 17 2014, 19:47    juvf Цитата(MiklPolikov @ Jul 18 2014, 01:47) ... Jul 17 2014, 20:09     MiklPolikov Цитата(juvf @ Jul 18 2014, 00:09) хороший... Jul 17 2014, 20:12 juvf На сколько я понял.... ос использует приоритеты ни... Jan 11 2014, 20:48 MiklPolikov Ещё один вопрос :
Почему в задачу vApplicationStac... Jan 13 2014, 08:52  juvf Цитата(MiklPolikov @ Jan 13 2014, 14:52) ... Jan 13 2014, 10:56   MiklPolikov Цитата(juvf @ Jan 13 2014, 14:56) Не знаю... Jan 13 2014, 11:57    MiklPolikov Вопрос по организации алгоритма :
Допустим начала... Feb 4 2014, 20:46     juvf для этого существуют эвэнты. в v8.0 наконецто их д... Feb 5 2014, 02:25     Timma Цитата(MiklPolikov @ Feb 5 2014, 00:46) В... Feb 5 2014, 13:16      MiklPolikov Ещё вопрос:
Как я понял , для того что бы использ... Feb 12 2014, 19:37 juvf Я работал с флагами (эвентами) в др ртос. В ФрииРТ... Feb 14 2014, 02:42 MiklPolikov Настроил как написал выше, и вроде бы всё хорошо.
... Feb 14 2014, 07:21  MiklPolikov И ещё вопрос по флагам событий :
Я верно понимаю, ... Feb 15 2014, 10:02  _Артём_ Цитата(MiklPolikov @ Feb 14 2014, 11:21) ... Feb 15 2014, 14:19   MiklPolikov Ещё один вопрос, по архитектуре кода :
Перевожу с... Apr 24 2014, 14:41    kolobok0 Цитата(MiklPolikov @ Apr 24 2014, 18:41) ... Apr 24 2014, 18:54     MiklPolikov Цитата(kolobok0 @ Apr 24 2014, 22:54) в) ... Apr 24 2014, 19:25      kolobok0 Цитата(MiklPolikov @ Apr 24 2014, 23:25) ... Apr 25 2014, 18:08     juvf Цитата(kolobok0 @ Apr 25 2014, 00:54) в) ... Apr 26 2014, 04:18      MiklPolikov Ещё один вопрос:
Требуется экономить потребляемый... Apr 29 2014, 10:22      kolobok0 Цитата(juvf @ Apr 26 2014, 08:18) ...Когд... Apr 29 2014, 20:36 DASM Б Apr 24 2014, 16:08 Lagman http://www.freertos.org/low-power-tickless-rtos.ht... Apr 30 2014, 11:27 MiklPolikov Цитата(Lagman @ Apr 30 2014, 15:27) http:... Apr 30 2014, 12:56 Lagman Я сильно не вникал т.к. не использую режимы энерго... Apr 30 2014, 18:08 MiklPolikov Может кто подскажет :
Есть задача, которая создаёт... May 4 2014, 18:54  MiklPolikov Разобрался, дело было в недостаточном стеке задачи... May 6 2014, 16:53       juvf Цитата(MiklPolikov @ May 30 2014, 14:23) ... May 30 2014, 05:59        MiklPolikov Цитата(juvf @ May 30 2014, 14:09) нет, не... May 30 2014, 06:43         Lagman Цитата(MiklPolikov @ May 30 2014, 14:53) ... May 30 2014, 07:18         juvf Цитата(MiklPolikov @ May 30 2014, 16:53) ... May 31 2014, 06:38        MiklPolikov Цитата(AHTOXA @ May 31 2014, 16:35) Так н... Jun 8 2014, 09:16         MiklPolikov Коллеги, доброго времени суток.
Не могу до конца ... Jul 12 2014, 00:58          Xenia Цитата(MiklPolikov @ Jul 12 2014, 04:58) ... Jul 12 2014, 13:32           juvf Цитата(Xenia @ Jul 12 2014, 19:32) Судя п... Jul 13 2014, 11:16   msalov Цитата(MiklPolikov @ May 27 2014, 16:11) ... May 30 2014, 05:35 kostyan 2MiklPolikov, фриртос - это операционка с открытым... May 7 2014, 12:04 juvf я думаю что ос работает не так. есть две задачи. у... May 30 2014, 00:37 Lagman эта функция или прототип функции объявлен до вызов... May 30 2014, 05:19 MiklPolikov Цитата(Lagman @ May 30 2014, 13:29) эта ф... May 30 2014, 12:01 Lagman %)
Я знаю что это функция. May 31 2014, 06:21 DASM Читаю все это и волосы дыбом. Тем более что и рабо... Jul 17 2014, 16:10 MiklPolikov Цитата(DASM @ Jul 17 2014, 20:10) Читаю в... Jul 17 2014, 16:46 DASM Если бы я знал «как надо» то не сидел бы тут… увы ... Jul 17 2014, 17:13 Lagman ключевые слова malloc, free и их реализация в порт... Jul 17 2014, 19:11 DASM Кому они ключевые ? Да хоть new, хоть malloc - сут... Jul 17 2014, 19:26 Lagman Цитата(DASM @ Jul 17 2014, 23:26) Кому он... Jul 17 2014, 20:36
2 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|