![GitHub](https://img.shields.io/github/license/notrynohigh/BabyOS)![GitHub language count](https://img.shields.io/github/languages/count/notrynohigh/BabyOS)![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/notrynohigh/BabyOS)

![](https://gitee.com/notrynohigh/BabyOS/raw/dev/doc/2.png)

# 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 для конфигурирования и сборки кода.

![b_config](https://foruda.gitee.com/images/1674379348907249447/3b414522_1789704.gif)

# 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 для обновлений:

![qq](https://gitee.com/notrynohigh/BabyOS/raw/master/doc/qq.png) ![qrcode](https://gitee.com/notrynohigh/BabyOS/raw/master/doc/qrcode.jpg)# История обновлений| Дата     | Новые функции                                               | Примечание |
 | -------- | ------------------------------------------------------------ | ---------- |
 | 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 | |