Символьные ссылки, управление обычными файлами и другие функции (#8672):
- Добавить функцию sys_utimensat; добавить символьную ссылку cromfs (#8132)
- Реализовать поддержку mmap в cromfs (#8218)
Libc:
- Устранить проблему с несколькими определениями функции difftime в среде компиляции MDK
- Решить проблему гонки данных в общем списке идентификаторов счётчиков; устранить проблему совместимости файла ctime.c со старыми драйверами
- Исправить проблему переопределения макроса в eventfd из-за обновления набора инструментов
- Устранить логическую ошибку в поиске локального хранилища потока posix для дескриптора потока posix
- Улучшить gcc picolibc; дополнительно оптимизировать epoll и timerfd
- Добавить макрос RT_USING_INTERNAL_LIBC_ONLY; добавить функциональность универсальных атомарных операций GCC (#8648)
LWP:
- Добавить функцию sys_setitimer
- Заменить функцию lwp_new на lwp_create; заменить код отключения/включения irq в futex; заменить off_t на size_t в lwp_syscall.c
- Устранить проблемы с настройкой привязки к процессору; решить проблему внутренней блокировки rt_channel; исправить проблему повторного использования pid; исправить настройку флага защиты сигнала процесса инициализации (#8797)
- Включить автоматический выбор опций LDSO и pcache по умолчанию после включения опций smart/lwp
- Обновить привязку AF_UNIX и структуру данных connect, обновить структуру sockaddr_un AF_UNIX до стандартной структуры
MM:
- Реализовать поддержку зарезервированной памяти; реализовать функцию rt_aspace_mremap_range
- Устранить проблему использования освобождённой памяти в aspace_traversal; устранить проблему функции page_install в теневой области
Net:
- Оптимизировать вывод команды сканирования Wi-Fi, чтобы избежать конфликтов между несколькими выводами клиента и сервера (#8666)
- at: оптимизировать вывод форматирования at, чтобы избежать конфликтов между несколькими клиентами и серверами at; оптимизировать компонент AT и устранить потенциальную утечку памяти
- lwip: устранить возможную тупиковую ситуацию в SMP
- sal: добавить функцию ifconfig updown; добавить ограничение количества сообщений; обновить уровень абстракции сокета SAL, улучшить функциональность socketpair, sendmsg, recvmsg
Finsh:
- Оптимизировать отображение list_thread; оптимизировать определение макроса MSH
- Проверить размер стека потока finsh; добавить функцию перехвата входа потока finsh
FAL:
- Добавить механизм блоков для fal, поддерживать добавление специальных определений блоков
MProtect:
- Разработать слой абстракции MPU, поддерживать архитектуры ARMv7-M, ARMv8-M
Другие:
- Синхронизировать различия в ядре, файловой системе и т. д.; удалить vmm
- Устранить предупреждение -Wmissing-prototypes
Libcpu
- AARCH64: исправить символ входа в ядро; устранить проблему, когда информация трассировки не видна в среде ulog; использовать дерево устройств для инициализации ЦП и памяти; улучшить производительность отключения/включения IRQ
- ARM: добавить поддержку Cortex®-M85, Cortex®-R52; устранить проблему ненормальной работы SMP в Cortex®-A (#8517)
- RISC-V: устранить проблему сбоя интеллектуальной сборки d1s (#8212)
- Реализовать поддержку mmap
- Поддержать общую структуру обратной трассировки в ядре RT-Thread; добавить слабую реализацию службы обратной трассировки на уровне архитектуры; добавить поддержку архитектуры RV64
- Стандартизировать название группы Libcpu как libcpu
Инструменты
- Поддержка инструментария LLVMEmbeddedToolchainForArm-17.0.1
- Добавлена команда scons --target=vsc/--pack=xxx; добавлена операция предварительной сборки
- Исправлена проблема распознавания файла rtconfig.h в MPU в сценариях
- rt_studio: исправлена проблема отсутствия поля {cross_toolchain_flags} при импорте проектов bsp в rt-studio
- env: устранена проблема встроенного подпроцесса python2
Действие
- Устранена проблема Doxygen CI
- Добавлен мониторинг CI для BSP
- Добавлен контроль CI для bsp
Utest
- Добавлены тестовые случаи для системы памяти; добавлены тестовые примеры для фреймворка serial_v2; добавлены тестовые случаи mm; добавлены тестовые случаи планировщика
BSP
- Улучшены несколько файлов драйверов bsp; устранены некоторые проблемы в bsp
- Поддержка RT-Smart: DFZU2EG MPSoC, cv181x-riscv
- STM32: серии STM32 G0, G4, L0, L4 Поддержка переключения в один клик на версию RT-Thread Nano; добавлены макросы для идентификации платы на уровне серии STM32 Nucleo; добавлена конфигурация, связанная с CI, для Nano версии серии STM32.
Поддержка RTduino: raspberry-pico, stm32h503-st-nucleo, stm32h563-st-nucleo, stm32f412-nucleo, stm32f407-rt-spark.
Добавлены новые BSP:
- Adafruit: Metro M4;
- Seeed Studio: Wio-Terminal;
- ST: stm32L431_tencentos, stm32h7s7-disco, stm32f407-lckfb-skystar, stm32h503-st-nucleo;
- Renesas: ek-ra8m1, ek-ra8d1, ra8d1-vision-board;
- AT32: at32f402-start, at32f405-start;
- HT32: ht32f52352, ht32f12366;
- AVR32: at32uc3a0256, at32uc3b0256;
- CVITEK: c906_little, cv18xx_risc-v;
- WCH: yd-ch32v307vct6 (risc-v);
- HC32: ev_hc32f4a0_lqfp176, ev_hc32f460_lqfp100_v2, ev_hc32f448_lqfp80;
- GD32: gd32407v-lckfb;
- NXP:
- mcxn: frdm-mcxn947;
- mcxa: frdm-mcxa153.
Userapps
Исправлена проблема, когда таймер не запускался, когда пользовательское пространство получало текущее время и затем получало его снова в пространстве ядра, что приводило к отрицательной разнице.
По умолчанию включены epoll/eventfd/signalfd/timerfd/select при использовании RT-Smart.
Убраны готовые версии.
Исправлен баг setitimer, улучшена поддержка FUTEX.
Добавлена поддержка терминальной подсистемы RT-Smart (#8672).
Другие обновления: ssh, sftp, weston, vim...
Выпущена версия RT-Thread v5.0.2
Изменения в журнале с момента выпуска v5.0.1
Ядро
- include/rtdef.h:
- исправлены две проблемы с atomic volatile в bsp/simulator, скомпилированном в VS2019;
- добавлен макрос RT_USING_LIBC_ISO_ONLY;
- поддерживается POSIX-совместимый errno.
- src/kservice.c:
- улучшена совместимость функции rt_strerror.
Поддерживается управление идентификатором устройства DM; поддерживается приём нескольких потоков одного и того же события одновременно.
Больше не используется RT_DEBUG_LOG в rtdebug.h.
Приведены в порядок макросы отладки и добавлен RT DEBUGING CONTEXT.
Исправлена блокировка приёма сообщений в режиме пользователя MQ.
В интерфейсах POSIX добавлена поддержка приоритета очередей сообщений.
Удалена рекурсия в мьютексе; удалены макросы RT_DEBUG_xxx.
Реализована слабая функция по умолчанию для rt_hw_cpu_shutdown.
Компоненты
-
drivers:
-
sensor: исправлена ошибка в Sensor-V1, где тип возврата был непоследовательным; повторно реализована структура датчика как Sensor-V2.
-
fdt: добавлен макрос поиска дочернего узла устройства.
-
tty: исправлена ошибка переключения приложения переднего плана; поддерживаются команды TCGETA/TCSETAF/TCSETAW/TCSETA.
-
serial: исправлена проблема, из-за которой последовательный порт иногда отправлял возврат каретки несколько раз.
- Поддерживается основной API для dd2.0.
-
i2c: оптимизирован формат интерфейса управления для добавления доступных команд.
-
rtc: реконфигурируемая структура часов; исправлена ошибка, которая вызывала тревогу однократно и многократно использовала таймер, который не запускался.
-
hwtimer: переполнение недействительно в режиме oneshot.
-
core: пересмотрены макросы файлов заголовков.
-
wlan: исправлены некоторые переменные, которые не использовались при сборке.
- Файлы заголовков ядра перемещены в путь: include/drivers/core.
-
lwp:
- Выполнен elf с добавленной проверкой разрешений исполняемого файла.
- Поддерживаются дополнительные функции сигналов из IEEE Std 1003.1-2017.
- Исправлена возможная утечка памяти; исправлена настройка фальшивого LWP в sys_execve; исправлена ошибка адреса сокета; исправлено исключение функции waitpid.
- Исправлены ошибки при уничтожении LWP; исправлен exit(2) и добавлен exit_group(2); исправлен rt_memcpy на lwp_memcpy в источнике smart; исправлен cmd_kill (Fix cmd_kill).
- Добавлены fops для dfs_v2 и исправлено предупреждение для eventfd_write и eventfd_read после изменений dfs_v1.
- Кумулятивные обновления lwip и lwp.
-
libc:
- Обновлён режим выделения идентификатора таймера libc.
- Добавлен signalfd для системного вызова, добавлен eventfd для системного вызова.
- Реализована облегчённая конфигурация часового пояса.
- Переименован libc.c в posix/stdio.c.
- Оптимизирован код epoll для удаления ограничений на дескрипторы.
- Адаптирован rt_channel, увеличена общность некоторых функций rt_channel на dfs v2, стандартизирован signalfd.
-
dfs:
- Исправлены ошибки использования переменных в dfs elm.c.
- Подключена пара POSIX mqueue к файловой системе fd.
- Изменена некоторая функция. Прототипы структуры dfs_file_ops и объявления функций.
- Исправлена ошибка fcntl(F_SETFL), а также изменён код ошибки при неудачном открытии файла.
- Комплексное исправление изменений dfs, включая принудительное удаление и изменения pread/pwrite.
- В dfs v2 добавлена функция cromfs.
Утилиты
- Поддержка ulog_async_output_enabled, поддержка API adt для DM.
- Удалено zmodem.
MM
- Улучшен вывод list_page.
- Добавлен API unmap page.
Net
-
sal/socket: исправлена ошибка BUG, при которой вызов интерфейса closesocket вызывал утверждения при включённом RT_DEBUG; устранено дублирование free в выделенном буфере.
-
Sal: исправлены проблемы компиляции IPv4 и v6.
Ktime
- Добавлено RT_USING_KTIME в сборку Kconfig.
- Исправлено несколько ошибок с ktime.
- Оптимизирована производительность высокоточного таймера, удалена бесполезная функция.
- Изменён путь Ktime: components/drivers/ktime.
Sdio
- Включён внутренний кэш eMMC для ускорения передачи.
Finsh
- Добавлена функция автозаполнения msh.
Драйверы устройств
- Подготовка к версии 2.0 драйвера устройства.
Libcpu
-
Aarch64: исправлен сбой привязки ядра по умолчанию на GICv2; исправлен сбой запуска SMP aarch64; поддерживается аппаратная атомарность; исправлено хранение FPU в стеке и добавлено Q16 ~ Q31; исправлен тип ops типа HW atomic_t с dword на qword; поддерживаются общедоступные сценарии компоновщика; изменено приоритетное ранжирование обратной трассировки и дампа ядра aarch64; исправлена проблема, из-за которой AARCH64 Qemu не компилировался при отключённом SMP.
-
Arm: исправлены предупреждения IAR о компиляции: функция "__LDREX" объявлена неявно; модифицирован start_gcc.S; исправлено состояние гонки с ldrex, strex; исправлена циклическая ссылка в заголовочном файле.
-
Arc: исправлена ошибка переключения потоков в архитектуре arc.
-
Sim: исправлена проблема с несогласованными определениями функций.
- Добавлены определения макросов ARCH_ARM_CORTEX_M23.
Инструменты
- Исправлено имя проекта .uvoptx/uvopt.
- Поддерживается Env для оболочки finsh.
- Удалён параметр --dist-strip.
- Скорректировано сообщение приглашения.
Действие
- Добавлен CI для компиляции большего количества драйверов для изменённого BSP, добавлены pkgs-test; добавлен ручной запуск и проверка BSP; добавлено больше настроек для ручного запуска.
- Добавлены ручные триггеры для всех STM32, добавлены SCons exp_STM32.
- Проверен репозиторий на предмет самоиспользования; добавлен запрос на проверку владельца кода; добавлены пути игнорирования для форматирования и статической проверки.
- Исправлен путь, который нельзя свернуть в YAML; исправлен флаг dist.
- Использован скрипт установки env.
Документы
- Добавлен Кодекс поведения RT-Thread; добавлен документ readme ktime; добавлен документ env vscode.
- Исправлена опечатка в документации.
- Обновлён документ env, обновлён документ qemu для Windows; обновлён quick_start_qemu_windows.
Utest
- Добавление volatile решает проблему сбоя теста при высоком уровне оптимизации.
- Размер стека потока thread_tc изменён, чтобы избежать аномалий стека, вызванных 64-битными машинами; размер стека потока изменён, чтобы избежать аномалий стека.
- Добавлена зависимость сигнала в сигнальном тесте.
BSP
Userapps
- Поддержка обновлений пользовательского режима в MicroPython, sdl2, lua, ffmpeg.
Выпущено RT-Thread v5.0.1
Изменения в журнале с момента выпуска v5.0.0
Kernel
- Добавить обнаружение stdc atomic. (#7536)
- Добавить API rt_hw_interrupt_is_disabled. (#7706)
- Добавить API для получения имени объекта и имени потока (#7507)
- Добавить AMP rt_hw_cpu_id и RT_USING_SMP Macro decoupling,rt_hw_ipi_send зависит от RT_USING_AMP
- Исправить ошибку сравнения флагов device_open. (#7512)
- Исправить переменную rt_err в timer.c в iar
- Исправить и добавить проверку нулевого указателя
- Избежать повторных вызовов интерфейса device_open (#7476)
- Изменить rt_thread изменить структуру на явное наследование rt_object (#7131)
Компоненты
Драйверы устройств
- Исправить таймер процессора в многопоточности (#7222),предупреждение о компиляции dtb.
- Оптимизировать скорость передачи spi и устранить некоторые проблемы
- Модифицировать тип данных канала АЦП и добавить универсальный номер канала идентификации встроенного канала Модифицировать текущую структуру датчика обратно до версии 1 и сделать её независимой от версии 2 (#7698)
- Модифицировать изменение драйвера tty на устройство и исправить проблемы с потерей данных из-за множественных вызовов scanfs.
Libcpu
- Добавить отладочную информацию для GDB.
— ARM: оптимизировать API в режиме прерывания, исправить atomic_arm.c.
— AArch64: оптимизировать API в режиме прерывания, отделить процесс запуска, добавить режим без дерева устройств в PSCI, исправить операцию аннулирования кэша (#7363).
— RISC-V: добавить ioremap для c906.
— MIPS: исправить неправильное использование переменных.
Инструменты
- Добавить функцию фильтрации файлов, которые не требуют проверки с помощью cppcheck (#7499).
- Добавить аргументы
--add-rtconfig
для scons при необходимости добавления определений макросов во время сборки.
- Поддерживать llvm-arm 16.0; добавить рабочие процессы llvm-arm.
- Исправить невозможность выбора C99 и GNU в Keil-MDK.
- Исправить проблему с deque для Env['CPPDEFINES'] (#7541).
- Переместить file_check.py в папку ci.
Действие
- Рефакторинг и оптимизация процесса выполнения CI, добавление ручных триггеров и проверок cppcheck для дистрибутива scons.
Utest
- Добавить раздел UtestTcTab доступа под MSC и изменить доступ под GCC.
- Исправить strtol, расчёт размера, проблему цикла тестового случая потока на высоких уровнях оптимизации, несоответствие открытия и закрытия файла.
BSP
-
Исправить несоответствующие типы функций в rt_pin_ops для всех drv_gpio.c.
-
Добавить новые BSP:
- APM32: APM32E103ZE-EvalBoard, APM32E103ZE-TinyBoard, APM32F030R8-Miniboard.
- AT32: AT32F423-Start.
- Essemi: ES32VF2264.
- IMXRT: IMXRT1061-Forlinx-OK1061-S.
- Renesas: RA6M3-HMI-Board.
- STM32: STM32F334-ST-Nucleo, STM32L496-ST-Discovery.
- Yichip: YC3122-POS.
- Bouffalo Lab: BL808/D0.
-
Добавить поддержку RTduino для некоторых BSP.
-
Обновить некоторые драйверы BSP для STM32: таймер, UART v2, ШИМ, АЦП.
-
Обновить BSP:
- Добавить kconfig для некоторых BSP без kconfig.
- Исправить несоответствующие типы функций в rt_pin_ops для всех drv_gpio.c (#7457).
- Для STM32: исправлены некоторые проблемы, добавлены и улучшены некоторые драйверы.
- Для Renesas: исправлены некоторые проблемы, добавлены и улучшены некоторые драйверы.
- Infineon: исправлена проблема с drv_gpio и SPI, добавлен драйвер PSOC6 для sdcard (#7522), обновлена READ.me с использованием пути относительно (#7500), исправлена проблема с выбором чипа SPI.
- Симулятор: синхронизация с основным драйвером Win32 (#7165), исправление поддержки Linux.
- AIRM2M/AIR32F103: обновление AIR32F10xLib (#7472).
- Allwinner: обновление библиотек allwinner, объектных файлов (#7482).
- APM32: добавлен драйвер CAN и поддержка драйвера rtt для APM32e1/s1 (#7170).
- At32: добавлена поддержка драйвера DAC, улучшение drv_usart_v2 (#7210), исправлено.
- Bouffalo Lab: добавлены драйверы sdcard SPI, drv_i2c, drv_soft_i2c hwtimer и flash, обновлены библиотеки и скрипты bouffalo lab, драйвер хоста sdio, uart pin и bl808-d0 ioremap mode.
- Essemi: обновлённые функции и драйверы некоторых библиотек.
- Fujitsu: поддержка BSP в меню конфигурации.
- GD32: Добавлен драйвер ШИМ для GD32F303.
- IMXRT: Поддержка Keil AC6, добавлены файлы сценариев компоновки, улучшена поддержка SPI, улучшена документация.
- LPC4088: увеличена поддержка среды IAR (#7611).
- LPC55SXX: обновлен проект по умолчанию для Keil, обновлены drv_soft_i2c drv_soft_spi drv_adc drv_wdt, добавлена адаптация LVGL drv_lcd и drv_touch.
- Raspberry Pico: добавлены drv_soft_spi, drv_adc, drv_wdt, drv_soft_i2c.
- RK3568: поддержка PSCI, режим AMP.
Userapps
- Использование xmake для создания системы, заменяющей оригинальные scons.
- Встроенная инструментальная цепочка, zlib и другое программное обеспечение.
- Возможность автоматического создания образов, таких как ext4 и fat.
- Поддержка нескольких архитектур, таких как ARM, aarch64, riscv64.
- Добавление встроенной среды выполнения QEMU.
Выпущена версия RT-Thread 5.0.0
Изменения в журнале с момента выпуска версии 4.1.1
Ядро
- Добавлены функции RT-Thread Smart, поддержка приложений пользовательского режима.
- Добавлена атомарная функция.
- Добавлена функция вложенных мьютексов.
- Добавлена структура данных rt_ssize_t.
- Добавлено статическое имя для rt_object (#6422).
- Принятие новой спецификации определения версии макроса: https://semver.org.
- Разделение scheduler.c (#7103).
- Исправлена проблема оптимизации Oz компилятора AC6 в memheap.
- Исправлен rt_memset для независимости от размера слова.
- Изменение RT_ALIGN_SIZE по умолчанию на 8.
Компоненты
-
Добавлены FDT (Flattened Device Tree), TMPFS, CRomFS.
-
Libc: добавлено. Поддержка musl libc.
-
Улучшение поддержки Posix.
-
LWP:
- добавить дополнительную поддержку системных вызовов;
- добавить функцию mm (уровень управления виртуальной памятью);
- улучшить точность часов.
-
Сеть: добавить функцию AF_UNIX.
-
Драйверы устройств:
- улучшение работы с устройствами: датчики, SPI, I2C, последовательный порт, CAN, USB, CPU_TIME, SDIO, PWM и т. д.
BSP
- Добавить поддержку RT-Thread Smart для некоторых BSP: D1/D1s, Raspberry, QEMU-VEXPRESS-A9, QEMU-VIRT64-AARCH64, QEMU-VIRT64-RISCV.
- Добавить файл readme.md компании в каталог bsp.
- Исправить использование RT_ERROR, RT_EFULL, RT_ENOMEM, RT_EEMPTY и т.д.
- Добавить новые BSP:
- Bouffalo_Lab: BL60X, BL70X, BL61X, BL808;
- Infineon: 062S2, 062S3-4343W, 062S4, 062-WiFi-BT, 062-BLE;
- Nuvoton: Numaker-IoT-M467, Numaker-M467HJ, Numaker-HMI-MA35D1;
- NXP: LPC55S16, LPC55S36, LPC55S06, LPC5528, LPC55S28;
- nRF5XXX: nRF5340;
- GD32: GD32470Z-LCKF, GD32303C-START;
- APM32: APM32F030R8-MINIBOARD, APM32F051R8-EVALBOARD, APM32F091VC-MINIBOARD, APM32F103VB-MINIBOARD, APM32F107VC-EVALBOARD, APM32F407ZG-EVALBOARD, APM32F072VB-MINIBOARD;
- N32: N32G43XCL-STB, N32G457QEL-STB, N32G45XCL-STB, N32G45XML-STB, N32G45XR, N32G45XV, N32140XCL-STB, N321436_EVB, N32143XML-STB, N32143XR, N32WB45XL-EVB, N32G4FRML-STB;
- MM32: MM32F3270-100ASK-PITAYA;
- AT32: AT32F421-START, AT32F425-START;
- STM32: STM32F723-ST-DISCO;
- Phytium: aarch32, aarch64;
- Другие: Core-V-CV32E40P, AIR32F103, YS-F1PRO и т. д.
- Обновить некоторые драйверы BSP для STM32: таймер, ШИМ, UART V2, CAN и т. д.
- Обновить BSP:
- QEMU-VEXPRESS-A9: отображать номер версии QEMU при запуске QEMU.
- TMS320F28379D: исправить проблему запуска, реализовать драйвер ШИМ.
- Симулятор: исправить предупреждения компиляции симулятора, исправить ошибки компиляции.
- Raspberry-Pico: добавить SMP.
- Synopsys: исправить обратные вызовы таймера, исправить синтаксис печати, исправить псевдоним GNU toolchain RTT_CC, использовать RTT_EXEC_PATH для подстановки местоположения инструментальной цепочки.
- TI/C28X: добавить поддержку, чтобы не отключать глобальные прерывания в контексте переключения для включения нулевых задержек ISR для критических прерываний, добавить GPIO & ШИМ & АЦП, обновить rt_vsnprintf для соответствия с процессорами TI C28x, добавить поддержку создания .project на основе scons.
- STM32: обновить все проекты BSP.
- Renesas: добавить функцию segger rtt, добавить поддержку LVGL для TFT-LCD, добавить RA6M4-CPK LVGL для поддержки SPI-LCD и обновить функцию rt_spi_bus_attach_device_cspin, добавить описание подключения контактов TFT-LCD и исправить некоторые ошибки и т. д.
- Infineon: добавить поддержку capsense, добавить документацию Infineon и изменить структуру файла, обновить драйвер SPI, добавить демонстрацию драйвера слайдера, исправить проблему CS SPI и т. д.
- NuVoton: изменить RT_WEAK на rt_weak, исправить проблемы сборки NuVoton и т. д.
- NXP: IMXRT1170 исправить USB, исправить драйвер flexcan, добавить поддержку SDIO. LPC55S69 обновить драйвер PWM. LPC55SXX исправить и восстановить драйвер I2C, добавить драйверы I2S и WM8904, обновить драйверы SPI и PWM и т. д.
- nRF5xxx: добавить драйвер SPI TWI для nRF5340, исправить Kconfig nRF52832 и т. д.
- GD32: исправить ошибку в драйвере SPI.
- APM32: исправить ошибки сборки в файле запуска apm32f0/apm32f1 gcc и ошибку в apm32 drv_eth.c, добавить поддержку серии MCU apm32 F0, добавить драйверы rtt sdio/flash/sdram и т. д.
- AT32: исправлены ошибки компиляции usb-драйвера, обновлены для включения файла позиции и добавления макросов, оптимизирован код драйвера emac и usart, добавлена поддержка usb-драйверов и т. д.
- ESP32: ESP32_C3 исправить ошибки/предупреждения компиляции, перейти на пакет ESP-IDF, добавить драйверы I2C. Поддержка ESP32 применяет патч к локальному IDF и т. д.
- CH32: добавить rt_hw_context_switch_interrupt. CH32V307 добавить драйверы uart/spi/adc/gpio/wdt/dac/can/pwm, обновить readme и т. д.
Libcpu
- ARM: Cortex-A — отменить инициализацию безопасности MMU, Cortex-M7 — изменить тип возвращаемого значения функции rt_hw_cpu_dcache_ops на rt_uint32_t и т. д.
- RISC-V: поддерживать память без кэширования, добавить функцию rt_backtrace и т. д.
- AARCH64: добавить функцию rt_backtrace, остановить, когда страница не свободна.
Инструменты
- Усовершенствованная функция ci.
- Добавьте несколько команд scons: scons --exec-path=xxx, scons --exec-prefix=, scons --dist --target=xxx, scons --strict, scons --dist --project-path=xxxx и т. д. Добавить значение по умолчанию 64 бита для размера стека.
Установить HZ по умолчанию равным 1000.
Улучшить rt_kprintf для поддержки типа «long long».
Использовать RT_KSERVICE_USING_STDLIB_MEMXXX для замены RT_KSERVICE_USING_STDLIB_MEMSET и RT_KSERVICE_USING_STDLIB_MEMCP.
Открыть по умолчанию RT_KSERVICE_USING_STDLIB.
IPC:
- добавить описания для параметров времени ожидания rt_mq_recv и rt_sem_take;
- исправить имя параметра.
Включить по умолчанию RT_DEBUG_DEVICE и переместить слабый rt_hw_dealy_us в kservice.c.
Обновить скрипты компоновщика Cortex-A для новой версии GCC, удалить инициализацию глобального конструктора C++, этот метод не используется в GCC4.7 и более поздних версиях.
Убрать ключевое слово register.
Переименовать _rt_scheduler_stack_check в _scheduler_stack_check.
Обновить комментарии для rt_thread_suspend.
Исправить комментарий для rt_container_of.
Исправить ошибку таймера.
Удалить исполняемое разрешение thread.c.
Удалить функцию strnlen.
Добавить проверку NULL для rt_free и rt_free_align.
Поддерживать perf_counter.
Ужесточить размер перед проверкой с помощью mem_size_aligned.
Добавить строковую информацию об ошибке.
Устранить проблему переопределения msh команды finsh_set_prompt.
Унифицировать тип данных и определение макросов встроенной и стандартной библиотеки LIBC ядра.
Добавить макрос RT_VERSION_CHECK для реализации проверки версии.
Исправить стиль функции «rt_hw_us_delay».
Исправить логику временного интервала для schedule.c.
Компоненты:
-
driver:
- детализировать классификацию типов устройств;
- обновить определение типа устройства и определение команды;
- добавить ioctl F_SETFL cmd;
- устранить рекурсию;
- исправить некоторые предупреждения компиляции.
-
driver/serial_v2:
- добавить поддержку termios;
- добавить поддержку аппаратного управления потоком;
- исправить ошибку модели RT_SERIAL_TX_BLOCKING;
- добавить rt_assert для serial_v2.
-
driver/sensor:
- добавить тип датчика артериального давления;
- добавить RT_SENSOR_VENDOR_MELEXIS в sensor.h;
- добавить RT_SENSOR_VENDOR_MELEXIS в sensor_cmd.c.
-
driver/spi:
- удалить _spi_bus_device_control;
- исправить расширение символа ошибки rt_qspi_send;
- решить проблему отчёта № 6008 rt_spi_sendrecv8.
-
driver/rtc:
- настроить входные параметры функции ops;
- оптимизировать эффективность выполнения;
- добавить функции получения и установки временной метки;
- улучшить команду даты;
- проверить параметр «время»;
- использовать gmtime_r вместо gmtime.
-
driver/alarm:
- исправить ошибку недельного будильника;
- сделать вывод будильника компактным;
- исправить опечатку.
-
driver/inputcapture:
- добавить DBG_TAG для rt_inputcapure.c.
-
driver/hwtimer:
- добавить защиту от прерываний для функции hwtimer_isr.
-
driver/hwcrypto:
- оптимизировать использование памяти.
-
driver/sdio:
- поддерживать режим DDR;
- изменить проблему смещения адреса для чтения и записи sdio.
-
driver/dac:
- исправить возвращаемое значение функции rt_dac_write;
- добавить метод получения разрешения.
-
driver/adc:
- добавить интерфейс для получения разрешения выборки;
- добавить команду преобразования напряжения;
- реализовать adc_get_vref.
-
driver/pwm:
- очистить ненужный код;
- добавить функцию pwm.
-
driver/usb:
- исправить ошибки сборки;
- исправить задержку при управлении передачами;
- добавить интерфейс для получения информации о состоянии подключения виртуального uart;
- исправить проблемы usbhost hid.
-
driver/wlan:
- модифицировать структуру wlan.
-
driver/phy:
- исправить конфликты PHY_FULL_DUPLEX.
-
driver/can:
- добавить поддержку CANFD и исправить опечатки;
- исправить бесконечный цикл can при отправке ошибки драйвером can.
-
driver/hwcrypto:
- исправить определение возвращаемого значения функции.
-
driver/pin:
- добавить команды управления выводом в MSH.
-
driver/touch:
- отрегулировать файл заголовка для touch.h.
-
libc:
- исправить предупреждения и ошибки компиляции C/C++;
- улучшить sconscript;
- исправить проблему sys/select.h;
- исправить то, что некоторые функции не могут быть найдены в unistd.h;
- убрать определения, которые «posix/io» не используются;
- исправить временную ошибку;
- оптимизировать логику обработки на armcc/armclang;
- исправить ошибку компилятора на iar;
- исправить dlmodule compile 'SEEK_END' undeclared eror;
- логика переработки ресурсов pthread;
- исправить функцию pthread_barrier_init, которая возвращает «EINVAL», если «count» равен нулю;
- разрешить конфликты между типами данных libc и rtdef;
- удалить strdup из... rtthread.h
-
Исправить clock_gettime для CLOCK_CPUTIME_ID.
-
Решить проблему с libc/timer, из-за которой тики операционной системы могут быть рассчитаны неправильно из-за неинициализированной локальной переменной.
-
Реализовать стандартные функции расширения C.
-
Исправить ошибку возврата.
-
Модифицировать ошибку компилятора в IAR.
-
Использовать атомарные операции для защиты условной переменной pthread.
-
Устранить утечку памяти при нулевом значении семафора posix.
-
Исправить проблему, когда функция difftime() компилируется с ошибкой в среде IAR.
-
Функция pthread_mutex_destroy не работает.
-
Риск для функции exit() при открытой поддержке pthread.
-
Дополнить случай, когда exit() не была реализована.
-
Попытаться исправить проблему с функциями «fflush» в armlibc.
-
Заменить __CLANG_ARM на clang.
-
Решить ошибку компиляции для _sys_ensure.
ulog
- Добавить файловый бэкенд.
- Оптимизировать ненужное обновление.
sfud
- Поддержка NM25Q128EVB, GD25Q32C, SST25VF080B, W25Q32BV, W25X16AV, W25X40CL.
- Изменить способ обработки ситуации, когда блоки защищены флэш-памятью.
- Привести в порядок макросы.
sal
- Добавить черновик для стыковки winsock.
- Переупорядочить зависимости sal.
- Переименовать sal.h в sal_low_lvl.h.
at
- Использовать указатель на освобождённую память.
- Внедрить информацию о «AT server».
lwip
- Поддерживать симулятор Windows.
- Добавить команду списка.
finish
- Исправить сбой list_device.
- Повысить надёжность системы.
- Добавить информацию об имеющейся памяти для бесплатной команды.
- Добавить алгоритм бинарного поиска.
- Добавить новые функции для получения длины команды finish.
fal
- Поддержать API fal для C++.
- Изменить PKG_USING_FAL на RT_USING_FAL.
utest
- Добавить базовый тестовый пример cpp11.
- Улучшить силу теста cpp.
- Добавить структуру теста posix.
- Добавить тест временного интервала.
ymodem
- Перенести коды ошибок в rym_code, чтобы отключить предупреждения.
BSP
-
Внимание, список новых добавленных BSP:
- AT32F413, AT32F415-старт, AT32F435-старт, AT32F437-старт.
- Cypress-PSOC6-CY8CProto-4343W.
- ESP32_C3.
- GD32VF103R-старт, GD32VF103V-eval.
- HC32F4A0.
- IMXRT1021-NXP-EVM, IMXRT1170-NXP-EVM.
- Microchip, SAMC21, SAME54, SAME70, SAML10.
- N32G45XV-STB.
- CH32V103R-EVT, CH569W-EVT, CH32F103C8, CH32F203R-EVT.
- Rockchip-RK3568.
- STM32F103-100ASK-Mini, STM32F103-100ASK-Pro, STM32WLE5-Yizhilian-LM402.
-
LPC55SXX:
- Исправить проблему с dist, которая не может указать каталог.
- Исправить ошибки сборки.
-
STM32:
- Использовать слабые ссылки для обработки макроса RTDINO_xxxx.
- Добавить новый BSP для STM32WLE5JCI6.
- Исправить некоторые ошибки CAN и PWM.
- Выбрать входной тактовый сигнал SPI на основе экземпляров SPI.
- Исправить конфликт фильтра CAN.
- Добавить RTC для OpenMV.
- Добавить ov5640, DCMI, I2C для OpenMV.
- Обновить конфигурацию ov5640 для OpenMV.
- Обновите Arduino.
- Поддержка STM32F072 Arduino I2C и обновление README.
- Судить экземпляры SPI перед работой.
- Исправление проблемы ввода-вывода SDIO и UART6 (TX) DMA.
- Исправление проблемы при использовании uart DMA для приёма.
- Удалить аппаратное обеспечение NSS.
- Включить генератор случайных чисел.
- Избежать конфликта между CMSIS5 и BSP CMSIS.
- Добавить поддержку TIM7.
- F072, F401 поддерживают аппаратные таймеры TIM7/TIM11.
- L475, удалить бессмысленный заголовочный файл.
- STM32F407, STM32F469 оптимизировать структуру папок lvgl для симулятора.
- STM32F746, отменить выбор LWIP и DFS по умолчанию.
- Удалить папки CMSIS/RTOS.
- Добавить RTDUINO_NO_SETUP_LOOP.
- Добавить F_CPU для указания частоты процессора.
- Поддержите библиотеку MsTimer2.
- Добавьте правильное описание команд для ADC, PWM.
- Добавьте поддержку серии STM32L0.
- Переместите заголовочные файлы CMSIS в общую папку.
- Добавьте bootloader.bin, добавьте описание загрузчика в README.md для STM32H750-ART-PI.
- Измените содержимое алгоритмов флэш-памяти в README.md для STM32H750-ART-PI.
- Исправьте имя устройства консоли STM32F767-ST-Nucleo.
- Создайте два новых BSP для плат 100ASK STM32F103.
- Добавьте функцию STM32L496ZG, добавьте встроенное флэш-устройство.
- Измените название BSP 100ASK на соответствие другим BSP и зафиксируйте ошибку для drv_adc.c.
- Добавьте H7. Поддержка таймера:
-
реализовать soft SPI;
-
использовать perf_counter вместо hwtimer;
-
поддержка распиновки беспроводного модуля для STM32L475;
-
добавить адаптацию LVGL сенсорного экрана xpt2046 для STM32F407-ATK;
-
стыковка LVGL для STM32F469-ST-DISCO BSP с использованием сенсорного чипа FT6336;
-
адаптация функции будильника RTC;
-
оптимизация функций ШИМ;
-
адаптировать пакет RTduino для STM32F469-ST-DISCO BSP;
-
стыковка драйвера LVGL с использованием пакета для STM32F469-ST-DISCO BSP;
-
адаптировать LVGL для использования модели сенсорного экрана FT6206 для STM32F469-ST-DISCO BSP.
-
WCH:*
-
добавить BSP для CH32V103R-EVT;
-
добавить порт BSP для платы WCH CH569W-R0-1v0 EVT;
-
CH569w-evt: добавить драйвер master SPI, протестирован SPI0;
-
добавить драйвер PWM и исправить ошибку SPI_XFER.
-
GD32:*
-
Добавить BSP для GD32450i-EVAL;
-
завершить определение устройства контактов;
-
драйвер ADC Firx;
-
исправлена ошибка компиляции в rtc: «pmu_backup_write_enable» не найдена;
-
оптимизировать архитектуру BSP GD32;
-
исправить ошибку, связанную с потерей таблицы векторов прерываний, вызывающую системное исключение;
-
добавить драйвер SDIO;
-
исправить номер контакта в drv_gpio.c;
-
исправить ошибку компиляции при использовании RTC в GD32 F1~F4;
-
исправить определённую ошибку UART I/O.
-
Симулятор:*
-
улучшить библиотеку времени libc и симулятор MSVC;
-
решить проблему невозможности подключения SD-карты к симулятору;
-
обновить SDL2.0 до 2.0.20;
-
удалить ненужные файлы отладки;
-
создать новый файл fcntl.h для VS;
-
оптимизировать структуру папок LVGL относительно симулятора;
-
избежать конфликтов между winsock.h и sys/time.h;
-
улучшить структуру Kconfig, добавив меню Onboard Peripheral Drivers;
-
включить сокет BSD по умолчанию;
-
добавить меню RTC;
-
очистить предупреждения компилятора под Windows;
-
оптимизировать логику монтирования SD;
-
удалить определённые вручную LV_DISP_DEF_REFR_PERIOD;
-
реализовать winsock на симуляторе Windows;
-
улучшить процесс инициализации;
-
синхронизировать драйвер win32 LVGL;
-
исправить некоторые предупреждения;
-
устранить проблему с невозможностью найти путь и вызвать сбой;
-
изменить «exit()» на «exit(1)».
-
QEMU:*
-
добавить параметр компилятора «-Werror» для qemu-vexpress-a9 и qemu-virt64-aarch64;
-
добавить краткое руководство по запуску QEMU на macOS;
-
chmod u+x сценарий оболочки для qemu-risc-virt64;
-
удалить определённые вручную LV_DISP_DEF_REFR_PERIOD;
-
переименовать qemu-riscv-virt64 в qemu-virt64-riscv;
-
добавить операцию перемонтирования, чтобы избежать сбоя dfs_mout для qemu-vexpress-a9;
-
не использовать sbi в m-режиме для qemu-virt64-riscv;
-
добавить дополнительные драйверы VirtIO для qemu-virt64-aarch64;
-
исправить размер выравнивания очереди VirtIO для qemu-virt64-aarch64;
-
улучшить readme QEMU;
-
обновить проект QEMU;
-
добавить драйверы VirtIO-Console и GPIO для qemu-virt64-aarch64.
-
Airm2m:*
-
исправить исключение для I2C.
-
N32G452XX:*
-
добавить SPI3;
-
избегать паузы системы при проверке тайм-аута;
-
добавить поддержку аппаратного CRC;
-
обновить информацию о драйвере «can».
-
Microchip:*
-
добавить поддержку серии микроконтроллеров SAM от Microchip;
-
добавить Ethernet, ADC, IIC поддержку;
-
обновить последовательный драйвер для samc21/same54/same70;
-
добавить серию SAML10.
-
NuVoton:*
-
отключить функцию TRNG в конфигурации по умолчанию;
-
обновить конфигурацию nuc980iot;
-
удалить определённые вручную LV_DISP_DEF_REFR_PERIOD.
-
AT32:*
-
добавить платы AT32F435_437;
-
обновить драйвер АЦП AT32F435_437;
-
добавить серии AT32F413 и AT32F415;
-
модифицировать структуру папок;
-
оптимизировать код для улучшения работы сети. Пропускная способность
-
NXP:
- rt1052 — добавить вход в RT-Thread studio.
- imxrt1060 — заменить встроенные периферийные драйверы и периферийные драйверы на плате в меню Kconfig.
- Подготовиться к поддержке squareline studio.
- Оптимизировать структуру папок lvgl для имитатора imxrt1060.
- Обеспечить поддержку NXP GUiGuider для imxrt1060.
- Поддерживать компилятор keil armclang.
- Поддержка тачпада.
- Добавить BSP для rt1170/rt1020.
- Обновить menuconfig для rt1170n.
- Реализовать стыковку API для rt_pin_get.
- Исправить сенсорную панель для imxrt1060-nxp-evk.
- Решить проблемы с загрузкой Qspi flash для mimxrt1170.
- Оптимизировать «sconsript» в папке «applications».
- Добавить контакт INT для сенсорного экрана в ioconfig.
- Во время тестирования GT911 не выходил из сброса, потому что контакт INT не мог быть установлен в низкое или высокое состояние.
- Обновите SDK для RT1170-EVK до версии 2.12.
- Устранить небольшую проблему, о которой сообщили в группе Slack для imxrt1060.
- Удалить специфическую поддержку squareline studio для imxrt1060.
- Обновить enet для rt1170.
- Устранить ошибку прерывания GPIO в drv_gpio.c.
- Сообщить о проблеме форматирования в группе Slack.
- Переместить драйвер phy в папку drivers.
- Добавить двойной сетевой интерфейс и драйвер для phy8211F.
- Добавить драйвер sdram для rt1170.
- Устранить ошибки компилятора между «rtc.c/rtc.h».
- Отформатировать файлы для rt1170.
-
Nuclei:
- добавить нулевой CCFLAGS для BSP Nuclei.
-
Renesas:
- добавить документацию BSP;
- добавить BSP RA2L1-CPK;
- обновить драйвер относительно флэш-памяти, GPIO и головного файла;
- представить введение в captouch;
- устранить ошибку в drv_wdt.c;
- добавить аппаратный драйвер I2C.
-
Essemi:
- обновить библиотеки es32f36xx;
- адаптировать es32f369x для RTduino;
- исправить ошибку I2C и отредактировать некоторые документы;
- удалить зависимости библиотек для функций rtduino.
-
Esp:
- добавить BSP esp32c3;
- добавить драйвер GPIO и readme.md для esp32c3;
- добавить Kconfig esp32c3;
- добавить ESP32 UART driver.
-
K210:
- использовать новые пакеты SDK;
- изменить структуру папок Kconfig.
-
HC32:
- добавить BSP серии HC32;
- добавить драйвер RTC;
- унифицировать управление таблицей векторов прерываний;
- пересмотреть файл конфигурации;
- добавить поддержку USART1/2/3 для hc32f460;
- добавить поддержку CAN;
- решить проблему, когда дескриптор для нескольких последовательных портов был перезаписан;
- добавить виртуальный драйвер IIC;
- добавить поддержку АЦП;
- исправить ошибки драйверов АЦП и CAN для HC32;
- добавить драйвер RTC для hc32f460;
- поддерживать компилятор MDK AC6;
- исправить сбой системы, если шина CAN находится в состоянии отключения шины;
- исправить проблему, при которой фильтр CAN бесполезен;
- исправить проблему с неработающим прерыванием ошибки;
- модифицировать предварительную компиляцию для драйверов UART и SPI;
- добавить информацию о драйвере таймера A;
- изменить RT_CONSOLE_DEVICE_NAME с «uart» на «uart1»;
- добавить файл запуска для apm32f4xx;
- добавить драйвер WDT.
-
Raspberry-Pico:
- оптимизировать структуру папок lvgl;
- исправить неточность системного тика.
-
Nuc980:
- исправить ошибку при перезапуске и получении прерываний, которые не обрабатываются.
-
Rockchip:
- добавить базовую поддержку rk2108.
-
NRF5x:
- добавить документ для разработки на rtt-studio.
-
Адаптировать lvgl 8.3.0.
-
N32:
- добавить N32 BSP;
- модифицировать драйверы I2C и RTC.
-
FM33LC026:
- добавить поддержку GPIO;
- обновить FM33LC0xx_FL_Driver до FL_xxx_v2.3.1.
-
APM32:
- добавить APM32F407IG-MiniBoard;
- добавить библиотеку F1xxx для APM32 для APM32F10x_SDK_V1.6;
- добавить библиотеку F4xxx для APM32 для APM32F4xx_SDK_V1.2.
-
Ifx:
- добавить плату Cypress CY8CKIT-062S2-43012;
- добавить устройство hwtimer.
-
Raspi3-32:
- исправить некоторые ошибки функции '__rt_ffs'.
-
Synwit:
-
TMS320F28379D:
- обновить .config: выбрать FINSH_USING_SYMTAB;
- исправить проблемы finsh с использованием таблицы символов.
CPU
- Arm:
- добавить инструкции DSB и ISB в конце rt_hw_context_switch_to;
- исправить предупреждение компиляции;
- добавить функцию установки исключений;
- оптимизировать ошибку компилятора;
- исправить ошибку armclang при включении LTO;
- исправить чистую ошибку rt_hw_cpu_dcache_ops.
- ARM/Cortex-M33:
- добавить Cortex M33;
- добавить макрос ARCH_ARM_CORTEX_SECURE, чтобы убедиться, что система rtos может работать в безопасном режиме процессора. arm/Cortex-R4
- Исправить «prefethc abort».
- Добавить RT_USING_CPU_FFS, чтобы избежать ошибки переопределения относительно "__rt_ffs()".
risc-v/virt64
- Исправить параметр для вызова handle_trap.
Документ
- Исправлена документация по ведению журнала в Руководстве по внесению вклада в проект.
- Обновлён английский стиль кодирования для более идиоматического использования.
- Пересмотр документа, исправление нескольких грамматических ошибок и редактирование для ясности.
- Дальнейшее редактирование документации для ясности.
- Уточнено описание лицензии.
- Исправлен файл doxygen.
- Дополнена информация об env document, добавлена информация о menuconfig -s.
- Обработаны исправления грамматики и формулировок в memory.md.
- Обновлено в документах at/adc/hwtimer/i2c/pin/rtc/sensor.
Инструменты
- Устранены ошибки обработки параметров командной строки.
- CI:
- обновлены действия с использованием python@v3.
- добавлен nxp check.
- обновлена проверка stm32 ci.
- ограничена организация rt-thread.
- Авторские права:
- улучшены авторские права для старых файлов.
- Scons:
- отсортирован путь к исходному файлу.
- Добавлен патч совместимости Python 3.
- rtconfig.CROSS_TOOL->rtconfig.PLATFORM.
- Разделено добавление аргументов командной строки.
- Поддерживается команда scons --target=xmake.
- Добавлена CMAKE_EXPORT_COMPILE_COMMANDS ON для cmake.
- добавлена новая опция для создания библиотеки.
- Readme.md: добавлены версии на немецком и испанском языках.
- обновлён readme для выбора языков.
- дополнен путь для scons env.
- обновлены библиотеки импорта для проекта Eclipse.
- решена проблема переупорядочения для «include path».
- разрешено задавать необязательный URL для пакетов через envvar.
- отформатирован код Python.
- удалён .sconsign.dblite при очистке scons.
Выпущена версия RT-Thread v4.1.0
Изменения в журнале с момента выпуска версии v4.1.0 Beta
Ядро
- В src/clock.c добавлен хук для rt_tick_increase.
- Исправлена ошибка инициализации потока при открытии RT_USING_MODULE.
- Устранена проблема, из-за которой все таймеры могли останавливаться.
- Удалено дублирование очистки до 0 в thread.c.
- Отменены изменения в семафоре.
- Исправлено предупреждение о 64-битной компиляции.
- В src/device.c добавлен RT_DEBUG_LOG.
Компоненты
- ulog:
- Оптимизирован код для улучшения читаемости.
- Удалена бесполезная функция объявления о localtime_r.
- Оптимизирована ULOG_OUTPUT_FLOAT, чтобы не использовать vsnprintf, предоставляемый инструментами цепочки компилятора.
- Решена проблема интерференции при включении временной метки ulog.
- Исправлена проблема LOG_HEX без вывода в асинхронном режиме.
- Драйверы:
- Разное:
- Изменено имя ошибки в dac.c.
- Удалён бесполезный заголовочный файл, чтобы избежать проблемы рекурсии.
- Добавлен заголовочный файл для предотвращения ошибки компилятора.
- Открытое использование RT_USING_POSIX_STDIO привело к сбою компиляции serial_v2.
- Добавлены драйверы имитационной шины SPI на основе драйверов шины SPI.
- Убрано предупреждение компилятора C99 о ipc/ringbuffer.c.
- Улучшена структура serial_v2.
- DFS:
- При использовании команды list_fd предлагается полный путь.
- Libc:
- POSIX:
- Добавлен включенный заголовочный файл.
- Добавлен заголовочный файл для предотвращения ошибки компилятора.
- Добавлено RT_USING_POSIX_SOCKET.
- исправлена опечатка.
- Net:
- Настроена структура папок.
- LWIP:
- Интегрирован слой портирования lwip.
- Интеграция и улучшение lwipopts.h.
- Добавление последней версии lwip.
- Utst:
- Зависимость RT_USING_UTESTCASES.
- Finsh:
- Удаление лишнего кода.
- Исправление ошибки finsh.
- Fal:
- Добавление компонента fal.
- Utilities:
- Настройка порядка макросов компилятора.
- Var_export:
- Замена алгоритма поиска и устранение некоторых проблем.
- Наведение порядка в именах папок и структуре Kconfig.
BSP и перенос процессора
-
Libcpu:
- aarch64:
- rt_hw_trap_irq получает irq вместо iar при использовании gicv2.
- Отключение irq/fiq при переключении потоков.
- Добавление поддержки gtimer frq set и stack align.
- Поддержка gicv3.
- mips:
- Исправлен адрес регистра сторожевого таймера в gs232.h.
- Модификация проблемы, которая не позволяет питать аппаратный сторожевой таймер.
- arm:
- Исправление ошибки компиляции syscall_iar.S на основе cortex-m33.
-
Essemi:
-
Nuvoton:
- Обновление конфигурационных файлов и устранение проблемы.
- Поддержка LVGL.
- Обновление драйверов и настройка проекта.
- форматирование кода.
-
Raspberry-Pico:
- добавление README.md Raspberry-Pico-LVGL.
-
Симулятор:
- оптимизация автоматической инициализации.
-
Qemu:
- Vexpress-a9:
- исправление опечатки в qemu.sh.
-
n32g452xx:
-
At91sam9260:
- добавлено. Мтднэнд драйвер для поддержки файловой системы «uffs»
-
at32:
- загрузить пакет прошивки библиотеки bsp версии 2.0;
- добавить ignore_format.yml.
-
gd32: оптимизировать UART.
-
Добавить Soft spi для gd32303e-eval.
-
ft32: изменить имя включаемых головных файлов.
-
apm32:
- apm32f103xe-minibroard:
- добавить проект и драйверы устройств;
- обновить название картинки в readme;
- исправить файлы запуска apm32f1.
-
stm32:
- добавить поддержку pwm6–pwm13;
- добавить qspi flash и sdio для openmv h7plus;
- модифицировать ошибку, из-за которой не работает пользовательская конфигурация CRC;
- stm32f469-st-disco: добавить readme на английском языке;
- stm32f072-st-nucleo:
- добавить поддержку arduino;
- поддержать pwm для arduino;
- stm32f407-atk-explorer: добавить слово идентификации платы;
- stm32l475-atk-pandora:
- обновить папку application/arduino;
- включить шину i2c4;
- исправить ошибку при использовании демо LCD;
- полностью поддержать аналоговый выход (PWM) и аналоговый вход (ADC);
- поддерживать подсветку с регулируемой яркостью;
- добавление зависимостей;
- stm32h750-art-pi: портировать LVGL на ART-Pi с Media-IO;
- stm32f769-st-disco: исправить неправильные CPPDEFINES и закрыть lwip;
- добавить stm32f7xx_hal_dsi.c при использовании LTDC/MIPI-DSI;
- stm32h743-openmv-h7plus: добавить usbcdc для openmv.
-
imxrt:
- imxrt1060-nxp-evk:
- добавить BSP для imxrt1060-evk;
- README_zh.md, led blink;
- устранить проблему с неработающим gcc.
-
vango:
- добавить bsp для v85xxp;
- перенести v85xx и v85xxp в подкаталог vango;
- удалить дубликаты файлов.
-
acm32f0x0-nucleo: добавить некоторые драйверы.
-
Удалить swm320-lq100 bsp.
-
Добавить ch579m bsp.
-
Добавить air105 bsp.
-
Добавить bsp серии RA.
-
Добавить bsp-ft32.
-
Перенести acm32f0x0-nucleo и acm32f4xx-nucleo в подкаталог acm32.
-
Перенести at91sam9260 и at91sam9g45 в подкаталог at91.
-
Перенести mb9xxx series в подкаталог fujitsu.
-
Перенести lsxx series в подкаталог loongson.
-
Добавить rockchip/rk3568 bsp.
Документация
Инструменты
-
Устранить проблему, когда компилятор кода после RT-Threadv4.0.3 выводит букву «b».
-
Использовать относительный путь для создания CMakefile.txt при использовании команды scons.
-
Разрешить пользователям устанавливать определённые сценарии ссылок.
-
Обновите шаблон для projcfg.ini в rt-studio.
-
keil.py различает LOCAL_CFLAGS/LOCAL_CXXFLAGS, улучшает контроль над файлами.
Выпущена бета-версия RT-Thread v4.1.0
Изменения в журнале с версии v4.0.4
Ядро
-
В rt_show_version обновить год.
-
Улучшить комментарии и проверку параметров.
-
[pm] украсить код.
-
Удалить RT_THREAD_BLOCK.
-
Удалить .init_priority.
-
Обновить примечания.
-
Удалить лишнюю точку с запятой.
-
Заменить все двойные пустые строки на одинарные пустые строки.
-
Некоторые __on_rt_xxxxx_hook из rtdef.h переместить в отдельные файлы c.
-
[kservice] добавить RT_KSERVICE_USING_STDLIB_MEMSET, RT_KSERVICE_USING_STDLIB_MEMCPY.
-
[memheap] исправить потенциальный риск для 64-битных систем.
-
Изменить Kconfig, добавить RT_HOOK_USING_FUNC_PTR.
-
Улучшение методов подключения.
-
Обратная совместимость с существующими методами подключения на основе указателей функций.
-
Использование RT_USING_HOOK в качестве переключателя включения/выключения.
-
Внедрение нового метода подключения с низкими накладными расходами на основе макросов.
-
[include/rtthread.h] Добавить объявления функций, чтобы избежать предупреждений компилятора.
-
ipc init/create добавить оценку флага.
-
Отрегулируйте RT_ASSERT и RT_DEBUG_NOT_IN_INTERRUPT, чтобы сохранить стиль кода.
-
Добавьте новый алгоритм для поиска наименьшего ненулевого бита байта.
-
Добавить слабое определение RT_KSERVICE_USING_TINY_FFS.
-
Упрощённая версия функции rt_ffs.
-
Добавить RT_WEAK для rt_vsnprintf.
-
Измените тип возвращаемого значения с signed int на int в соответствии со стандартами ISO C, чтобы предотвратить ошибки компилятора.
-
Исправьте rt_size_t как rt_uint32_t.
-
Cfg отменяет объявление rt_kprintf.
-
[kservice] добавьте комментарий к возвращаемому значению.
-
Модифицируйте тип rt_size_t.
-
[timer] Обновите код RT_TIMER_CTRL_GET_STATE в rt_timer_control.
-
Исправьте размер .bss в link.lds и установите spsel=1 в aarch64.
-
Удалите дублирующую работу между idle и thread_exit.
-
Когда используется управление памятью memheap, rT_malloc 0 возвращает RT_NULL, что согласуется с алгоритмами slab и small memory management.
-
Выровнять адрес, переданный по... rt_system_heap_init при использовании алгоритма управления памятью memheap
-
Установить rt_thread_timeout в частную функцию.
-
Добавить attribute(...) для rt_kprintf(), чтобы компилятор проверял параметры строки формата.
-
Возвращать ошибку потока при возобновлении по сигналу.
Компоненты
-
libc:
- Очистить папку POSIX/IO.
- Переместить libdl в папку posix.
- Добавить поддержку PSE51.
- Оптимизировать функцию nanosleep.
- Добавить RT_USING_POSIX_STDIO для решения проблем компиляции на платформе win32.
- Удалить getline.
- Создать папку «posix» и переместить в неё связанные файлы.
- Поместить getline в папку posix.
- Оптимизировать структуру posix в libc.
- Устранить суждения в коде, которые зависят от RT_LIBC_USING_FILEIO.
- Переместить файлы libc.c/.h в папку posix.
- Удалить функции gettid и другие, не соответствующие PSE51.
- Добавить макросы RT_USING_POSIX_SELECT, RT_USING_POSIX_POLL, RT_USING_POSIX_DELAY.
- Добавить задержку по умолчанию delay.c.
- Выбрать RT_USING_POSIX_STDIO вместо RT_LIBC_USING_FILEIO.
- Добавить файл readme.
- Вернуть kconfig pthread.
- Переместить mmap в папку src.
- Реализовать функции задержки как RT_USING_POSIX_DELAY.
- Исправить ошибку, вызванную двумя разными методами кодирования макросов в fcntl.h.
- Улучшить функции чтения и записи IAR и KEIL.
- При добавлении функций памяти добавить предупреждения об ошибках, когда HEAP не включён.
- Изменить некоторые RT_USING_POSIX на RT_USING_POSIX_DEVIO.
- Добавить RT_USING_POSIX_FS.
- Разделить posix на каталог Kconfig.
- Исправить ошибки _sys_read и _sys_write.
- Модифицировать time.h в sys/time.h.
- Добавить аннотацию к функции dataqueue.c.
- Решить проблемы с утечкой памяти и предупреждениями компилятора armclang Cpp11.
- Добавить файлы заголовков IPC.
- Создать папку mman.
-
drivers:
- Переименовать папку src в ipc.
- Оптимизировать скрипты для оценки компилятором.
- Добавить rt_work_urgent.
- Заменить параметр времени на тики, чтобы избежать неправильного толкования единицы измерения как мс.
- Улучшить комментарии.
- [sdio] исправить предупреждение компилятора и оптимизировать код.
- Переименовать rt_workqueue_critical_work в rt_workqueue_urgent_work.
- Исправить ошибку сборки sensor_cmd.c.
- Поддержка cputime 64bit.
- Обновить поддержку cputime_cortexm.c 64bit.
- Добавить IPC для POSIX и добавить канал для него.
- [components] обновить фреймворк.
- Добавить аннотацию функции waitqueue.c.
- Исправить предупреждение компилятора в cdc_vcom.c.
-
lwip:
- Улучшить поддержку lwip для 64-битной архитектуры.
- Удалить lwip 2.0.2.
- Исправить ioctl и определения сокетов lwip.
- Изменить аннотацию для sys_arch_mbox_tryfetch.
- Исправить возвращаемое значение для sys_arch_mbox_fetch в стеке lwip.
- Исправить dhcpd, не включая версию 2.0.3.
- Определить RT_USING_BIG_ENDIAN для долгосрочной версии.
- Команда ping с указанной netif в lwip-2.1.2.
- Исправить sys_arch.c.
- Разрешить конфликт между несколькими BYTE_ORDER(s).
- Исправить проблему неявного объявления для «lwip_ip4_route_src».
-
dfs:
- Перенести dfs_posix.h в legacy/dfs/dfs_posix.h.
- Перенести файлы dfs_posix, dfs_poll и dfs_select.c в папку posix.
- Удалить файлы dfs_select.h и dfs_poll.h.
- Обновить fatfs до последней версии.
- Сохранить файлы dfs_poll.h и dfs_select.h, добавить журнал предупреждений.
- Удалить RT_USING_LIBC из dfs_fs.h.
- Вернуть dfs обратно.
-
Shrink pThread to POSIX. Change DFS from POSIX to POSIX from DFS.
-
Отрегулировать зависимость SAL.
-
Внедрить устаревшую поддержку.
-
Изменить RT_USING_POSIX_STDIO на RT_USING_POSIX_DEVIO.
-
Добавить ограничения определения макроса к вызовам устройства finsh set.
-
shell:
- Обновить список команд list_timer.
- Обновить формат кода.
-
kservice:
- Оптимизировать RT_PRINTF_LONGLONG, уменьшить дублирование кода.
- Упростить RT_PRINTF_PRECISION.
- Исправить проблему сбоя rt_strlen в win32.
-
[kernel] Сортировка Kconfig.
-
[ulog] Добавить фильтр бэкэнда ulog.
-
[posix] Организовать категории ввода-вывода в соответствии с передовым программированием среды Unix.
-
Добавить функцию creat().
-
[Ymodem] тихие предупреждения.
-
Использовать rt_memcpy и rt_memset вместо memcpy и memset.
-
Исправлена ошибка AT-компонента в режиме CLI: команда ввода слишком длинная, что приводит к выходу массива за границы.
-
[example] Удалить RT_USING_TC.
-
Исправить утечку памяти armclang Cpp11 и проблемы с предупреждениями компиляции.
-
Улучшить и добавить комментарии в examples/network/, включая tcpserver.c.
BSP и перенос процессора
— Fix "rt_interrupt_dispatch" Undefined error
- Добавить портирование энкодера импульсов на imxrt1052.
libcpu
- Решить проблему смешивания табуляции и пробелов.
- [arm] Исправить ошибку синтаксиса набора инструкций thumb.
- [aarch64] Добавить поддержку smp.
- [nuclei] Исправить переключение контекста в nuclei.
- Исправить проблему с s-режимом.
- [t-head] Исправить ошибки rt_hw_interrupt_disable/rt_hw_interrupt_enable.
- Добавить ARCH_CPU_BIG_ENDIAN.
Добавить и обновить gd32 bsp
- gd32103c-eval.
- gd32105c-eval.
- gd32107c-eval.
- gd32303e-eval.
- gd32450z-eval.
- gd32105r-start.
- gd32205r-start.
- gd32305r-start.
Обновить n32g452xx
- Переустановить .config на основе настроек по умолчанию.
- Восстановить rtconfig.h на основе конфигурации по умолчанию.
- Изменить формат кода.
- Обновить init.
- Добавить поддержку rt_pin_get.
- Добавить драйвер can для n32g45x.
- Унифицировать определение заголовочных файлов. «GPIO_H__» заменить на «DRV_GPIO_H», «USART_H» — на «DRV_USART_H».
- В drv_pwm.c исправить значение переменной, чтобы оно соответствовало определению интерфейса RT-Thread.
- Добавить поддержку UART4/UART5.
- В drv_gpio.c заменить «N32F10X_PIN_NUMBERS» на «N32G45X_PIN_NUMBERS».
- Доработать драйвер АЦП и формат кода.
- Включить поддержку ble.
- Устранить проблемы с форматированием.
- Удалить ненужные комментарии.
- Добавить ввод gpio без подтягивающего резистора.
- Добавить проверку версии rtc.
- Использовать структуру прямого доступа at32 для n32g452xx.
Nuvoton
- Поддержка LVGLv81 RTT music demo для N9H30 и NUC980.
- Обновление драйверов.
- [N9H30/NUC980] Обновить драйвер SDH.
- Исправить функцию SDH_Set_clock.
- Скорректировать опции EMMC, SDH0 и SDH1 для N9H30.
- Решить проблемы с прерываниями IRQ.
- Обновить драйверы и конфигурации портирования.
[raspberry-pico] Добавить поддержку lvgl_8.1.0.
Симулятор
- Разрешить предупреждение о том, что опция «Gm» была отклонена и будет удалена в будущем выпуске.
- Очистить предупреждение под vs.
- Обновить проект.
gd32
- Отремонтировать startup_gd32f30x_cl.s.
- Удалить проблемный rtconfig.h.
- [console] Исправить ошибку при использовании устройства без определения RT_USING_DEVICE.
- Заменить __CLANG_ARM на clang.
Обновление essemi bsp
- es32f0654.
- es32f369x.
- es32f365x.
[nuclei] Изменить hbird_eval bsp на nuclei_fpga_eval.
[lpc55s69_nxp_evk]
- Исправить scons --dist.
- Добавить фиксированную версию gcc.
- Добавить ci machine.
Исправление ошибок в 'BSP /Copyright notice.md'.
nrf5x
- Добавить исправленный lds.
- Добавить драйвер hwtimer.
- Добавить конфигурацию hwtimer & tinyusb.
- Исправить ошибку драйвера i2c.
Удалить bsp nrf51822.
- Добавить tkm32f499 bsp и приложение flash_download.
- Удалить пустой rt_hw_us_delay.
- [at32] Оптимизировать алгоритм индекса вывода.
ra6m4
- Организовать конфигурацию проекта.
- Добавить драйверы DAC, ADC и SPI.
- Форматировать код в соответствии со стилем.
- Добавить документацию по драйверам Flash, SPI, Flash, ADC, DAC.
- Добавить драйвер PWM.
- Исправить неправильные макросы зависимостей в скриптах scons.
- Исправить ошибки в коде.
- Уточнить описание ошибок в документации.
MAX32660-EVK
- Обновить инструкцию по карте выводов.
- Добавить карту выводов MAX32660-EVK.
- drv_soft_i2c.c не было в библиотеках.
- Удалить drv_soft_i2c.c, поскольку он не используется.
bluetrum
- Добавить поддержку flash.
ra6m4-cpk
- Добавить поддержку сборки gcc.
stm32
-
Исправить соответствие драйвера USB STM32 версии библиотеки hal.
-
Добавить sdram для openmv в stm32h743-openmv-h7plus bsp.
-
Добавить tinyusb для драйвера stm32.
-
Добавить bsp для stm32g474-st-nucleo.
-
Добавить bsp для stm32u575-st-nucleo.
-
Добавить bsp для stm32l552ze-nucleo.
-
[gcc] Исправить стек 0, расширить стек до 0x400 (так же, как Keil IAR).
-
Изменить имя переменной p_tm на tm.
-
Добавить LOW_E для Error_Handler в drv_common.c.
-
Добавить i2c config для bsp stm32l496-st-nucleo.
-
Для серии STM32F4 настроить CAN в соответствии с различными частотами шины ABP1.
-
Улучшить SPI-драйвер STM32H7 с использованием DMA.
-
Добавить алгоритм загрузки ART-PI для BSP.
-
Добавить музыкальную демонстрацию lvgl для bsp stm32f469-st-disco.
-
Обновить с помощью dma2d, экран обновляется в среднем 25 кадров в секунду для bsp stm32f469-st-disco.
-
Добавить esp8266. Опция конфигурации захвата
-
Добавить SOC_SERIES_STM32G0 для использования «stm32_wdt.hiwdg.Init.Window = 0x00000FFF», иначе сторожевой таймер всегда сбрасывает систему.
-
Исправить проблему с флэш-памятью серии STM32L4, которая не стирается при первой загрузке программы после скачивания.
stm32l475-atk-pandora
- Определить контакты АЦП и ШИМ.
- Реализовать предварительную совместимость с Arduino.
- Добавить lcd_fill_array().
- Добавить lvgl demo.
- Включить SPI3-DMA2 для ЖК-дисплея.
- Улучшить kconfig платы.
- Решить проблему, когда скрипт sconscript в папке платы не продолжал сканирование подпапок.
- Усовершенствовать структуру sconscript.
- Добавить опцию быстрой сборки ESP8266, драйвер последовательного порта изменён с V2 на V1.
- Исправить предупреждения компилятора на платформе qemu-vexpress-a9 (-Wimplicit-function-declaration).
- [qemu-a9] добавить поддержку lvgl.
- [исправление] Сконфигурировать скорость передачи данных в соответствии с различными частотами APB1. Только для серии f4.
- Обновить Kconfig для qemu.
- Исправить ошибку записи драйвера GPIO на Raspi3.
- [ls1cdev] увеличить размер стека, чтобы избежать переполнения при загрузке.
- [rp6m4-cpk] Добавить новые драйверы и улучшить BSP.
Инструменты
-
CI
- Оптимизировать время срабатывания AutoTestCI.
- Добавить инструменты тестирования scons.
- Добавить CI для nrf5x.
- Использовать ссылку на GitHub для загрузки цепочки инструментов CI.
-
Исправить ошибку с отсутствующими скобками в eclipse.py.
-
Изменить ccflags на cflags, добавить LOCAL_CCFLAGS, LOCAL_CLFAGS, LOCAL_CXXFLAGS.
-
Устранить ошибку генерации файла .project.
-
Удалить неиспользуемый файл 1.txt.
-
Обновить buildbot.py.
-
Исправить добавление пустых списков и пустых строк.
-
Добавить функцию автоматического обновления rtconfig.h.
RT-Thread v4.0.4 выпущена
Изменения в журнале с версии v4.0.3
Ядро
- Обновить политику автоматической привязки memheap.
- Удалить функцию rt_thread_exit.
- Улучшить аннотации API и комментарии к коду.
- Стандартизировать внутренние имена функций.
- Добавить рецессивное определение RT_USING_ASM_MEMCPY в Kconfig.
- Добавить параметр RT_PRINTF_LONGLONG в Kconfig, по умолчанию не выбран.
- Очистить поддержку для RT_PRINTF_LONGLONG в kservice.c.
- Исправить поддержку RT_PRINTF_LONGLONG по умолчанию в 64-битном режиме.
- Решить проблему невозможности ответа FINSH на ввод через последовательный порт в многоядерном режиме.
- Оптимизировать комментарий для ipc.
- Настроить код для поддержки использования процессора.
- Отрегулировать структуру кода обработки исключений для поддержки функции обратной трассировки.
- Удалить функцию mutex RT_IPC_FLAG_FIFO.
- Удалить switch_to_sethook.
- Добавить ресурсы, освобождённые в режиме ожидания.
- Заменить defined(__CC_ARM) || defined(__CLANG_ARM) на ifdef __ARMCC_VERSION.
- Исправить ошибку комментария для rt_mutex_detach().
- Удалить оператор rt_sscanf.
- Добавить RT_WEAK для rt_malloc_align,rt_free_align.
- Изменить механизм защиты кучи памяти с FIFO на PRIO.
- Удалить исправление ошибки инверсии приоритета мьютекса.
- Добавить volatile к переменной rt_tick, чтобы предотвратить проблемы оптимизации компилятора.
- Сохранить атомарность вызовов функций хуков задач в режиме ожидания.
- Исправить сбой после включения оптимизации Oz на ac6.
- Защитить критическую секцию rt_tick_increase.
- Добавить функцию rt_mutex_trytake.
- Повысить стабильность ядра.
- Удалить зависимости C99.
- Добавить условную компиляцию для функции _has_defunct_thread.
- Уточнить контекст.
- Добавить команду управления временем в микросекундах.
- Исправить ошибку в комментарии к функции rt_memset().
- Удалить функцию rt_device_init_all().
- Скорректировать определения драйверов графических устройств.
- При отмене подписанного сравнения следует продолжать использовать неподписанные сравнения.
- Исправить ошибку компиляции при использовании функции LOG_HEX(...), но RT_USING_ULOG не определено.
Компоненты
- Поддержка armclang.
- Оптимизация системы для поддержки GCC.
- Обновление Libc
- Создать папку gcc и объединить новые папки lib и partial.
- Оптимизация системы для поддержки GCC.
- Исправление системной функции поддержки.
- Исправление возвращаемого значения asctime_r.
- Понизить действие вызова printf перед инициализацией libc до уровня предупреждения.
- Заменить dfs_select.h стандартным sys/select.h.
- Макроопределение RT_LIBC_USING_TIME остаётся после включения RT_USING_LIBC.
- Оптимизация определения fcntil.h.
- Исправить оптимизацию syscall для включения minilibc в файл syscalls.c.
- Перестроить _libc_init_array, чтобы предотвратить сбой запуска чипа под GCC. RT_DEVICE_CTRL_RTC_GET_TIMEVAL и RT_DEVICE_CTRL_RTC_SET_TIMEVAL
Функции RT_DEVICE_CTRL_RTC_GET_TIMEVAL могут получать время в секундах и микросекундах.
- Изменить имена файлов core.c/.h на rtc.c /.h.
- Обновить имя функции rt_rtc_dev_register на rt_hw_rtc_register.
- Заменить имя localtime на localtime_r.
[ethernetif]
- Заменить rt_memcpy на SMEMCPY.
[sdio]
- Удалить rt_mmcsd_blk_init.
Обновление времени
- Устранить проблему, когда функции POSIX не были защищены для критических разделов.
- Скорректировать логику оценки функций, связанных с POSIX, для получения результатов по времени.
- Переименовать нестандартные функции liBC и изменить определение time.h.
- Вернуть старый код.
Устранение ошибки инициализации sem в pthread
- Исправить ошибку инициализации MMC, записать card->csd как card->cid.
Обновление последовательного порта
- Добавить управление потоком CTS/RTS.
- Реализовать функцию получения размера окна (TIOCGWINSZ).
- Оптимизировать предварительную компиляцию RT_USING_POSIX_TERMIOS.
- Поддержка последовательной версии 2 (serial_v2) функции устройства.
- Устранить проблемы с обратным вызовом при закрытии последовательного порта.
- Оптимизация отправки неблокирующих данных при закрытии serial_close.
- Разделить обработку DMA и вызов API интерфейса последовательного порта.
- Добавлена последовательная версия 2 и драйвер последовательного порта на основе STM32.
- Поддержка функции device ops для последовательной версии 2.
- Устранение проблемы с командой RT_DEVICE_CTRL_CLOSE при закрытии последовательного устройства независимо от конфигурации DMA.
Обновление LWIP
- Устранить ошибку защиты критического раздела в LWIP.
- Установить стек по умолчанию для старой папки bsp.
- Сменить стек по умолчанию на lwip2.0.3.
- Удалить ненужный код.
- Функция «event_callback» будет изменена на RT-Thread dfs.
- Отрегулировать положение string.h.
- Предоставить LWIP_TIMEVAL_PRIVATE из <sys/time.h>.
- В LWIP2.0.2 и 2.1.2 удалить ERRNO.
- Удалить ESHUTDOWN из LWIP.
- Исключить возможные риски критической зоны.
- Тест скорости Iperf стал стабильным.
- Проблема переполнения потока rx в почтовом ящике lwip.
[pm]
Индекс должен быть меньше PM_MODLUE_MAX_ID.
[cputime]
Добавить sys/errno.h.
Обновить msh
- Реализовать команду tail.
- Исправить переполнение памяти в оболочке msh_exec.
Обновить dfs
- Функции F_GETFL/F_SETFL должны обрабатываться драйверами.
- Изменить максимальное количество и тип файловой системы по умолчанию на 4.
- Добавить файл format_ignore, исключить проверку формата fatfs.
- Добавить комментарии для _device_fs.
Обновить ymodem
- Изменены условия включения YMODEM USING FILE TRANSFER.
- Проверить законность пути к файлу команды «sy».
Добавить новый компонент: rt-link.
[net]
- Включить функцию установки статуса [интернет вверх], активировать обратный вызов.
Удалить uip.
Обновить ulog
- Использовать gettimeofday для получения метки времени.
- Исправлена проблема отображения информации о потоке при запуске ядра.
- Увеличить время проверки usec.
- Добавить API блокировки вывода.
Обновить FatFs
- Защита мьютекса может быть установлена с помощью Kconfig.
- Исправлено условие открытия функции, зависящей от времени.
BSP и перенос процессора
Поддержка armclang.
[stm32h750-artpi-h750]
Завершить BSP.
[ls2k]
Исправить отсутствующие файлы заголовков приложений.
[AT32]
Завершить BSP.
Добавить определение макроса _CRT_DECLARE_NONSTDC_NAMES=0 в bsp симулятора.
Обновить проект и удалить rtlibc и повторяющиеся определения в bsp симулятора.
Обновите libcpu
- Модифицирован интерфейс обработки прерываний irq rt_hw_trap_IRq для поддержки межъядерной обработки прерываний IPI.
- Добавьте интерфейс dcache invalidate/dcache clean&invalidate.
- Настроить stack_top на bss.
- Удалить gtimer/pmu из cortex-a.
- Восстановить ошибку возврата жёсткого сбоя.
- Включить реализацию _rt_FFS при определении макроса RT_USING_CPU_FFS в Cortex-A.
- Добавить интерфейс для получения частоты общего таймера Cortex-A Generic Timer.
- Добавить код контроллера прерывания GICV3, обновить параметры конфигурации MenuConfig в utest config.h.
- Привести в порядок код запуска cortex-a aarch32.
- Исправить ошибки компиляции драйвера RTC.
- добавить интерфейс gic>imer.
- Оптимизировано условие автоматического включения FPU, если cortex-A не определяет исключение.
- Исправлены несоответствия в поведении функций при разных уровнях оптимизации.
- Коррекция cortex-m23 rvds.S включая for. armclang platform
-
Исправить симулятор:
- исправить ошибку компиляции в файле sd_sim.c, используя rt_dgb вместо старого вывода отладки;
- обновить проект и удалить rtlibc и повторяющиеся определения;
- добавить определение макроса _CRT_DECLARE_NONSTDC_NAMES=0.
-
Исправить stm32f407-explorer:
- оптимизировать настройки fal;
- обновить readme;
- реализовать конфигурацию ESP8266 в меню драйвера расширенного модуля;
- оптимизировать систему именования файлов конфигурации Kconfig, адаптировать регистрацию имени SFUD w25Q128, чтобы пользователи не могли устанавливать более одного шага имени.
-
Добавить больше BSP на платформе BSP framework:
- VangoV85xx;
- hc32l136;
- ap32f103xe-miniboard;
- gd32407v-start;
- mm32f103x;
- ch32f103c8-core;
- n32g452xx;
- hc32l196;
- hc32f460petb;
- gd32f105c-eval;
- nrf52833;
- hc32f030c8t6-mini;
- fm33lc0xx;
- stm32l4r9-st-sensortile-box;
- stm32f302-st-nucleo;
- mm32f3270;
- stm32f407-robomaster-c;
- qemu-riscv-virt64;
- gd32350r-eval;
- stm32f407-armfly-v5;
- juicevm;
- stm32f207-st-nucleo;
- m2354.
-
[ch32f103c8-core] переименовать функции: ch32f1_hwtimer_clock_init, ch32f1_hwtimer_clock_get.
-
Исправить thread-smart:
- поддерживать процессоры серии T-HEAD Xuantie-E9xx на Smart-EVB, например E906/F/D/P, E907/F/D/P;
- форматировать код;
- добавить поддержку QEMU и оптимизировать код для расширения thead.
-
[mm32f327x] исправить ошибку пути к файлу .ignore_format.
-
[hc32f4a0] исправить синтаксические ошибки в скриптах scons.
-
[x86] включить romfs.
-
Заменить gmtime на gmtime_r.
-
[swm320-lp100] обновить библиотеки.
-
[ft2004] добавить поддержку gtimer и исправить проблемы с инициализацией драйвера can.
-
Исправить bluetrum:
- оптимизировать драйвер uart;
- исправить ошибки сборки RTC;
— добавить оценку RT_USING_CONSOLE.
-
[nrf52x] оптимизировать drv_wdt.c.
-
[mm32f327x] добавить драйвер флэш-памяти на кристалле.
-
[imxrt1064-nxp-evk] улучшить I2C, UART, LCD kconfig, исправить функцию i2C imXrT_i2C_mST_xfer, которая записывает адрес перед чтением данных.
-
[w60x] исправить недоступность функции UART1.
-
[gd32450z-eval] обновить библиотеку прошивки и удалить коды библиотек, связанных с usb.
-
[raspi4-32] обновить raspi4-32 eth drv.
-
[bluetrum] исправить невозможность получения данных uart1 и uart2.
-
Исправить STM32:
- внедрить драйвер rtc в структуру RTC версии 2.0;
- увеличить irq_type в конфигурации spi;
- исправить ошибки инициализации библиотеки драйверов USBH;
- добавить операции timeval для платформы STM32 для субсекундной временной метки.
-
Удалить BSP из платформы BSP framework:
- realview-a8;
- fh8620;
- gkipc;
- stm32f20x;
- efm32;
- zynq7000;
- stm32f1.0-mini-sysytem.
-
Исправить ошибку неиспользованного фрейма устройства.
-
Обновить лицензию GPL до Apache-2.0 и отформатировать файлы.
-
Исправить неправильную настройку длины слова при включённой проверке чётности на последовательном порту STM32.
Инструменты
- Поддержка инструмента cmake для Windows.
- Оптимизация использования переменной EXTERN_LIB.
- Обновление проекта eclipse после dist.
- Добавление имени и пути проекта по умолчанию при использовании --dist-ide.
- Решение проблемы с ошибкой при открытии menuconfig после того, как проект был распределён.
- Обновление cmake.py, добавление поддержки C++ и libpath.
- Поддержка Python 3.
- Обновление eclipse.py для совместимости с задачами.
RT-Thread v4.0.3 Change Log
Изменения со времени версии v4.0.2
Ядро
- Добавить глобальный макрос RTTHREAD.
- Добавить параметры пользовательской кучи.
- Исправить ошибку rt_memheap_detach.
- Добавить rt_memory_info() для memheap.c.
- Добавить API rt_object_get_length/rt_object_get_pointers.
- Исправить двойное освобождение потока.
- Исправить проблему управления потоком о команде RT_THREAD_CTRL_CLOSE.
- Избежать взаимоблокировки (rt_hw_interrupt_disable и rt_enter_critical при включении smp).
- Исправить проблему с определением ready_table pcpu при многоядерной rt_schedule_remove_thread.
- Исправить проблему, когда операция yield не может освободить процессор вовремя.
- Исправить сбой итератора для проверки тайм-аута списка softtimer.
- Исправить rt_timer_list_next_timeout для многозадачности.
- Добавить функцию запроса рабочего состояния таймера для программного таймера.
- Исправить программную проблему, когда системный поток таймера находится в состоянии ожидания.
- Исправить обработку таймера/программного таймера, если функция тайм-аута запускает/останавливает/удаляет этот таймер.
- Исправить проблему с тем, что rt_timer_start не работает и разрушает список таймеров.
- Исправить проблему, связанную с тем, что связанный список всё ещё монтируется, когда одиночный таймер не изменяется.
- Добавить функцию rt_tick_get_millisecond().
- Исправить задержку_до. Платформ:
- [Allwinner_Tina] — исправить ошибку драйвера SPI.
- [SmartFusion2] — поддержка семейства FPGA Microsemi SmartFusion2.
- [IMXRT] — добавить конфигурацию Ethernet для IMXRT1064-NXP-EVB.
- Добавить поддержку архитектуры SPARC-V8 и SOC BM3803.
- [Libc] — libc добавляет функции getline/getdelim (posix.1-2008).
- Добавить поддержку аппаратного FPU MCU C28x.
- [AT32] — добавить поток обнаружения связи для драйвера Ethernet.
- Исправить параметр сборки GCC в rtconfig.py для IMXRT1064-NXP-EVK.
- [IMXRT] — исправить scons —dist в IMXRT BSP.
- [LS2KDEV] — начальный драйвер GPIO без поддержки IRQ на LS2KDEV.
- Оптимизировать процесс обработки дескриптора BSP dist.
- [NRFX] — добавить QSPI_FLASH от Nordic PDK.
- [NFR5X] — добавить BSP NRF5X, который поддерживает UART, SPI, PWM, ADC, драйверы устройств I2C и RTC.
- [NRFX] — добавить встроенную флэш-память для NRF5x.
- [RISC-V:K210] — добавить поддержку UART1–3 для K210.
- [Nuclei] — добавить поддержку процессора Nuclei RISC-V.
- Обновить BSP для mini2440.
- Добавить таймер SOC CNTPCT.
- LPC55S69: добавить поддержку проекта NS и TFM на LPC55S69.
- Заставить MicroPython работать на Raspi3-64 BSP.
- Добавить rt_hw_us_delay для W60x.
- [IMXRT] [драйвер] — добавить драйвер устройства USB.
- Устранить неполадки raspi4-32:
- добавить: драйвер DMA, драйвер BSC, драйвер DSI LCD/сенсорного экрана, драйвер Waveshare SPI LCD/сенсорный экран, драйвер сторожевого таймера, драйвер HDMI, драйвер SDIO, прерывание GPIO;
- исправить: драйвер Ethernet, драйвер SPI, драйвер UART.
Добавить больше BSP в структуру BSP:
- AT32/AT32F403A-START.
- AT32/AT32F407-START.
- BLUETRUM/AB32VG1-AB-PROUGEN.
- BM3803.
- CYPRESS/PSOC6-PIONEERKIT_MODUS.
- ESSEMI/ES32F0271.
- ESSEMI/ES32F369X.
- ESSEMI/ES32F0654.
- LPC55SXX/LPC55S69_NXP_EVB_NS.
- LS2KDEV.
- NRF5X.
- Nuclei/GD32VF103_RVSTAR.
- Nuclei/HBIRD_EVAL.
- NUOVOTON/NK-980IoT.
- NUOVOTON/NUMAKER-IoT-M487.
- NUOVOTON/NUMAKER-PFM-M487.
- RASPI2.
- RASPI3-32.
- RASPI3-64.
- RASPI4-32.
- RASPI4-64.
- SMARTFUSION2.
- THREAD-SMART.
- TM4C123 BSP.
- ZYNQMP-R5-AXU4EV.
Добавить больше STM32 BSP на основе новой структуры STM32 BSP:
- STM32L431-BEARPI.
- STMF103-BLUE-PILL.
- STM32F103-ONE-NET-NBIO.
- STM32F410-ST-NUCLEO.
- STM32F411-ATK-NANO.
- STM32F413-ST-NUCLEO.
- STM32G070-ST-NUCLEO.
- STM32H747-ST-DISCOVERY.
- STM32L010-ST-NUCLEO.
- STM32L412-ST-NUCLEO.
- STM32L433-ST-NUCLEO.
- STM32L496-ST-NUCLEO.
- STM32MP157A-ST-DISCOVERY.
- STM32MP157A-ST-EV1.
- STM32WB55-ST-NUCLEO.
Новая структура STM32 BSP:
- добавить DCMI, OV2640 и драйвер SD-карты для STM32H743;
- исправить ошибку, которая приводила к сбою системы при изменении run_mode в режиме низкого энергопотребления;
- устранить проблему при использовании GCC для компиляции чипов серии G4, но чип не работает;
- drv_flash_f7.c поддерживает режим одного банка;
- добавить драйвер SRAM для STM32F103-ATK-WARSHIPV3;
- обновить void HAL_Delay(__IO uint32_t Delay);
- добавить PWM9_CONFIG по умолчанию и TIM3_CONFIG по умолчанию;
- [STM32F103-ATK-WARSHIPV3] добавить драйвер SD-карты;
- добавить английский файл readme для STM32;
- добавить DAC и CAN-драйвер для STM32L4 и STM32F4;
- драйвер openamp и добавить RS485 для STM32MP157A;
- оптимизировать алгоритм определения контактов;
- [STM32F769-DISCO] поддержка устройства Ethernet;
- добавить поддержку C++;
- исправить проблему конфигурации часов аппаратного таймера STM32;
- настроить конфигурацию приоритета прерываний некоторых периферийных устройств серии BSP STM32;
- исправить ошибку RTC серии f1;
- поддержка SPI/ADC/TIME на чипе периферийного драйвера;
- [STM32H743-ATK-APOLLO] поддержка UART DMA STM32h7;
- добавить поддержку pcf8574 и uart2 для STM32H743-ATK-APOLLO;
- поддержка pcf8574 и uart2(485) для STM32H743-ATK-APOLLO;
- обновление bsp/stm32/stm32h743-st-nucleo;
- исправление ошибки конфигурации канала АЦП для SMT32F0/L0/H7;
- добавление поддержки встроенного AP6181;
- устранение проблемы UART DMA TX;
- добавить поддержку PM с помощью инструмента cubemx для STM32L4;
- добавить драйвер SRAM STM32f407-atk-explorer;
- исправить инициализацию таймера PWM относительно pwm;
- [STM32F103-ATK-WARSHIPV3] добавить драйвер SD-карты.
Инструменты
- добавить поддержку C++ для целевой платформы Eclipse;
- сохранить конфигурацию пользователя при запуске —target=eclipse;
- добавлять библиотеки при выполнении scons --dist;
- обновлять tools/building.py и добавить tackanalysis опцию;
- улучшить логику генерации файлов rtconfig.h в scons с командой scons —menuconfig;
- исправить makeimg.py. dhcpd_stop() интерфейс;
- Изменение журнала в структуре драйвера устройства:
- Рефакторинг структуры аудиодрайвера;
- Исправление проблемы, из-за которой длина приёма равна 0 в CAN, и проблемы с возвратом неправильных значений;
- Добавление структуры драйвера аппаратного шифрования и дешифрования;
- Устранение проблемы обработки флагов в функциях rt_i2c_master_send/rt_i2c_master_recv;
- Добавление структур драйвера ввода данных и кодирования импульсов;
- Решение проблемы удаления блокировки раздела при rt_mmcsd_blk_remove;
- Решение проблемы превышения диапазона данных при перечислении ёмкости карты большой ёмкости в MMC/SD;
- При инициализации устройства SDIO также можно использовать информацию в CIS для функций производителя и продукта;
- Улучшение обработки режима прерывания в структуре датчика и решение проблемы невыпуска памяти при регистрации датчика;
- Предоставление дополнительной информации в командной строке структуры датчика;
- Проверка размера буфера RX в структуре последовательного порта и уведомление о переполнении буфера RX;
- Замена старого драйвера Nor SPI Flash на компонент SFUD в структуре SPI;
- Исправление некоторых проблем с суждениями в возвращаемом значении SFUD;
- Определение предупреждения определения SFUD_FLASH_DEVICE_TABLE в SFUD;
- Поддержка устройств W25Q64DW в SFUD;
- Обработка отказа создания FiFo при создании канала;
- Решение проблемы преждевременного освобождения RBB в функции rt_rbb_destroy();
- Переименование нового ключевого слова C++ в функции rt_rbb_blk_alloc;
- Унификация структуры rt_delayed_work в рабочей очереди до структуры rt_work;
- Создание структуры драйвера сенсорного экрана;
- Добавление класса USB Audio;
- Решение проблем с подключением/отключением RNDIS в стеке устройств USB;
- Добавление функции обратного вызова интерфейса в стек устройств USB;
- Улучшение структуры wlan, включая функции командной строки, обработку имени AP, длины пароля, поддержку netdev, улучшенную настраиваемость и т. д.
BSP и перенос процессора
- Добавление поддержки компилятора Clang в переносе процессоров ARM;
- Решение проблемы определения SCB_AIRCR в ARM Cortex-M0;
- Перенос ARM Cortex-M33;
- Добавление операций DMB/DSB для операций кэширования в переносе ARM Cortex-A;
- Добавление поддержки FPU в переносе ARM Cortex-A;
- Реорганизация переноса MIPS. Перенос XBurst перемещён в X1000 BSP;
- Объединение переноса процессоров loongson 1B и 1C в один перенос GS232;
- Поддержка переноса процессора RISC-V Hummingbird;
- Операция выхода из переключения контекста risc-v принудительно возвращается в машинный режим;
- Решение проблемы прерывания переключения в переносе TI C28x DSP;
- Реализация _ffs в переносе TI C28x DSP;
- Унификация разделов .data .bss до выравнивания по 8 байтов в цепочке инструментов GCC;
- Перемещение es32f0334 BSP в bsp/essemi/es32f0334;
- Добавление bsp/essemi/es8p508x BSP, включая драйверы UART и GPIO;
- Добавление GD32VF103V-EVAL (RISC-V MCU) BSP, включая драйвер UART;
- Повторное упорядочение NXP i.MXRT BSP и добавление связанных документов BSP;
- Добавление ATK Commander, Fire Pro и EVK BSP для новых BSP i.MXRT;
- Добавление BSP для серии NXP LPC55S6X и увеличение поддержки официальной платы разработки NXP LPC55S69-EVK;
- Решение проблемы операции I2C (master_xfer) в BSP LPC54114-lite;
- Добавление драйвера аудио в BSP LPC54114-lite;
- Обновление BSP Loongson 1B и использование автоматической инициализации компонентов по умолчанию;
- Добавление конфигурации Kconfig для BSP Loongson 1B;
- Имитация RT-Thread/MIPS без оборудования MIPS с помощью QEMU/mipssim BSP;
- Рефакторинг драйвера аудио qemu-vexpress-a9 и решение проблемы точности тиков ОС;
- Добавление драйвера LPUART в VEGA BSP RV32M1;
- Удаление старых BSP STM32: stm32f4xx-HAL, stm32f10x, stm32f10x-HAL, stm32f429-apollo, stm32f429-disco, stm32h743-nucleo;
- Решение проблемы rt_hw_sci_init() для открытия глобального прерывания в BSP tms320f28379d;
- Добавление поддержки программного I2C и аппаратного модуля шифрования в WinnerMicro W60x BSP (AES/DES/3DES/RC/SHA1/MD3/CRC);
- Добавление однократной поддержки конфигурации WiFi в WinnerMicro W60x BSP;
- Добавление дополнительных BSP STM32 на основе новой структуры BSP STM32:
- stm32f072-st-nucleo
- stm32f103-gizwits-gokitv21
- stm32f103-yf-ufun
- stm32f412-st-nucleo STM32F427-Robomaster-A, STM32F429-ST-Disco, STM32F769-ST-Disco, STM32G431-ST-Nucleo, STM32H743-ST-Nucleo, STM32H750-Armfly-H7-Tool, STM32L4R5-ST-Nucleo и STM32L452-ST-Nucleo — это названия различных устройств.
Для новой структуры BSP STM32 необходимо:
- добавить поддержку DMAMUX в STM32L4+;
- обновить SConscript библиотеки HAL F7;
- открыть конфигурацию порта SWD на Cubemx в BSP для STM32f103-ATK-Warshipv3;
- добавить поддержку SD-карты в BSP для STM32f427-Robomaster-A;
- добавить драйвер USBFS в BSP для STM32f412-Nucleo;
- удалить использование пользовательских данных устройства в драйвере UART;
- добавить поддержку QSPI FLASH в BSP для STM32h743-ATK-Apollo;
- оптимизировать драйвер Ethernet;
- добавить драйверы аппаратного шифрования и дешифрования;
- добавить MIPI LCD драйвер;
- добавить драйвер импульсного кодирования;
- оптимизировать драйвер аппаратного таймера;
- добавить поддержку UART 7/8 в последовательном драйвере;
- оптимизировать WDT драйвер.
Инструменты:
- Оптимизировать скрипт scons для Eclipse, чтобы улучшить генерацию проекта Eclipse.
- Улучшить генератор rtconfig.h, правильно генерировать конфигурацию типа PATH.
- Исправить проблему обнаружения пути gcc при использовании стандартного кросс-инструментария Linux-дистрибутива.
RT-Thread v4.0.1 Change Log
Ядро:
- исправить проблему с предупреждением компиляции
rt_tick_from_millisecond()
;
- убрать ненужный код, который несколько раз отключает прерывания во время инициализации запуска;
- исправить ситуацию, когда системный объект не отсоединяется при обработке несуществующих потоков;
- добавить проверку значения семафора (максимальное значение семафора составляет до 65535);
- исправить 64-битную проблему в kservice.c;
- добавить проверку и утверждение повторной инициализации объекта;
- в функциях rt_enter_critical/rt_exit_critical добавить проверку того, запущен ли планировщик;
- исправить проблемы с сигналами под SMP и проблемы со списком информации о сигналах в signal;
- добавить поддержку 64-разрядных процессоров в распределении памяти slab;
- исправить определение ENOTSUP в libc_errno.h;
- упростить файл rtdbg.h и использовать ulog, чтобы упростить использование системы журналов/отладки;
- добавить конфигурацию RT_USING_ARCH_DATA_TYPE,
rt_int8_t/.../rt_uint32_t
и другие базовые типы данных могут быть определены самим BSP (рекомендуется поместить их в файл rtconfig_project.h, чтобы этот файл автоматически включался в rtconfig.h при генерации menuconfig);
- добавить тип устройств
RT_Device_Class_Sensor
;
- для одноядерных систем определение
rt_hw_spin_lock/rt_hw_spin_unlock
переопределяется как отключение/включение прерываний;
- добавить функцию
rt_strnlen()
в kservice.c.
- поддерживать тип long long в rt_kprintf (HubertXie).
Компоненты:
-
Убрать CMSIS и перенести в программный пакет как пакет CMSIS.
-
Удалить компонент logtrace. Система логирования переключается на ulog.
-
Добавить больше кода для поддержки цепочки инструментов AC6 в некоторых BSP и компонентах.
-
В компоненте файловой системы DFS очистить журнал и исправить ошибку mkfs, когда индекс может выходить за пределы диапазона.
-
Разделить режим работы от спящего режима в управлении питанием, и изменение частоты должно быть более чётким. Управление питанием не использует idle hook, а выполняет действие сна непосредственно в потоке idle (как использовать управление питанием, см. документацию по программированию).
-
Очистить журнал MMC/SD-драйвера.
-
Переписать Sensor Framework, заменить исходную реализацию C++ версией C и добавить соответствующие пакеты датчиков; для использования пакетов датчиков используйте эту версию.
-
Добавить операцию передачи DMA в структуру последовательного драйвера.
-
Добавить защиту целостности к процедуре tc_flush последовательного драйвера (loogg).
-
Добавить API rt_sfud_flash_find_by_dev_name в SFUD.
-
Когда устройство Pipe закрыто, если это безымянное устройство Pipe и счётчик открытия равен 0, это устройство Pipe будет удалено.
-
Добавлена реализация отложенной работы в workqueue, и рабочая очередь системы добавлена в качестве опции.
-
Исправлена проблема потери данных при передаче DMA через USB CDC.
-
Изменён тип возврата finsh_getchar на int.
-
Исправлен вопрос errno в наборе инструментов newlib/GCC.
-
Управление pthreads изменено на массив POSIX-потоков вместо прямого сопоставления pthread_t с rt_thread_t. Eclipse для сборки RT-Thread
-
Исправить проблему с одинаковыми именами в нескольких группах при создании файла проекта Keil MDK и добавить файл библиотеки в SConscript (Eric Qiang);
-
Устранить проблему сравнения версий GCC;
-
Обновить версию ENV до v1.1.2;
-
Обновить версию scons до 3.0.5;
-
Устранить предупреждение VC++;
-
Устранить ошибку Unicode.
RT-Thread v4.0.0 Change Log
Ядро
- Добавить поддержку SMP;
- Добавить поддержку 64-битных процессоров;
- Когда поток выполняется на CPU, состояние этого потока изменяется на RUNNING вместо READY в предыдущей версии.
Компоненты
- При форматировании файловой системы добавить опцию FM_SFD для создания тома в формате SFD для FatFs (HubretXie);
- Добавить указатель дескриптора файловой системы в структуре struct dfs_fd;
- Исправить проблему со стандартным потоком ввода-вывода fd при использовании POSIX API (gbcwbz);
- Исправить функцию fd_is_open: когда подпуть одинаков в разных смонтированных файловых системах;
- Изменить критическую блокировку/разблокировку на dfs_lock/unlock в функции getcwd DFS (критическая блокировка/разблокировка отличается в среде SMP);
- Переписать реализацию list_thread/list_* команд finsh, чтобы избежать конкуренции между ядрами;
- Исправить возвращаемое значение aio_result в AIO (fullhan);
- Исправить mmap при нулевом параметре addr (fullhan);
- Модифицировать функцию _sys_istty в armlibc для корректной обработки STDIN/STDOUT/STDERR (gbcwbz);
- Модифицировать функцию _write_r в newlib для корректной обработки stdout.
- Добавить лёгкие процессы (lwP) и соответствующие системные вызовы; пользовательская среда lwP будет добавлена позже;
- Исправить at_socket при нулевом указателе сокета (thomas onegd);
- Исправить select event в функции at_recvfrom at_socket;
- Разделить SAL на sal_socket_ops/sal_proto_ops, где sal_proto_ops реализован с помощью gethostbyname/getaddrinfo и т. д.;
- Добавить слой TLS сокетов в SAL, то есть верхнее приложение может поддерживаться зашифрованной передачей без учёта низкоуровневого TLS;
- Исправить длину ulog_strcpy, которая не должна превышать ULOG_LINE_BUF_SIZE;
- Добавить определение макроса шестнадцатеричного вывода журнала в ulog (HubretXie);
- Добавить компонент uTest. uTest — это фреймворк модульного тестирования на RT-Thread, который также можно использовать для автоматического тестирования на плате с внешними скриптами Python;
- Исправить некоторые предупреждения компиляции и несоответствия перечислений в драйверах/audio;
- Исправить can_rx/can_tx, которые не очищаются до NULL при закрытии CAN-устройства в драйверах/can (xeonxu);
- Исправить драйверы/hwtimer, проблему с получением времени в режиме обратного отсчёта;
- Добавить драйверы/фреймворк драйвера АЦП;
- Исправить компенсацию тиков при слишком раннем включении прерывания (geniusgogo);
- Добавить опцию RT_SERIAL_USING_DMA в драйверах/serial;
- Добавить поддержку QSPI в драйверах/spi framework;
- Добавить поддержку QSPI в SFUD (на основе периферийного устройства QSPI stm32); SFUD обновлён до версии 1.1.0;
- Оптимизировать SPI take/release в spi_msd;
- Исправить blk_size в rt_rbb_blk_alloc;
- Исправить FS USB в _get_descriptor;
- Исправить пустой пароль в AP режиме драйверов/wlan;
- Исправить тип возврата в драйверах/wlan;
- Удалить дублирующуюся проверку открытия файла при открытии файла.
BSP
-
Изменить параметр name на const char * в функции rt_hw_interrupt_install (liruncong);
-
Переписать уровень портирования RISC-V, чтобы сделать его общим и автономным уровнем портирования для RISC-V IMAC 32/64;
-
Исправить предупреждение $ в файлах Kconfig каждого BSP;
-
Добавить LPC54114-lite BSP, включая GPIO, I2C, SDCard, SPI, SPI Flash, драйвер UART;
-
Добавить Nuvoton-M487 BSP, включая драйвер UART, EMAC (Bluebear 233);
-
Добавить Kendryte K210 BSP с RISC-V64 двухъядерным SMP BSP, включая драйвер UART, также проверенный с micropython;
-
Добавить RV32M1 VEGA BSP, включая GPIO, I2C, SDCard, UART и другие драйверы;
-
Исправить драйвер CAN в STM32F4XX-HAL BSP (xeonxu);
-
Исправить настройки DMA UART в STM32F10x/STM32F40x BSP (zhouchuanfu);
-
Исправить определение HEAP_BEGIN в STM32H743-Nucleo BSP (nongxiaoming);
-
Исправить конфигурацию GPIO в stm32f10x-HAL (Wu Han);
-
Заменить stm32f107. BSP как основная функция входа
-
Исправить проблему обработки последовательных прерываний в BSP STM32F10x.
-
Добавить драйверы ШИМ, RTC и сторожевого таймера в STM32f10x-HAL BSP.
-
Исправить проблему с драйвером сторожевого таймера в BSP STM32f4xx-HAL.
-
Использовать lwIP версии 2.x в STM32f40x/STM32f107 BSP.
-
Устранить проблему со ссылкой при включении пакета cmBacktrace в STM32f4xx-HAL BSP.
-
Поддержка функций аудио и микрофонов в STM32f429-apollo BSP.
-
Включить поддержку dlmodule в x86 BSP.
-
Добавить раздел uTest в скрипт компоновки qemu-vexpress-a9/stm32f429-atk-apollo BSP для автоматического тестирования.
-
Изменить лицензию на Apache License v2.0 в Godson 1C BSP.
Новая структура BSP для последовательного чипа STM32
Добавить новую структуру BSP для серийного чипа STM32, такого как STM32 G0/F0/L0/F1/F4/F7/H7. В новой структуре BSP повторно используются драйверы SoC. И в то же время новая структура BSP поддерживает множество плат STM32:
- Плата разработки Nucleo STM32F091.
- Плата разработки Nucleo STM32F411.
- Плата разработки Nucleo STM32L432.
- Плата Discovery STM32F407.
- Плата Nucleo STM32F446.
- Плата Discovery STM32F746.
- Плата Nucleo STM32F767.
- Плата Nucleo STM32G071.
- Плата Nano Development Board ATK STM32F103.
- Плата Explorer Development Board ATK STM32F407.
- Плата Apollo Development Board ATK STM32F429.
- Плата Apollo Development Board ATK STM32F767.
- Плата IoT Pandora Development Board ATK STM32L475.
- Плата Arbitrary Development Board Fire STM32F103.
- Плата Challenger Development Board Fire STM32F429.
- Плата Challenger Development Board Fire STM32F767.
- Плата Fly STM32F429-v6 Development Board ArmFly.
- Плата iBox development board STM32F103.
- Плата Dofly STM32F103 Development Board.
- Плата uC/Eval Development Board STM32F107.
И другие, в разработке структуры BSP участвуют больше разработчиков, таких как HubretXie, Hao Zhu, e190 и другие, чтобы улучшить публичный драйвер STM32.
SWM320 BSP от Synwit.cn
Включить SWM320 BSP от Synwit.cn, включая GPIO, HW Timer, I2C, сторожевой таймер, ШИМ, RTC, SPI, UART и т. д. Поддерживается и поддерживается Synwit.
TI TMS320F28379D BSP
Включить TI TMS320F28379D BSP, первый DSP-чип, поддерживаемый RT-Thread.
Инструмент
Предоставить дополнительную информацию, когда цепочка инструментов не существует.
Добавить черновик команды генерации файла проекта Segger Embedded Studio. Обратите внимание, что цепочка инструментов в SES — это специальная версия, а не newlib.
Исправить проблему с командой связывания библиотеки IAR при использовании командной строки scons.
Исправить проблему пути BSP в scons str(Dir('#')).
Добавить команду scons --pyconfig-silent для добавления некоторых конфигураций Kconfig и создания файлов .config и rtconfig.h.
Обновите команду scons --dist, чтобы адаптировать её к новой структуре BSP.
Измените скрипт mkromfs.py. Исправьте соответствующий код C, когда romfs содержит пустые файлы или пустые папки.
Исправьте проблему сравнения строк версий для GNU GCC в utils.py.
ENV обновлён до V1.1.0.
Обеспечьте лучшее информационное приглашение для улучшения взаимодействия с пользователем.
Добавьте путь system32 в переменные среды, чтобы избежать невозможности найти команду cmd.
Добавьте переменную PYTHONHOME в переменные окружения, чтобы избежать проблемы с окружением PYTHON.
RT-Thread v3.1.1 Change Log
Ядро
Поддержка конфигурации роста стека вверх, который определяется макросом ARCH_CPU_STACK_GROWS_UPWARD. Поскольку ARCH для стеков, растущих вверх, меньше, этот элемент конфигурации не отображается напрямую в menuconfig. Когда CPU ARCH требуется стек, растущий вверх, конфигурацию ARCH_CPU_SUPPORT_STACK_GROWS_UPWARD можно выбрать в файле BSP Kconfig по умолчанию.
Поддержка ARMCC V6 и более поздних компиляторов (компилятор на основе LLVM). В настоящее время он в основном используется в Keil MDK IDE. Обратите внимание, что «Предупреждения» должны использовать Moderate. Warnings в конфигурации проекта на C/C++ (AC6) TAB
После использования ARMCC v6 RT-Thread добавит дополнительное определение макроса CLANG_ARM.
(liruncong, nongxiaoming, bernard)
Компоненты
- Улучшить структуру драйвера ШИМ и добавить больше интерфейсов.
- Исправить обработку F_SETFL в функции ioctrl; исправить проблему с возвращаемым значением функции fcntl, которое всегда равно 0.
- Устранить проблему с типом объекта memheap при создании объекта ramfs.
- Добавить структуру управления питанием для приложений с низким энергопотреблением.
- Добавить поддержку нескольких сегментов для операций чтения и записи в структуре драйвера MC/SDIO (для stm32 можно выбрать отдельный пакет stm32_sdio).
- Добавить компонент ringblk_buf для блочного режима, но в приложениях кольцевого буфера.
- Улучшить структуру управления WLAN с унифицированными интерфейсами, управлением и командами, чтобы обеспечить более дружественную поддержку разработчикам и пользователям.
- При отключённом компоненте MSH добавлять условный макрос в finsh, даже если файлы кода скомпилированы.
- Удалить gdbstub и перенести в пакеты rt-thread.
- Обновить и улучшить компоненты SAL и AT:
- Исправить проблему с не очисткой сокета при закрытии в SAL, из-за которой сокет всегда удерживается.
- Исправить проблему select() для UDP-коммуникации в AT-компоненте. Добавить обработку полученных данных для завершения очистки полученного события.
- Добавить значение errno при тайм-ауте приёма данных в функции at_recvfrom в AT-компоненте.
- Добавить обработку тайм-аута приёма данных в функцию at_client_recv в AT-компоненте.
- Исправить возможную проблему в реализации функции fputc при использовании microlib.
- Реализовать gmtime_r для ARMCC, IAR tool chain.
- Улучшить поддержку функций времени в IAR и поддерживать 64-битное время.
- Поддержка DHCPD для IPv6.
- Заменить портирование lwIP-1.3.2 на lwIP-2.1.0, lwIP-2.0.2 остаётся версией по умолчанию.
- Добавить облегчённый компонент ulog и автоматически заменять отладочный макрос оригинального rtdbg.h при его включении.
- Обновление стека USB:
- HOST — оптимизировать механизм тайм-аутов USB HOST; исправить проблему с некорректным посещением в драйвере F4xx-HAL USB host.
- Device — добавить проверку при незаконной регистрации драйверов классов; исправить проблемы с некорректным доступом на некоторых платформах; оптимизировать классы CDC VCOM, добавить механизм тайм-аутов и определение ID.
BSP
- Модернизировать адаптер wlan до новой версии структуры управления Wi-Fi в BSP amebaz.
- Включить код конфигурации airkiss wifi в BSP amebaz.
- Обновить Apollo2 BSP с драйверами ADC, GPIO, I2C, PDM, SPI, UART и другими.
- Изменить BeagleBone BSP на режим основной функции и добавить файл конфигурации Kconfig.
- В DM365 BSP добавить файл конфигурации Kconfig.
- Дополнить документацию в HiFive1 BSP.
- Перевести imx6sx BSP в режим основной функции и включить файл конфигурации Kconfig.
- Изменить старый imxrt1052-evk BSP. BSP imxrt1052 классифицируются в каталог
bsp/imxrt
, в который позже будет добавлен сенсорный фреймворк.
- Улучшить BSP stm32f4xx-HAL с помощью драйверов PWM, I2C и USB Host.
- Улучшить BSP stm32f10x с CAN-драйвером и увеличить драйвер I2C.
- Улучшить BSP stm32f10x-HAL с драйверами I2C, IWG, PWM, RTC и другими, а также улучшить драйвер UART.
- Улучшить BSP stm32f429-disco и добавить драйверы I2C, LCD, Touch.
- Улучшить x86 BSP и поддержать функцию dlmodule.
Инструмент
- Модифицировать скрипт сборки для поддержки Python 3.
- Добавить режим scons --pyconfig с конфигуратором TK UI.
- Поддерживать GNU GCC 7/8 версии инструментальных цепочек (флаг -std=c99 не добавлен в флаги компилятора C), но обратите внимание: компонент PThreads не работает в версии 2.5 и новой версии newlib.
RT-Thread 3.1.0 Change Log
Ядро
- Основной язык текста запроса — английский.
Вот перевод текста на русский язык:
Приоритет основного потока можно настроить с помощью Kconfig;
- Добавить проверку типа объекта ядра, которая может эффективно предотвратить проблему продолжения использования объектов ядра после их уничтожения.
- Добавить список idle-хуков для монтирования нескольких idle-хуков, и его можно настроить через Kconfig.
- Добавить набор операций device_ops для уменьшения объёма памяти, занимаемого объектом устройства.
- Удалить специальную операцию с памятью в прикладном модуле при использовании алгоритма управления памятью SLAB.
- Переместить прикладной модуль из ядра в
libc/libdl
.
- Улучшить вывод отладочной информации файла
rtdbg.h
.
- В цепочке инструментов Keil/IAR используется
RT_USED
для сохранения символов и избежания добавления дополнительных аргументов или разделов во фразу компоновки.
Компоненты
- Удалить все внешние коды, которые будут перемещены в пакеты в будущем.
- Добавить флаг инициализации для оболочки, файловой системы, сетевого стека протоколов и т. д., чтобы предотвратить повторную инициализацию;
- Включить функцию длинных имён файлов ELM FatFs по умолчанию.
- Изменить DFS FD на режим динамического выделения. Максимальное количество выделений по-прежнему равно DFS_FD_MAX.
- Добавить функцию dfs_fdtable_get() для получения различных fdtable;
- Добавить больше сообщений об ошибках DFS и предоставить понятный журнал при возникновении аномалий.
- Исправить проблему форматирования диска файловой системы FatFs при монтировании нескольких файловых систем FatFs.
- Убрать функцию ввода папки в msh при вводе имени папки;
- Добавить процедуру
int finsh_set_prompt (const char * prompt)
для установки пользовательского приглашения для msh;
- Добавить конфигурацию VBUS в Kconfig.
- Перенести прикладной модуль из ядра в компонент
libc/libdl
;
- Переписать большую часть кода управления для прикладного модуля: заменить исходный контейнер объектов списком объектов; разделить код разрешения символов на разные архитектуры процессоров и т.д.
- Обновить главу о прикладных модулях в руководстве по программированию и преобразовать её в главу о динамических модулях.
- Заменить функцию exit() newlib, чтобы взять на себя обработку выхода для dlmodule.
- Добавить компонент SAL (Socket Abstraction Layer) для адаптации различных стеков протоколов и сетевых реализаций и обновить соответствующие разделы руководства по программированию;
- Добавить AT-компонент, включая AT-клиент, AT-сервер и функцию AT-сокета;
- Удалить API poll/select DFS_NET и перенести их в компонент SAL.
- Уменьшить сильную зависимость компонента lwIP для DFS_NET и заменить его конфигурацией Kconfig в SAL.
- Добавить функцию DHCP-сервера с необработанным API lwIP;
- Исправить проблему инициализации очереди ожидания в распределении сокетов lwIP.
- Когда поток собирается заблокироваться в очереди ожидания, исправить проблему пробуждения для
rt_wqueue_wakeup
, выполняемого для пробуждения этого потока;
- Добавить структуру драйвера ШИМ;
- Исправить выпуск sdio_irq_wakeup в рамках MMC/SD-фреймворка.
- Решить проблему обработки DMA в рамках фреймворка последовательного драйвера.
- Обновите SFUD до версии 1.0.6.
BSP
- Исправьте проблему SP при возникновении жёсткой ошибки для архитектуры ARM Cortex-M;
- Добавьте портирование архитектуры C-Sky CK802;
- Добавьте BSP Realtek amebaz WiFi SOC (rtl8710bn);
- Обновите SDK встроенного ПО imxrt1052-evk для поддержки чипа модели B.
- Решите проблему копирования пакетов в BSP Godson 1C при отправке сообщения.
- BSP Nuvoton m05x/m451 изменены на режим входа main() и поддерживают компиляцию GCC;
- Решите проблему несоответствия между диапазоном касания и разрешением ЖК-дисплея в qemu-vexpress-a9.
- Добавьте qemu-vexpress-gemini BSP для двухъядерной архитектуры A9 (RT-Thread + Linux);
- Добавьте базовый портинг для Raspberry Pi 2B;
- Добавьте драйверы CAN и PWM в stm32f4xx-HAL BSP;
- Оптимизируйте драйвер GPIO в stm32f4xx-HAL BSP;
- Добавьте драйвер UART3 в stm32f4xx-HAL BSP;
- Исправьте драйвер I2C1 в stm32f10x BSP и интерфейс управления WDG.
- Добавьте интерфейс rt_hw_us_delay в stm32f10x-HAL BSP;
- Оптимизация драйвера GPIO в stm32f10x-HAL BSP;
- Добавьте драйвер GPIO и драйвер RTC в stm32f107 BSP.
Инструмент
- Обновление ENV до финальной версии v1.0.0.
- Добавлен китайский зеркальный сервер для пакета программного обеспечения ENV, что позволяет ускорить загрузку, обновление и т. д. пакета программного обеспечения.
- Исправлены известные ошибки ENV и улучшено взаимодействие с пользователями.
- Добавление скрипта сборки. Обнаружение версии GCC и newlib
- Добавить скрипт сборки для обнаружения версии armcc.
- Добавить функцию scons --dist для создания дистрибутива для BSP.
- Добавить функцию scons - dist - strip для создания минимального набора файлов дистрибутива для BSP.
- Добавить параметры ASFLAGS/LOCAL_ASFLAGS для определения группы и передачи их ассемблеру.
- Исправить некоторые ошибки в скрипте сборки в среде Linux.
- Создать проект C-Sky CDK IDE.
- Добавить scons --target=vsc -s для генерации дружественных конфигурационных файлов для VSCode.
RT-Thread 3.0.4 Change Log
Ядро
- Изменить расположение вызова хука в rt_event_send, что позволит лучше отражать значение события в представлении системы.
- Исправить проблему с rt_realloc() в memheap.
- Исправить проблему vstart_addr в динамической библиотеке.
- Обеспечить более стандартизированный сигнал и удалить члены si_errno из siginfo_t.
- Добавить API rt_thread_mdelay() для задержки в миллисекундах в потоке.
Компоненты
- Исправить ошибку mkfs в FatFs (проблема слияния, появившаяся при обновлении RT-Thread V3.0).
- Исправить опрос dfs_net, если уже получены данные, верхний уровень не может проснуться и обработать данные.
- Исправить проблемы с сокетами в dfs_net при сбое lwip_socket (Bluebear233).
- Если функция dfs_net/socket используется в версии lwIP 1.x, будет возвращена ошибка компилятора.
- Исправить информацию df() в DFS.
- Исправить запись аудиоустройства при неправильном восстановлении прерывания.
- Исправить однократный тайм-аут в структуре драйвера аппаратного таймера.
- В драйвере ENC28J60 включить «изменение состояния соединения» в инициализации.
- Исправить данные при помещении данных в кольцевой буфер.
- Добавить отображение информации UDP в команде netstat.
- Исправить USB HS при отправке 1 байта данных, приводящей к двум передачам.
- Изменить механизм регистрации USB Class Driver, чтобы класс Driver мог быть зарегистрирован в пакете.
- Добавить драйвер USB Device для HS USB.
- Улучшить совместимость функции time() для разных компиляторов.
- Добавить дополнительные элементы конфигурации для DHCPD в menuconfig.
BSP
- Временно удалить трансплантацию Andes AE210P из-за ошибочного использования SVC для переключения контекста.
- Включить SD/MMC в Allwinner ARM9 BSP.
- Включить драйверы SPI и SPI Flash в Allwinner ARM9 BSP.
- Поддержка платы разработки GD32's gd32303e-eval.
- gd32450z-eval поддерживает компиляцию GNU GCC.
- Переписать поддержку пакета уровня платы hifive1 для архитектуры risc-v.
- О i.MX RT1052: завершена поддержка различных плат разработки: ATK, Fire, seeed studio.
- На i.MX RT1052 добавить функции cache-ops.
- На i.MX RT1052 добавить поддержку I2S и WM8960 кодеков.
- Усовершенствовать поддержку ETH-драйвера (включая поддержку Fire) на i.MX RT1052.
- Поддерживать драйвер аппаратного таймера на i.MX RT1052.
- На i.MX RT1052 добавить драйвер GPIO.
- На i.MX RT1052 добавить драйвер RTC.
- На i.MX RT1052 улучшить драйвер SD/MMC.
- На i.MX RT1052 добавить драйверы SPI и SPI Flash (подключение к компоненту SFUD).
- На i.MX RT1052 добавить драйвер USB-устройства.
- Добавить файлы README и KConfig в LPC408x BSP.
- Добавить документы README в LPC5460x-LPCXpresso BSP.
- Добавить контроллер дисплея (Sundm75) в Godson 1C BSP.
- Добавить CAN-драйвер в Loongson 1C BSP (Sundm75).
- В GPIO-драйвере Loongson 1C BSP добавить функцию внешнего прерывания (Zhuangwei).
- Использовать автоматическую инициализацию SPI в Loongson 1C BSP.
- Добавить I2C-драйвер в Loongson1C BSP (Sundm75).
- Добавить резистивный сенсорный экран в Loongson 1C BSP (Sundm75).
- В Loongson 1C BSP включить инициализацию компонентов и основную функцию (Zhuangwei).
- Самозагрузка в Loongson1C BSP (Zhuangwei).
- Добавить файлы README и KConfig в Loongson 1C BSP (Zhuangwei).
- Исправить дескриптор rx в функции init_rx_desc в NUC472 BSP (Bluebear233).
- AC97 Audio-драйвер в QEMU-VExpress-A9 BSP.
- Описание файла README в QEMU-VExpress-A9.
- I2C-драйвер в stm32f4xx-HAL BSP и описание файла README.
- Cache-ops в stm32f7-disco BSP и описание файла README.
- Описание файла README в stm32f10x/stm32f10x-HAL. Спецификационные файлы README и конфигурационные файлы KConfig в BSP для STM32F40x;
- Добавить конфигурационный файл KConfig в BSP для STM32F20x;
- Включить поддержку инструментальной цепочки GNU GCC и добавить файл описания README в BSP для STM32f411-nucleo;
- Добавить драйвер GPIO и файл описания README в BSP для STM32f429-apollo;
- Добавить конфигурационные файлы KConfig в BSP для STM32f429-armfly;
- Добавить файл описания README в BSP для STM32l476-nucleo;
- Временно удалить этот BSP, так как V2M-MPS2 не поддерживает работу на 32-битной машине;
- Добавить файл описания README и некоторые файлы прошивки, такие как u-boot.bin, wifi firmware и т. д., в BSP X1000;
Инструменты:
- Добавить функцию обнаружения версии инструментальной цепочки GNU GCC и функции библиотеки libc;
- Добавить функцию помощи редактора VSCode и поддержку scons --target=vsc -s в папке BSP для генерации конфигурационных файлов для VSCode;
- Добавить обнаружение версии IAR;
- Добавить функцию ProjectInfo (Env) для получения информации о цели: все исходные файлы должны быть скомпилированы, все заголовочные файлы, все определения макросов, пути поиска для заголовочного файла и т.д.
RT-Thread 3.0.3 Change Log
Kernel
- Добавить защиту планировщика при очистке отсоединённого потока;
- Исправить проблему object_find при включении функции модуля;
- Улучшить поддержку POSIX сигналов и добавить функцию rt_signal_wait и интерфейс POSIX sigwait;
- При включении оболочки finsh, заголовок rtthread.h включает файл API finsh. Таким образом, код приложения может использовать функцию экспорта команд без файла finsh.h;
- Улучшить комментарии в файле rtdbg.h. В RT-Thread просто используйте следующий код для добавления функции отладочного журнала:
#define DBG_ENABLE
#define DBG_SECTION_NAME "[ MOD]"
#define DBG_LEVEL DBG_INFO
#define DBG_COLOR
#include <rtdbg.h>
Когда определение DBG_ENABLE закрыто, журнал отладки будет закрыт. В противном случае можно использовать dbg_log(level, fmt, ...)
для печати отладочной информации.
DBG_SECTION_NAME — префиксная информация для каждой строки журнала;
DBG_LEVEL — уровень журнала отладки;
DBG_COLOR — использование цветного журнала в консоли.
Компоненты
- Исправить проблемы с флагом fopen в GNU GCC;
- Исправить проблему pthread_detach при использовании для отсоединённого pthread;
- Исправить проблему _TIMESPEC_DEFINED в IAR 8;
- Добавить интерфейс libc_stdio_get_console() для возврата fd консоли;
- Переместить компонент UI engine в отдельный пакет;
- Добавить унифицированный драйвер TF/SD-карты на шине SPI устройства;
- Добавить устройство soft-RTC, чтобы устройство могло синхронизироваться с сетевым временем и поддерживать время с тиком ОС позже;
- Изменить API open/fcntl/ioctl на стандартный интерфейс POSIX;
- Исправить проблему ramfs при обновлении с RTT 3.0.x;
- Исправить проблему elm fatfs umount (liu2guang);
- Игнорировать флаг O_CREAT при открытии файла устройства;
- Улучшить класс драйвера VCOM в стеке USB (ChunfengMu, Aubr.Cool).
BSP
- Исправить потенциальную проблему при включении аппаратного FPU Cortex-M;
- Добавить v2m-mps2 BSP, который используется в Keil MDK5 для моделирования Cortex-M4/M7/M23/M33;
- Добавить драйвер sdcard для stm32f10x-HAL (liu2guang);
- Улучшить поддержку GNU GCC для stm32f10x-HAL (Xeon Xu);
- Симулятор BSP можно использовать в Windows/Visual C++ и обновить SDL до версии 2.0.7;
- Добавить BSP gk7102 от gokemicro;
- Добавить ARM9 BSP allwinner F1C100s (uestczyh222);
- Исправить некоторые проблемы в библиотеке периферийных устройств NXP LPC54608/i.MX RT (Valeriy Van).
Инструменты
- Скрипт сборки scons автоматически добавит макрос
_REENT_SMALL
, когда включит newlib nanao;
- Модифицировать скрипт сборки для Python 3.x и scons 3.0.
RT-Thread v3.0.2 Change log
Платформа
- Убедитесь, что Object_Class имеет фиксированное значение;
- Добавьте API rt_device_create/destroy;
- Добавьте трассировку памяти для алгоритма управления небольшой памятью для обнаружения утечек памяти и перезаписи;
- Добавьте первую версию асинхронного API ввода-вывода;
- Добавьте cputime для счётчика высокого разрешения;
- Добавьте функции устройства pipe в DeviceDrivers;
- USB Host доступен в stm32f4 с классом массового хранения;
- Добавьте команду 'df' в msh;
- Обновите движок пользовательского интерфейса и добавьте пример;
- Разделите clock_time из pthreads и добавьте новый идентификатор часов: CLOCK_CPUTIME_ID;
- Включите IPv6 в версии lwIP 2.0.2;
- Добавьте memlog в logtrace;
- Исправьте проблему closesocket. dfs_net
- Исправить проблему IPv6 в NFS.
- Обновить файловую систему JFFS2 с новым API DFS.
- Решить проблему со stat "/.." в lwext4 (parai).
- Устранить проблему поиска типа fs в mkfs.
- Починить select в dfs_net.
Инструменты
- scons: добавить команду '--useconfig' для использования существующего файла конфигурации.
- scons: принудительно использовать g++ для линковки при включении
RT_USING_CPLUSPLUS
в конфигурации GNU GCC.
- Включить функцию пакета на хосте Linux/MacOS.
BSP
- Добавить BSP NUC472 (bluebear).
- Обновить драйвер SD/MMC для qemu-vexpress-A9.
- Добавить драйвер клавиатуры/мыши для qemu-vexpress-a9.
- Добавить драйверы ADC/I2C/Flash/PWM/RTC/smbus/SPI для apollo2 (Haleyl).
- Добавить драйверы I2C/LCD/Touch для i.MXRT1052-EVK.
- Обновить драйвер SD/MMC для mini2440 (kuangdazzidd).
- Адаптировать симулятор к компилятору VC++.
- Добавить USB-драйвер хоста в stm32f4xx-HAL (uestczyh222).
- Обновите драйвер EMAC для IPv6 в stm32f40x/stm32f107.
- Добавьте BSP stm32h743-nucleo (polariss).
RT-Thread v3.0.1 Change log
Платформа
- Добавить API mmap()/munmap() для совместимости с POSIX.
- Исправить issue с filesystem_operation_table.
- Улучшить стек USB для USB-ведомого (HID/ECM/RNDIS/WINUSB или составное устройство).
- Улучшить стек USB для USB-хоста (HID/MSC и т. д.).
- Исправить утечку памяти при закрытии канала.
- Исправить open romfs issue.
- Добавить SoftAP-устройство в Wi-Fi-фреймворк.
- Переупорядочить инициализацию lwIP/ETH.
- Добавить опции IPv6 в Kconfig.
- Исправить issue module_id в _rt_thread_init.
Инструменты
- Добавить menuconfig для платформы Linux/Mac: используйте scons --memuconfig, чтобы включить его.
- Добавить LIBS для проекта IAR.
BSP
- Улучшите LPC54608 BSP для различных компиляторов.
- Добавить GPIO/I2C/SPI-драйверы для Loongson 1C.
- Добавить csd cmd в драйвер sdcard mini2440.
- Добавить SDIO/EMAC-драйвер для bsp qemu-vexpress-a9.
- Разрешить VC++ компилировать симулятор BSP.
- Добавить bsp stm32f4xx-HAL для разных серий STM32F4 <пользователь может использовать menuconfig для выбора чипа>.
- Исправьте PHY reset в bsp stm32f429-apollo.
- Добавить Audio/MMC/SLCD/Touch/USB slave/RTC/SPI/SFC Flash-драйвер в Ingenic X1000 BSP.
RT-Thread v3.0.0 Change log
Платформа
- Добавлены дополнительные функции POSIX, такие как poll/select, signal, termios и т.д.
- Добавлена очередь ожидания для функции опроса.
- Используйте fops для файловых операций. Есть два способа посетить объект устройства: rt_device_* API, файловый API (open/read/write/close и т.д.).
- Измените тип cmd с uint8_t на int в интерфейсе управления.
- Добавляйте больше объектов C++ для объектов ядра RT-Thread.
- Добавьте wlan-драйвер для работы с wlan-устройствами.
- Интегрируйте SFUD в RT-Thread для унификации операций SPI flash.
- Обновите lwIP до версии 2.0.2.
Инструменты
- Включите пакеты с помощью инструмента ENV.
- menuconfig & Kconfig.
- Добавьте scons --dist для создания дистрибутива для указанного BSP.
BSP
IoT
- Внедрить больше компонентов IoT в виде пакетов, таких как MQTT, CoAP, HTTP, TLS и т.д.
RT-Thread v2.1.0 Change log
Этот релиз является окончательным релизом ветки RT-Thread v2.1.0. Этот релиз откладывался много раз. После фиксации fh8620 и x1000 bsp мы с гордостью объявляем о выпуске этой ветки официальной версии.
Журнал изменений с момента последней стабильной версии:
Ядро
- Перенесите компонент init в ядро.
- Исправлена проблема с флагом открытия устройства.
- Добавление утверждения hook.
- Лучшая поддержка прикладных модулей.
- Не блокирует планировщик при вызове функции тайм-аута программного таймера.
Пакет поддержки платы:
- fh8620, предоставленный Shanghai Fullhan Microelectronics Co., Ltd. Это чип IP-камеры с ARM1176, 300 МГц, 16 КБ I-кэша и 16 КБ D-кэша.
- x1000 bsp. Процессор — это процессор XBurst 1,0 ГГц, основанный на MIPS, от Ingenic Semiconductor Co.,Ltd.
- imx6sx bsp, только портирование ядра Cortex-A9 в NXP i.MX6 solox. Кстати, ещё один полный порт серии Kinetis был создан в rt-thread_fsl, который поддерживается сотрудником NXP.
- lpc5410x bsp, только портирование ядра Cortex-M4.
- ls1cdev bsp для платы Loogson1C.
- dm365 bsp.
- nRF51822/nRF52832 bsp.
- stm32f7-disco bsp, первое портирование ARM Cortex-M7 в RT-Thread.
- stm32f411-nucleo bsp.
- Добавьте поддержку компилятора IAR в beaglebone bsp.
Компоненты:
- Добавьте больше операторов сокета fd в DFS с виртуальной файловой системой lwIP.
- Добавьте CAN/Hardware. Драйверы устройств для таймеров.
- Исправить проблему SDIO для поддержки устройства Wi-Fi.
- Добавить поддержку eMMC в драйверы устройств SD/MMC.
- Устранить проблему сброса при настройке NAT в lwIP NAT.
- Вернуть RTGUI, но в качестве UI-движка для blend point/line/rect и bitmap и т. д.
- Внедрить портирование nanopb, реализацию Protocol Buffers небольшого размера;
- Внедрить портирование paho-mqtt, клиент C/C++ Eclipse Paho MQTT для встраиваемых платформ;
- Обновить freetype до версии 2.5.4.
- Улучшить msh для файловых операций.
- Разделить экспортированные команды оболочки finsh на отдельный раздел: «.rodata.name».
RT-Thread v2.1.0 beta версия изменений.
BSP часть
- Включить GPIO-драйвер BeagleBone;
- обновить библиотеку драйверов и улучшить программу EMAC-драйвера для Jingwei Yage M7;
- включить новый перенос dm365 (включая EMAC, GPIO, I2C, MMC/SD, SPI и другие драйверы);
- добавить аппаратный таймер и драйвер CAN для LPC4088;
- включить перенос DragonChip 1C, платформу разработки Wisdom V2 (включая мультипоследовательный порт);
- изменить перенос mini2440 на каталог applications/drivers и др.;
- обновить перенос симулятора на MS VC++, обработать инициализацию кода, усовершенствовать UART-контроллер;
- включить перенос stm32f7-disco;
- в STM32F10x включить CAN-драйвер и примеры приложений;
- в STM32F40x включить драйвер аппаратного таймера и RTC-драйвер;
- настроить STM32F107 как новую структуру последовательного порта;
Компоненты
- Удалить член st_blksize в структуре stat библиотеки DFS (можно использовать определение stat в VC++);
- исправить проблемы с реализацией select в DFS;
- исправить ошибки при работе с файлами в DFS, а также проблемы с обработкой fd при закрытии;
- исправить проблемы с fd при ошибках mkdir и lseek в DFS;
- исправить проблему защиты SYS_ARCH_PROTECT/SYS_ARCH_UNPROTECT в lwIP;
- создать CAN-драйвер;
- создать драйвер аппаратного таймера;
- добавить поддержку eMMC в драйвер SD/MMC;
- исправить ошибку при регистрации SDIO-драйвера;
- исправить проблему с флагом активации DMA при отправке через последовательный порт;
- включить поддержку чипа GD25Q spi flash в SPI Flash-драйвере;
- внедрить компонент paho-mqtt;
- расширить возможности выполнения скриптов msh, позволяя выполнять скрипты *.sh;
- добавить команду mkfs в msh;
- исправить проблему обработки возврата каретки в Telnet под Linux с помощью оболочки finsh;
- увеличить экспорт символов libc при использовании armcc или gnu gcc;
- добавить параметры ETHIF_LINK_AUTOUP/PHYUP в сетевую карту для указания начального состояния линии связи Up/Down;
- экспортировать компонент log_trace во время инициализации ядра;
Ядро
- Изменить UNUSED/USED на RT_UNUSED/RT_USED;
- при компоновке добавить раздел .rodata.name, который можно разместить в менее производительной области памяти при ограничении ресурсов;
- улучшить автоматическую инициализацию компонентов под IAR;
- добавить rt_assert_hook, который может быть выполнен при срабатывании утверждения;
- решить проблемы с загрузкой модулей приложения;
Инструменты
- В scons определить группу, добавив определения параметров компиляции;
- исправить ситуацию, когда группа содержит код и двоичную библиотеку, что приводит к дублированию групп в файле проекта Keil MDK.
Версия: RT-Threadv2.0.1 и v2.1.0 alpha.
RT-Thread v2.0.1 — это версия 2.0, которая является исправленной версией серии bug, а v2.1.0 alpha — это текущая техническая предварительная версия основной ветки разработки, предоставляющая технический предварительный просмотр версии v2.1.0, которую не рекомендуется использовать в реальных продуктах из-за возможных многочисленных ошибок.
Изменения в версии RT-Thread v2.0.1:
- Поддержка THREAD_SUPPORT и FILE_DESCRIPTOR в dlib для IAR.
- Исправлена проблема с отображением echo в оболочке finsh.
- Исправлены ошибки компиляции в коде USB host.
- Исправлены проблемы с обратным вызовом в сенсорном фреймворке.
- Исправлено название устройства при регистрации pin-устройства.
Что касается версии v2.1.0 alpha, то она соответствует первоначальному плану разработки и включает в себя:
- Более глубокую интеграцию lwip, включая его интеграцию в файловую систему RT-Thread, что позволяет более плавно переносить сетевые приложения сокетов в Linux/Unix на RT-Thread и заложить основу для будущего применения в других областях.
- Это не связано с выпуском RT-Thread напрямую, но является одной из целей этой серии версий: запуск облачной интегрированной среды разработки! Облако будет выглядеть так, как вы ожидаете, пожалуйста, используйте современный браузер для доступа к CloudIDE.
Изменения в RT-Thread 2.0.0:
После примерно одного года разработки была выпущена окончательная версия RT-Thread v2.0.0. С момента начала разработки было введено множество функций, исправлений и улучшений. Спасибо всем разработчикам, которые приняли участие!
Ниже приведены подробные изменения с момента выпуска RC-версии v2.0.0. Позже я также предоставлю основные различия между версиями v2.0.0 и v1.2.x, а также план развития следующей версии.
Ядро
- Консоль открывается как символьное устройство с параметром RT_DEVICE_FLAG_STREAM.
- Добавлены дополнительные проверки утверждений в функции rt_memheap_free.
Компоненты
- Обновлён драйвер RW009 для поддержки режима SoftAP Wi-Fi (aozima).
- Исправлены некоторые проблемы в сенсорном фреймворке и добавлен интерфейс C API (предоставлен компанией Bright Shengda).
- Включён код датчика MPU6050 (bernard, Coing).
- Включён код датчика BMI055 (Coing).
- Если heap не включён, исправлена ошибка в списке list_memheap в finsh/msh.
- Исправлены предупреждения компилятора LIBC.
- Реализовано перемещение IAR dlib, позволяющее приложениям использовать стандартные API-интерфейсы.
- Исправлена потенциальная конкуренция в режиме YMode (grissiom).
- Обновлено до FreeType версии 2.5.4
- Отдельные глобальные объекты C++ инициализируются в функции cplusplus_system_init и вызываются в потоке инициализации.
- Открыт как символьное устройство в finsh с параметром RT_DEVICE_FLAG_STREAM.
- Добавлен компонент VBUS для связи между Linux и RT-Thread системами, а также между RT-Thread системами (предоставленный компанией Bright Shengda).
- Добавлен lwIP/NAT, позволяющий преобразовывать адреса между несколькими сетевыми портами (Hicard).
- Добавлен сервер lwIP/DHCP, используемый для назначения IP-адресов клиентам (предоставленный компанией Bright Shengda).
Часть BSP
- Исправлена ошибка преждевременного открытия прерывания при инициализации последовательного порта LPC4357 (nongxiaoming).
- Переписан драйвер последовательного порта LPC4357, и оба ядра M4/M0 на чипе выполняют систему RT-Thread. Связь между двумя ядрами осуществляется через компонент VBUS (предоставленный компанией Bright Shengda).
- Новый перенос RX (limxuzheng).
- Новый перенос NuMicro M051 Series, поддерживающий GCC и Keil MDK (bright-pan).
- Новый перенос LPC54102 (Coing).
- Удалены ненужные настройки RT_TIMER_TICK_PER_SECOND в BSP STM32F4 (pangweishen).
- Принудительная компиляция с использованием 32-битного режима в анализе компиляции Clang под Linux (grissiom).
- Исправлена преждевременная ошибка открытия прерываний в последовательном порту STM32F103 (armink).
Инструменты
- Добавлена поддержка MD5 в scons (bright-pan). Благодаря участию hduffddybz в этот релиз включён перенос стека протоколов IPv6 (версия lwIP-head), что позволяет реализовать поддержку TCP/IP v4/v6 на небольших устройствах с использованием RT-Thread;
Благодаря участию wzyy2, реализация GDB stub также идеально поддерживает платы разработки BeagleBoneBlack и STM32F4.
Другие результаты работы летнего лагеря CSDN с открытым исходным кодом, такие как начальные результаты переноса bluedroid, мы надеемся включить в последующие версии (возможно, это будет серия версий 2.1.0). Летний лагерь CSDN с открытым исходным кодом — это замечательное мероприятие, которое позволяет студентам заранее погрузиться в практику и получить базовые знания о разработке программного обеспечения. Для сообщества открытого исходного кода это также очень полезное мероприятие для взаимодействия. Надеемся, что в следующем году это мероприятие продолжится, а заинтересованные во встраиваемых системах и RT-Thread могут обратить внимание на его развитие в будущем.
В настоящее время область интеллектуальных устройств является предметом пристального внимания. Учитывая особенности этой области, RT-Thread также...