RT-Thread
Эта версия была скопирована из официального репозитория RT-Thread и включает в себя код, связанный с платой GD32F450Z-QD. Другие изменения не были внесены.
RT-Thread — это открытая операционная система для интернета вещей (IoT), разработанная в Китае. Она обладает высокой масштабируемостью: от небольшого ядра, которое может работать на ARM Cortex-M0, до среднего уровня на ARM Cortex-M3/4/7 или даже на MIPS32 или ARM Cortex-A.
Введение
RT-Thread включает в себя собственное традиционное ядро реального времени с вытесняющей многозадачностью, семафорами, мьютексами, почтовыми ящиками, очередями сообщений и сигналами. Однако у него есть три отличия от традиционных операционных систем реального времени:
Фреймворк для драйверов устройств похож на набор драйверов, включая UART, IIC, SPI, SDIO, USB хост/устройство, EMAC, NAND флэш-память и другие устройства. Он абстрагирует и извлекает общие черты из этих драйверов устройств, позволяя разработчикам оборудования реализовывать только небольшое количество низкоуровневых операций и настройки платы. Таким образом, аппаратные периферийные устройства легче интегрируются в систему RT-Thread, обеспечивая полный стек программного обеспечения на платформе RT-Thread.
Программные компоненты — это программные единицы, расположенные на ядре RT-Thread, такие как командная строка (finsh/msh shell), виртуальная файловая система (FAT, YAFFS, UFFS, ROM/RAM файловые системы и т. д.), сетевой протокол TCP/IP (lwIP), Libc/POSIX стандартные слои и т.д. Обычно программный компонент размещается в каталоге, например, в папке RT-Thread/components, и каждый программный компонент описывается файлом SConscript, который добавляется в систему сборки RT-Thread. Когда этот программный компонент включён в конфигурацию системы, он компилируется и связывается с окончательным программным обеспечением RT-Thread.
Примечание: с включением менеджера пакетов в RT-Thread 3.0 всё больше программных компонентов будут доступны в виде пакетов на платформе RT-Thread. Платформа RT-Thread в основном состоит из:
Дополнительные пакеты IoT также добавляются на платформу RT-Thread в виде пакетов.
Модули приложений, также называемые пользовательскими приложениями (User Application, UA), представляют собой динамически загружаемые модули, которые могут быть скомпилированы независимо от программного обеспечения RT-Thread. Как правило, каждое UA содержит функцию main в качестве точки входа, а также собственный список объектов для управления задачами, семафорами и очередями сообщений этого приложения, создания, инициализации и уничтожения. Для получения дополнительной информации о UA посетите другой репозиторий git.
Поддерживаемые архитектуры чипов
RT-Thread поддерживает различные архитектурные платформы чипов, охватывая основные архитектуры, используемые в настоящее время:
Лицензия
Начиная с версии v3.1.1, RT-Thread является открытым исходным кодом, лицензированным под Apache License 2.0. Лицензионную информацию и авторские права обычно можно найти в начале кода:
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*/
С 9 сентября 2018 года разработчики, подающие PR, должны подписать соглашение о лицензии участника (CLA).
Обратите внимание: лицензия Apache 2.0 применяется к RT-Thread v3.1.1 и более поздним версиям. В настоящее время она всё ещё находится в стадии подготовки (подготовка всех существующих разработчиков к подписанию CLA).
Компиляция
В RT-Thread используется scons в качестве собственной системы сборки, которая была настроена для удовлетворения собственных потребностей (можно просмотреть дополнительные команды, добавив scons --help). Перед компиляцией RT-Thread необходимо установить Python 2.7.x и scons.
На данный момент система сборки scons RT-Thread может использовать командную строку для компиляции кода или генерировать проекты для различных IDE. При использовании scons необходимо настроить следующие переменные в файле конфигурации сборки (rtconfig.py):
CROSS_TOOL
указывает на используемый инструмент цепочки, такой как gcc/keil/iar.EXEC_PATH
путь инструментальной цепочки.Примечание: в файле SConstruct:
RTT_ROOT
эта переменная указывает на корневой каталог исходного кода RT-Thread. Если вы планируете компилировать только цель в каталоге bsp, этот RTT_ROOT
может использовать конфигурацию по умолчанию. Кроме того, вы можете установить одноимённую переменную среды, чтобы указать на другой исходный код RT-Thread корневой каталог.
После правильной настройки всех конфигураций вы можете выполнить следующую команду в целевом каталоге (этот каталог должен включать rtconfig.py и файл SContruct):
scons
Это позволит легко скомпилировать RT-Thread.
Если вы хотите использовать IDE для компиляции RT-Thread, вы также можете использовать командную строку:
scons --target=mdk/mdk4/mdk5/iar/cb -s
Для генерации проектов mdk/iar и других. Затем откройте проектный префикс в IDE для компиляции RT-Thread.
Обратите внимание: система сборки scons RT-Thread будет обрезать систему в соответствии с конфигурационным заголовком rtconfig.h. Например, если вы отключите определение lwIP в rtconfig.h (путем комментирования #define RT_USING_LWIP
), сгенерированные проекты IDE не будут включать файлы, связанные с lwIP. В RT-Thread версии 3.0 вы можете настроить всю систему через menuconfig, вместо того чтобы вручную изменять файл конфигурации заголовка rtconfig.h.
Участники
Посетите страницу участников проекта RT-Thread на GitHub, чтобы узнать о тех, кто уже вносил свой вклад в код и PR для RT-Thread. Спасибо всем разработчикам, которые внесли свой вклад в RT-Thread!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )