Операционные системы / Linux / Zephyr / HAL и BSP / ARC-V

2024 ж. 17 Мам.
6 027 Рет қаралды

В гостях у «Битовых масок» - Алексей Бродкин из Synopsys. Он работает в компании уже 16 лет и сейчас руководит инженерами, которые разрабатывают Linux и операционные системы реального времени. Поговорим с гостем об особенностях ОС и их поддержки для разных процессоров и архитектур. А еще обсудим на примере ARC-V, зачем большому вендору вкладываться в создание процессорного семейства, которое будет использовать набор команд открытой архитектуры RISC-V.
Почему вероятность появления новой большой и полноценной операционной системы очень мала? Что представляет из себя уровень аппаратных абстракций в ОС? Можно ли начинать разработку операционной системы до появления микросхемы в кремнии? Как взаимосвязаны прерывания, их обработчики и планировщик задач? Ответы на эти и другие вопросы - в одиннадцатом эпизоде «Битовых масок».
Полезные ссылки:
• MicroPython: github.com/micropython/microp...
• Ticket spinloks в RTOS NuttX: github.com/apache/nuttx/pull/...
• Ticket spinloks в Zephyr RTOS: github.com/zephyrproject-rtos...
• Выпуск «Битовых масок» с Александром Разинковым: • Сетевые протоколы / Ге...
• Dashboard, который показывает изменение размера референсного приложения в Zephyr: stats.zephyrproject.org/testi...
• "Deep trace debug" от Synopsys: www.synopsys.com/company/reso..., www.synopsys.com/news/pubs/sn... и dvcon-proceedings.org/wp-cont...
• Статья “The Night Watch” - оригинал на английском: www.usenix.org/system/files/1...
The Night Watch, перевод №1: erra.livejournal.com/358792.html
The Night Watch, перевод №2: habr.com/ru/articles/203276/
✅ Подписывайтесь на Telegram-канал подкаста: t.me/+bx50QfUlw4pkZDEy
🎧 Слушайте «Битовые маски» на других платформах:
Яндекс.Музыка: music.yandex.com/album/26508178
Apple Podcasts: podcasts.apple.com/ru/podcast...
Все площадки: engineer.yadro.com/podcasts/c...
00:00:00 - Тизер
00:01:31 - Вступление
00:01:50 - Представление Алексея
00:02:41 - Начало карьеры и текущая деятельность Алексея
00:07:00 - Микроконтроллер vs. микропроцессор
00:10:43 - ОС, над которыми работает команда Алексея
00:11:45 - Почему может появиться/не появиться еще одна ОС/RTOS
00:16:13 - Что такое ОС и зачем она нужна
00:20:41 - Создание драйверов
00:27:23 - Микроядерные ОС
00:32:40 - Уровень аппаратных абстракций: HAL и BSP
00:40:29 - разница между полномасштабной ОС и RTOS
00:47:14 - Миграция фич из полномасштабных ОС в RTOS
00:57:41 - POSIX как механизм абстракции
01:01:16 - Дорастет ли Zephyr до полномасштабной ОС
01:05:59 - Управление проектом Zephyr RTOS
01:08:41 - Поддержка новой архитектуры в Linux
01:18:18 - Linux в гетерогенных системах
01:22:44 - Использование компонентов других производителей крупными производителями
01:26:11 - Обработка прерываний и планировщик задач в ОС
01:36:50 - Семейство ARC-V на базе RISC-V от Synopsys
01:50:03 - Заключение
01:50:41 - Благодарности
#linux #rtos #riscv #zephyr

