xvr 12 22 апреля, 2023 Опубликовано 22 апреля, 2023 · Жалоба On 4/21/2023 at 8:58 PM, kan35 said: 3.5кБ ОЗУ все таки не так и мало. Для FreeRTOS может быть и мало. Какая у вас установка размера стека? 3 таски (2 ваши + idle) + 2 TCB могут всю память легко сьесть. Всё таки для классических RTOS нужно памяти на порядок больше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kan35 7 23 апреля, 2023 Опубликовано 23 апреля, 2023 (изменено) · Жалоба Там стек каждой по сто байт, всего куча операционки - 2кб. Я согласен, что ресурсы ограничены, но у меня будет 5-7 задач, поэтому я в этом принципиально не сомневаюсь. Решил попробовать откомпилировать в extented mode, почему то в прерывание таймера не запрыгивает в таком варианте, почему такое может быть? Почему так пробую - в примерах c гита он включен. На сколько это может быть принципиально? Изменено 23 апреля, 2023 пользователем kan35 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Driver_GV 1 23 апреля, 2023 Опубликовано 23 апреля, 2023 · Жалоба У самурая нет цели , у самурая есть только путь. 2 кб стек + 7 задач по 100 байт = 2,7 кб. Всего есть 3,5 кб. Читаем минимальное количество памяти для Ethernet только для глобальных данных, не считая динамическое выделение - https://documentation.help/Microchip-TCP.IP-Stack/Memory_Usage.html Легко не будет. Да, XC8 не может в extented mode. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kan35 7 23 апреля, 2023 Опубликовано 23 апреля, 2023 (изменено) · Жалоба Да, задачу поставил и не отступлю. С вашей помощью, конечно:-) Во FReeRTOS стеки под задачи выделяются из общей кучи. То есть 2кБ - 7*100 = 1.3кБ свободного места в куче. + обычный стек - 256 байт, и остается еще 1кБ свободного. Тут не так все плохо. Все таки оказалось, что прерывания срабатывают,однако происходит как я понимаю сброс контроллера при restore_context, тут что-то у меня с памятью. Даже вряд ли из за extended mode. Подскажите, как правильно его сконфигурировать, чтобы ОЗУ предсталов линейном виде? Я в опциях компилятора только вижу. При чем в обычном режиме выгоядит иначе, чем в extended. Обычный extended А в коде ничего нужно активировать? Или во фьюзах? Изменено 23 апреля, 2023 пользователем kan35 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kan35 7 23 апреля, 2023 Опубликовано 23 апреля, 2023 · Жалоба Ну в общем, можно сказать победа. Наладил кое-как. Хотя до конца не понял что именно сделал, что оно заработало, сейчас буду искать что... Все таки работает НЕ в extended mode. В extended постоянно сваливается в ресет когда в первый раз восстанавливает контекст. Проект прикрепил, правда на старой версии FreeRTOS пока. Может быть кому то это будет полезно когда-нибудь. Если налажу современный официальный порт, я его выложу тоже. gitprj.X_good.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kan35 7 24 апреля, 2023 Опубликовано 24 апреля, 2023 (изменено) · Жалоба Update Оказалось, что опция "Enable Multi-bank stack model" Должна быть активна. То есть порт с сайта FreeRTOS.org вполне тоже рабочий. Только вот в нем не хватает файла-проекта под MPLAB X. Поисследовав файл проекта под MPLAB IDE нашел конфигурационную строку TS{C2AF05E7-1416-4625-923D-E114DB6E2B96}=-w3 -DMPLAB_PIC18F_PORT -Ls -Opa- -nw 2074 -nw 2066 И здесь опция -Ls как раз про это. Мне надо было внимательнее это прошерстить с самого начала, сэкономил бы день. Кстати, может ли меня кто-нибудь ткнуть носом - что эта опция дает? Я почему то думал, что она включает по-банковый доступ к памяти, а получается наоборот - банки объединает в один массив? или как? Я смотрел в документации Микрочипа, но там тоже нет объяснения для меня. Изменено 24 апреля, 2023 пользователем kan35 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться