Search the Community
Showing results for tags 'freertos'.
-
Разблокировка FreeRTOS для 1986ВЕ1T и 1986ВЕ3T в Keil 5.x
l11acmep posted a topic in ARM, 32bit
Привет всем страждущим комфорта в программировании. Всем известно, что FreeRTOS отлично компилируется под отечественные 1986ВЕ1Т и 1986ВЕ3Т. Но немецкая пунктуальность товарищей из ARM не позволяет простым юзерам из России так вольготно конфигурировать свои проекты, да и с нашей отечкой они скорее всего слабо знакомы. Поэтому если вы используете в своих проектах вышеуказанные процы, то для них вы не сможете выбрать FreeRTOS напрямую в Manage Run-Time Environment. Он вам просто не даст это сделать поскольку... ну это же Cortex-M1. А FreeRTOS нативно понимает только или Cortex-M0 или M3, ну и там остальные по списку к делу не относящиеся. Хмм... Конечно подключение FreeRTOS к проекту вручную не требует особо много телодвижений. Достаточно скопировать пару папок и настроить инклуды. Но, как известно, программисты - самые ленивые существа. Иногда хочется просто поставить галочку для FreeRTOS как это описано тут для 1986ВЕ9x. Вот с этой целью я для себя подкорректировал конфигурационный файл пакета Keil. И теперь он стал узнавать наши 1986ВЕ1Т и 1986ВЕ3Т и даёт конфигурировать FreeRTOS как обычно. Это очень удобно особенно если вам приходится создавать много мелких пробных проектов с FreeRTOS. Файл прилагаю во вложении. Может кому и пригодится. Для того чтобы им воспользоваться нужно в папке установки библиотек, по умолчанию это C:\Users\$USER\AppData\Local\Arm\Packs\ARM\CMSIS-FreeRTOS\10.3.1, сделать снять режим "Только для чтения" с файла ARM.CMSIS-FreeRTOS.pdsc. Потом переименовать его в ARM.CMSIS-FreeRTOS.pdsc.bak. Так мы сделали резервную копию. (Всегда делайте резервную копию всего что изменяете ) Затем копируете приложенный файл в указанную папку. И перезапускаете Keil. Теперь у вас есть FreeRTOS для 1986ВЕ1Т и 1986ВЕ3Т. PS: Работает для последней на данный момент версии FreeRTOS 10.3.1 в Keil 5.31. Файл даётся на правах "AS IS". Ответственность на использующем. ARM.CMSIS-FreeRTOS.pdsc -
STM32 + FreeRTOS + emWin
offer6303 posted a topic in Предлагаю работу
Здравствуйте, Для ускорения работы, нужен программист микроконтроллеров. Делаем прибор, который состоит из контроллера и шины Modbus (RTU), на которой висит несколько устройств (датчики, реле, 4-20 и т.п.). Контроллер на STM32, с дисплеем 800х480. GUI реализован на STemWin. Все это работает под FreeRTOS. Язык разработки Си. Для вспомогательных целей используем Python (в основном утилиты командной строки, максимум - MatPlotlib или PyGame, графики вывести). Для контроля версий пользуемся GitHub. Если не хватает одного-двух навыков из перечисленного - не беда, подскажу/помогу. Сам прибор реализован, основной функционал выполняет. Теперь на его базе нужно реализовать родственный прибор, с похожими функциями. Работа по договору подряда. Возможны и другие формы взаимодействия, от ИП до мордобоя трудоустройства, а если у исполнителя статус "самозанятый", руководство и бухгалтерия будут в восторге. Находимся на юге Москвы, пара км за МКАД. Связь через почту, здесь бываю редко. offer.6303@gmail.com -
LWIP Socket API блокировка задачи
IvanPletnev posted a topic in ARM, 32bit
Доброго времени суток, уважаемые коллеги! Встала задача принимать пакеты из UART и передавать их в сеть. Запустил задачу-сервер на Socket API из примера ST, проверил, send - receive работает. Но когда дело дошло до реальной реализации, выяснилось, что функции accept и receive намертво блокируют задачу. Блокировку функцией accept решил вот такой нехитрой конструкцией: if (accept_state==0){ newconn = accept(sock, (struct sockaddr *)&remotehost, (socklen_t *)&size);//принимаем входящее подключение accept_state=1; } То есть, сервер принимает только одно входящее подключение. Общий вид главного цикла задачи-сервера: while (1) { if (accept_state==0){ newconn = accept(sock, (struct sockaddr *)&remotehost, (socklen_t *)&size);//принимаем входящее подключение accept_state=1; } event=osMessageGet(UART_RX_QHandle,10);//получаем указатель на структуру, которую нужно передать в сокет if (event.status==osEventMessage){ printf ("Queue received at %lu\r\n", osKernelSysTick()); pDataToSend=(UART_RX_Data*)event.value.v; HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin); send(newconn, pDataToSend->payload, pDataToSend->size, 0);//отправляем данные в сокет HAL_UART_Receive_IT(&huart3,uartRXBuffer,UART3RX_BUF_SIZE);//включаем приём в UART printf ("Switch context at %lu\r\n", osKernelSysTick()); osThreadYield(); } } в общем, циклично, по приходу пакета в UART, в задачу-сервер через очередь передается указатель на данные, которые нужно отправить в сокет. Вот теперь возникли два вопроса. Первый - как корректно завершить соединение по запросу от клиента? Попробовал сделать так: nbytes=recv(newconn, rxBuf, BUFLEN, MSG_PEEK); if (nbytes<=0){ close(newconn); } Сразу перестала работать очередь, потому что функция recv наглухо блокирует задачу. Что подскажете? И второй вопрос. Как отслеживать физический дисконнект? Может, кто уже решал эту задачу?- 8 replies
-
- socket api
- lwip
-
(and 1 more)
Tagged with:
-
Ищем программистов. HVAC
a9d posted a topic in Предлагаю работу
В небольшой коллектив ищем программиста с уверенным владением C/C++ на удаленную работу . Для проекта встраиваемого устройства необходимо дорабатывать и поддерживать текущий аппаратно-независимый код (написан на C и C++). Текущие задачи включают в себя работу с графической библиотекой TouchGFX, работу с AT библиотекой ESP8266, а также работу с сетевой частью и сервером (C#). Также есть и другие задачи, связанные с IoT (Bluetooth Mesh). Для тех, кто из Санкт-Петербурга есть возможность посещать или работать у нас в офисе. Требования: Уверенное владение C/C++. Базовые навыки работы с C# кодом. Базовая работа с git. Базовые знания цифровой схемотехники. По времени 40+ ч. Совещания дважды в неделю по скайпу. Желательно уметь разговаривать, хотя-бы, на ломанном английском. Писать сюда. Либо на почту andrew.verzhakovskyi@komfortiq.com -
Здравствуйте, система на MAX10 с использованием Nios, на Nios рабтает FreeRTOS. Использую TCP/IP стек FreeRTOS. Nios на 50 MHz входной частоты давал скорость пеердачи по TCP 10 Мбит, с оптимизациями O2 (без них ~5-6). Увеличил частоту Nios до 100 MHz, скорость выросла до 12 Мбит(с оптимизациями). TSE и SGDMA работают на частоте Nios. Памяти много, 16MB sdram, 100MHz. Видел пример альтеры по ускорению Ethernet, система у них работает на 100 MHz, и без оптимизаций выдает скорость ~22 Мбита, а с оптимизациями от 50 до 80 МБит. Не могу понять где узкое место и почему увеличивая тактовую частоту в 2 раза такой маленький прирост. Может кто-то сталкивался или посоветует куда копать?