Пікірлер
  • ребята, подкасты просто огонь. но выставляйте уровень звука с микрофонов, пожалуйста. или на монтаже. очень тихо

    @MrCter@MrCter21 күн бұрын
    • Добрый день! Спасибо за обратную связь, рады, что нравится подкаст. Послушали на разных устройствах - со звуком всё в порядке, всех спикеров слышно хорошо даже не на полной громкости динамиков. Возможно, стоит послушать подкаст с другого устройства и выставить громкость на нужный уровень

      @ultimate_engineer@ultimate_engineer21 күн бұрын
    • @@ultimate_engineer Проблема звука есть, тихо на максимальной громкости. При этом другие ролики с ютуба звучат нормально на значительно меньшей громкости, дело не в устройстве.

      @OldAndy@OldAndy21 күн бұрын
    • Да, действительно другие ролики несколько громче, постараемся разобраться, что можно сделать в следующих выпусках

      @eklepilkina@eklepilkina21 күн бұрын
    • @@eklepilkina я конечно понимаю, что такой жанр как подкаст лучше недогрузить по звуку, чем перегрузить. просто очень ютубная реклама, которая перегружена априоре, по ушам бьет, когда влазит... я без претензий, просто ваш подкаст очень нравится, ну и хочется помочь вам сделать ваш продукт качественнее. Добра вам :)

      @MrCter@MrCter21 күн бұрын
    • @@MrCter Спасибо большое за обратную связь, это полезно :)

      @eklepilkina@eklepilkina21 күн бұрын
  • Было интересно, познавательно и увлекательно. Докладчик, большой молодец, ведущие тоже.

    @dmitrysysoev6750@dmitrysysoev675017 күн бұрын
  • отличная встреча. спасибо!

    @nikolaykozlov4888@nikolaykozlov488821 күн бұрын
    • Спасибо вам! Рады, что понравился выпуск!

      @ultimate_engineer@ultimate_engineer21 күн бұрын
  • Совершенно случайно наткнулся. Очень качественно и доступным языком о возможностях и нюансиках-проблемах. Отличный подкаст, спасибо.

    @amaxkaluga@amaxkaluga21 күн бұрын
    • Спасибо большое! Стараемся!

      @ultimate_engineer@ultimate_engineer21 күн бұрын
  • Спасибо большое за информацию. Интересно. Вызывает интерес к профессии.

    @nemonautilus8057@nemonautilus805719 күн бұрын
    • Спасибо вам! Очень радостно читать такие комментарии!

      @ultimate_engineer@ultimate_engineer19 күн бұрын
  • DSP-ядро для датчика освещения... М-м-м-м! Сразу чувствуется специалист. *Ох, и объясняльщик, конечно! >Периферия на кристалле -- это физическое устройство, собранное из логических элементов, транзисторов и т.д. и подключенное физически к центральному процессору либо как набор специальных регистров, либо как набор специальных адресов памяти. Т.е. когда мы пишем в эти специальные регистры или адреса, мы физически меняем уровни напряжений на каких-то входах и выходах этого внешнего для процессора устройства. Также периферия может быть внешней по отношению к кристаллу, как у "больших" процессоров. Тогда ей выделяется какой-то диапазон адресов памяти, а в ней самой должен быть декодер адреса, который позволяет ей понимать, когда происходит обращение к ней, а когда не к ней. Так, например, подключаются внешние микросхемы оперативной памяти, и доступ к ней оказывается принципиально совершенно таким же, как ко внутренней: просто используем нужные адреса и всё. >Когда мы в коде оперируем непосредственно регистрами или адресами памяти для доступа к какому-то оборудованию/периферии -- это no-HAL, т.е. без абстракции. Порой этот уровень бывает нужен либо если HAL не предоставлен (хотя в этом случае пишется свой), либо если нужен какой-то специфический режим работы оборудования, который предоставленный производителем HAL не реализует. >Когда у нас есть какие-то более или менее человекочитаемые абстракции (функции, структуры), которыми "обёрнут" низкоуровневый доступ, это и есть HAL. Обычно производитель условного чипа предоставляет некий комплект исходного кода и заголовочных файлов, который позволяет задействовать функционал оборудования в виде логических этапов: peripheryInit(), peripherySetConfig(), peripheryRead(), peripheryWrite() и так далее. Как правило, HAL предоставляемый производителем, позволяет заменять чипы одного семейства, не изменяя или минимально изменяя код. >BSP, как правило, строится уже поверх HAL и реализует функционал оборудования, которое находится за пределами чипа -- на плате. Т.е. мы для, например, включения красного светодиода, припаянного на плате, вместо того, чтобы в коде писать chip_pin_set_high(pin_12) /*red LED here*/ будем писать red_led(ON), например. Уровни (слои) абстракции могут отсутствовать. Например, BSP может обращаться к оборудованию минуя HAL, но это, естественно, плохо сказывается на переносимости. Также никто не запрещает вообще не использовать слои абстракции и писать что-то вроде ((volatile uint32_t*)(0x98677652ul)) = 0; Но тогда лучше сразу запастись галоперидолом.

    @Ma_X64@Ma_X6418 күн бұрын
  • Микроконтроллер отличается от универсального микропроцессора тем, что он всегда имеет набор универсальных дискретных портов ввода-вывода, а часто ещё и аналоговых, включающих ЦАП-АЦП. Также у микроконтроллеров могут быть встроенные таймеры и другие периферийные устройства, которые необходимы для организации управления различными устройствами, начиная от бытовой техники, типа термопода или стиральной машины, и кончая достаточно сложной промышленной автоматикой. Первые однокристальные микроконтроллеры фирмы Intel, выпущенные в 1976 году, основывались на гарвардской архитектуре и имели всего 64 байта встроенного ОЗУ, а также 1 Кб или 2 Кб встроенного ПЗУ. Память можно было расширить до 256 байт (адресная шина 8 бит), а максимальный размер ПЗУ - 4 Кб. Но даже с такими скромными ресурсами можно было создавать множество полезных устройств. Современные микроконтроллеры уже намного круче, могут содержать на борту уже мегабайты памяти и ОЗУ, иметь разрядность 32 или даже 64 бита, но главное, что у них всегда будет набор универсальных дискретных и аналоговых портов ввода-вывода, через которые они могут получать сигналы с различных датчиков или кнопок, а также управлять внешними исполнительными устройствами, двигателями, контакторами, соленоидами и т.п. Универсальный микропроцессор тоже может всё это делать, но только с помощью дополнительных микросхем, обеспечивающих ему ввод-вывод дискретных и аналоговых сигналов.

    @Mylnikov_Dmitry@Mylnikov_Dmitry18 күн бұрын
  • В принципе... в принципе... я с автором-докладчиком согласен (хотя я и отпетый виндоид), но... человек не понимает разницу между битиками-электрончиками и сигналами. Прискорбно

    @vladlenbulatov1022@vladlenbulatov102218 күн бұрын
    • Ну и в уровнях абстракции плавает, так скажем.

      @Ma_X64@Ma_X6418 күн бұрын
  • а когда знакомые слова начнутся?........и еще вопрос.....почему мне это ютуб выдал в рекомендациях?

    @user-bd8ts2zu9r@user-bd8ts2zu9r15 күн бұрын
    • возможно, Ютуб знает о вас больше, чем вы сами :))

      @ultimate_engineer@ultimate_engineer15 күн бұрын
  • ОСРВ нужны в РВСН в разных странах!!!!!!!

    @ko-prometheus@ko-prometheus15 күн бұрын
KZhead