  # BabyOS BabyOS предназначена для проектов с микроконтроллерами (MCU) и представляет собой набор модулей управления и встроенных драйверов. Для проекта это позволяет сократить сроки разработки. При выборе проекта можно использовать подходящие модули управления и драйверы, что позволяет сразу приступить к написанию функционального кода. Для разработчика это снижает количество повторной работы. Отладочные модули управления и драйверы кода могут быть помещены в BabyOS для управления ими, а затем использоваться в других проектах. # 1 Кодовая структура <img src="https://gitee.com/notrynohigh/BabyOS/raw/dev/doc/BabyOS.png" alt="BabyOS" style="zoom: 80%;" /> # 2 Требования использования 1. Компилятор должен поддерживать C99 2. По умолчанию компилятор должен поддерживать пользовательские сегменты (обязательно) и слабо связанные функции (не обязательно). На Windows требуется установка Python (версия 2 или 3). На Linux требуется установка Python, python-pip и make для конфигурирования и сборки кода.  # 3 Документация BabyOS Просмотреть документацию дизайна: [https://babyos.cn/doc/](https://babyos.cn/doc/)Рекомендовано: добавить babyos как подмодуль в пользовательский проект. <img src="https://foruda.gitee.com/images/1706455699810637537/031b0a0f_1789704.gif" style="zoom: 67%;" /> **Добавление кода BabyOS** | Путь | Часть/вся | | ------------------ | ------------------------- | | bos/algorithm | Весь | | bos/core | Весь | | bos/drivers | **Добавьте по необходимости**| | bos/hal | Весь | | bos/mcu | **Добавьте по необходимости**| | bos/modules | Весь | | bos/thirdparty | **Добавьте по необходимости**| | bos/utils | Весь | | bos/_config | *_config каталог скопирован в пользовательский каталог_*| **Добавление пути Include** `bos/` `_config/` если конфигурационные файлы скопированы в другой путь, то добавьте соответствующий путь. # 4 Учебник BabyOS Из-за постоянных обновлений кода невозможно избежать несоответствия видео материалов с последними версиями кода. Если возникают вопросы, пожалуйста, опишите проблему в issues! [Первая лекция знакомит с BabyOS](https://www.bilibili.com/video/BV1Ff4y1o7bZ?share_source=copy_web) [Вторая лекция быстрое и продвинутое использование BabyOS](https://www.bilibili.com/video/BV1Lg411f7cH?share_source=copy_web) [Третья лекция общее описание функциональности BabyOS](https://www.bilibili.com/video/BV1iU4y1q7EJ?share_source=copy_web) [Четвертая лекция компоненты функциональности BabyOS](https://www.bilibili.com/video/BV1JZ4y1Y7S7?share_source=copy_web) # 5 Примеры использования BabyOSРепозиторий примеров содержит различные эксперименты: [https://gitee.com/notrynohigh/BabyOS_Example](https://gitee.com/notrynohigh/BabyOS_Example) Пример верхнего уровня для частного протокола BabyOS: [https://gitee.com/notrynohigh/BabyOS_Protocol](https://gitee.com/notrynohigh/BabyOS_Protocol) # 6 Как развивается BabyOS Для того чтобы BabyOS могла выполнять значимую роль в проектах, ей необходимы достаточные модули функциональности и драйверы. Мы надеемся на помощь сообщества, чтобы вместе "подкармливать" её и сделать незаменимой частью разработки микроконтроллеров. **Gitee** (основной репозиторий, где разработчики отправляют свои изменения в ветку dev, а администраторы объединяют их в основную ветку master): [https://gitee.com/notrynohigh/BabyOS](https://gitee.com/notrynohigh/BabyOS) **GitHub** (синхронизация автоматическая): [https://github.com/notrynohigh/BabyOS](https://github.com/notrynohigh/BabyOS) --- **Если вы считаете эту открытую систему полезной, пожалуйста, отметьте её звёздочкой, это будет вашей поддержкой!** Адрес электронной почты администратора: notrynohigh@outlook.com Группа QQ разработчиков & канал WeChat для обновлений:  # История обновлений| Дата | Новые функции | Примечание | | -------- | ------------------------------------------------------------ | ---------- | | 2019. 12 | Функциональные модули: FIFO, AT, Nr_micro_shell, лунный календарь | | | 2020. 01 | Функциональные модули: KV-хранение | | | 2020. 02 | Функциональные модули: Xmodem128, Ymodem, FlexibelButton; Драйвер: xpt2046 | | | 2020. 03 | Функциональные модули: b_log, b_gui, b_menu, b_trace, b_heap; Драйвер: ssd1289 ili9341 | | | 2020. 04 | Добавлен пример с использованием MCU Huada, добавлен драйвер ili9320 oled12864, улучшены функциональные модули b_mod_kv и т. д., добавлена директория algorithm | | | 2020. 05 | Улучшенная структура кода, добавлены: b_mod_timer b_mod_qpn и т. д.; улучшены функциональные модули b_mod_xmodem и т. д., добавлены алгоритмы base64 sha1 sort и т. д. | | | 2020. 06 | Разделение на три репозитория для управления кодом. Добавлен SFUD как драйвер SPIFLASH, добавлен драйвер SD карты, добавлены FatFS и LittleFS и т. д. | | | 2020. 07 | Контент не обновлен, добавлено два видео-урока для быстрого понимания BabyOS | | | 2020. 08 | В репозиторий BabyOS_Hal добавлен стандартный библиотека ST, добавлен пример использования стандартной библиотеки. Оптимизация деталей в коде | | | 2021. 01 | Удалены лишние файлы, изменено содержание раздела section. | | | 2021. 02 | Добавлен пример компиляции и отладки с помощью vscode+arm-gcc+openocd. В директорию doc добавлены файлы sections и пример makefile. | | | 2021.05 | Поддержка компилятора AC6 | | | 2021. 06 | Большое обновление, полная переработка всего кода. Возможность использования внутренней флэш-памяти MCU для хранения данных KV, улучшение драйверов и т. д. | | | 2021. 07 | Изменение метода изменения файла линковки в GCC | | | 2021. 10 | Объединение содержимого двух разделённых репозиториев, изменение способа организации HAL-кода и структуры интерфейсов различных драйверов. Версия V7. 0. 0 | | | 2021. 11 | Оптимизация предупреждений и ошибок, код в директории MCU использует метод работы с регистрами по умолчанию | | | 2021. 12 | Улучшение всей структуры, добавление соответствующего конфигурирования, что делает использование более удобным. Поддержка версий b_config.h начиная с V7. 3. 0 | | | 2022. 01 | Добавлены интерфейсы bReinit и bModifyHalIf, исправлены ошибки в имитационном I2C | | | 2022. 02 | Адаптация структуры, чтобы зависимости были более логичными. | | | 2022. 03 | Добавлены сторонние коды cJSON и пула памяти. Изменены названия макросов и файлов в b_config.h, а также названия директорий и файлов. | || | 2022. 04 | Добавлено включение модулей Wi-Fi, добавлены интерфейсы получения приватной информации драйверов, добавлена QSPI | | | 2022. 05 | Переработана конфигурационная утилита, добавлен модуль IAP (In Application Programming) | |06 | Обновлен дизайн и документация использования, подробно описаны программные модули. Добавлена поддержка матричных кнопок | | | 2022. 07 | Добавлены видеоуроки, показаны в README. Изменён b_mod_gui, добавлена поддержка нескольких экранов с использованием ugui | | | 2022. 08 | Устранены ошибки, связанные с кнопками, добавлен MCU, добавлен COREMARK, доработан модуль IAP | | | 2022. 10 | Добавлен модуль b_mod_state, добавлен макет 4М SPIFLASH в памяти (только для отладки логики программного обеспечения) | | | | Добавлен необходимый код для запуска babyos в Linux для отладки чистого программного обеспечения без аппаратной части | | | 2022. 11 | Оптимизирована структура драйверов | | | 2022. 12 | Устранены ошибки версии V8.0.0, обновлены примеры для совместимости с версией V8 | | | 2023. 01 | Включен использование алгоритмических модулей, часто используемые вычислительные классы помещены внутрь | | | | Изменён способ конфигурации BabyOS, используется Kconfig | | | 2023. 02 | Завершена реализация всех планируемых функций KV 0.3 | | | 2023. 03 | Переработаны драйверы Wi-Fi и управление динамической памятью | | | | Удалён модуль AT, добавлены очереди FIFO | | | 2023. 04 | Добавлен модуль b_mod_wifi для взаимодействия со всеми модулями Wi-Fi | | | 2023. 05 | UTC время изменено с базового года 2000 на Yöntem 1970 | | | | Добавлены интерфейсы установки и чтения UTC времени | | | | Tick увеличен до типа uint64_t | | | 2023. 06 | Добавлен выбор вывода информации о заявках и освобождении памяти | | | | Устранены ошибки очередей; добавлены интерфейсы регистрации и вызова прерываний | | | | Добавлена функциональность io многоканального передачи select | | | 2023. 07 | В директории core добавлены модули b_task, b_timer, b_queue, b_sem | | | | Устарела библиотека b_util_uart, её функции перемещены в b_hal_uart | | | 2023. 08 | Устранены грамматические ошибки, добавлен слой сервисов | | | 2023. 09 | Добавлена третья сторона код arm-2d, оптимизированы spi интерфейсы и драйверы экранов | | | 2023. 10 | Устранены несколько ошибок. Добавлен mcu.py для удобства добавления новых MCU, оптимизирован b_config.py при недействительности пути bos | | | 2023.11 | Устранены проблемы с имитацией IIC интерфейса; задержка MS больше не зависит от TICK | | | | Добавлены драйверы ICM20948 + QMC5883L + QMI8658A | | | | Добавлены библиотеки QRCode и соответствующие программные модули | |12 | Добавлено внешнее библиотечное программное обеспечение LWIP, модуль B_MOD_NETIF позволяет пользователям избежать необходимости миграции LWIP | | | Январь 2024 | Добавлен модуль B_SRV_TCPIP для получения времени NTP<br>Улучшена работа интерфейса B_MOD_NETIF, реализованы клиентские и серверные коды TCP/UDP, а также интерфейсы PING | | | Февраль 2024 | Переработана часть кода сетевых интерфейсов, унифицированы сетевые операционные интерфейсы | | | Март 2024 | Переработан код модулей Wi-Fi для совместимости с сетевыми интерфейсами, теперь поддерживаются компиляторы Renesas | | | Апрель 2024 | Добавлены датчики жестов и внешние библиотеки TinyUSB | | | Май 2024 | Улучшен протокол BabyOS, использованы новые версии кода для примеров OTA; добавлена внешняя библиотека LVGL | | | Июнь 2024 | Добавлен модуль B_MOD_SSL для запроса HTTPS-интерфейсов, в HAL-слое добавлен интерфейс watchdog | | | Июль 2024 | Переработан модуль B_MOD_FS, унифицированы интерфейсы работы с файловой системой | | | Август 2024 | Исправлены ошибки в модуле Modbus, в HAL-слое добавлен интерфейс DMA | | | Октябрь 2024 | Добавлен сервис передачи файлов | || Ноябрь 2024 | Внедрено программное обеспечение Lua, обновлено программное обеспечение cm_backtrace | |