Тёмный

Using C++14 in an Embedded “SuperLoop” Firmware - Erik Rainey - CppCon 2022 

CppCon
Подписаться 150 тыс.
Просмотров 16 тыс.
50% 1

cppcon.org/
---
Using C++14 in an Embedded “SuperLoop” Firmware - Erik Rainey - CppCon 2022
github.com/CppCon/CppCon2022
This presentation covers what the execution environment of an embedded "superloop" firmware is in order to describe later why certain C++14 language and library features are used and others are not. This environment lacks many basic features and capabilities that traditional C++ programmers may think are common place but is able to be programmed in C++14 (and later) with a specific design paradigms and guidelines. Programmers with deeply embedded C experience will be familiar with some of the limitations of the environment but may find the C++ solutions quite refreshing! The talk will conclude with some comments on C++17 / C++20 features which will be quite valuable to embedded environments of all types.
---
Erik Rainey
Erik is a Senior Software Engineer at Amazon working in the Prime Air on low-level/embedded firmware written in C++ for drones. He has got more than 20 years of professional experience making 21st century technologies on embedded devices which can blink LEDs. He's also been a contributor to Khronos's OpenVX 1.0 specification.
---
Videos Filmed & Edited by Bash Films: www.BashFilms.com
RU-vid Channel Managed by Digital Medium Ltd events.digital-medium.co.uk
#cppcon #programming #firmware

Наука

Опубликовано:

 

16 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 15   
@AnthonyDentinger
@AnthonyDentinger Год назад
Boy, as someone who’s worked a moderate amount in embedded, this talk packs a _lot_ of highly advanced information (especially in the second half of the talk), from higher-level implementation structure to lower-level programming techniques and engineering tools. Gonna have to re-watch it a few times to grasp all of these ideas. Certification is a somewhat mysterious topic to me, but I feel like this could help wrap my head around what it entails in a little bit more detail.
@MarcoBergamin
@MarcoBergamin Год назад
Very interesting talk. Thanks!
@CppCon
@CppCon Год назад
Very pleased to hear that you found this presentation informative.
@victorchavez9412
@victorchavez9412 Год назад
I liked the idea of Heap withdrawal. This is something that should be teached in Embedded Systems courses.
@mytech6779
@mytech6779 Год назад
When a catalog retailer knows more about the baseline requirments of aircraft programing than Boeing. (Some ashat tried to use Java for landing gear control... the they had to figure out an intermittant critical bug that was finally diagnosed as the garbage collector engaging at the same moment that the activation signal came in. The JVM has its advantages, but critical embedded machine control is not even close to one of them.)
@vadymsenkiv6087
@vadymsenkiv6087 Год назад
Great talk, a lot of practical points
@RadimPolasek
@RadimPolasek Год назад
great summary, thank you
@michaelkeck5580
@michaelkeck5580 Год назад
Very informative and well presented talk! What font is used for the slides? Really like it 🙂.
@Heater-v1.0.0
@Heater-v1.0.0 6 месяцев назад
I can appreciate that when they started development Rust was not up to the task at the time. However I'm amazed he gave the usual C/C++ developers take on Rust, that Rust requires "unsafe" to access hardware, their programs live on the hardware, therefore the safety guarantees of Rust are not worth it. This makes no sense to me. When Rust sits on embedded systems all hardware is accessed through a "Hardware Abstraction Layer" which of course contains "unsafe", but that is still only a small part of your code, Rust's type system and memory safety are still in the bulk of your code. This is a far better situation than having your entire code base unsafe. Those "unsafe" blocks in Rust clearly delineate code that needs extra care. Amazed he said that whilst at the same time saying he liked the correctness the type system of C++ offers. It's a contradiction.
@schiang
@schiang Год назад
15:58 Can somebody give me a hint about the possible signature of the GetTaskList function in the slide? Task is an abstract class so I cannot declare an array of it. But if I declare an array of pointers to Task then the implementation of TaskManager::RunAllTasks() won't be the same. It still works though, but I really want to know how to do it the way the slide shows. Thank you.
@ErikRainey
@ErikRainey Год назад
It could return a reference to a statically allocated array or std::array of Task references.
@richardvonlehe4581
@richardvonlehe4581 Год назад
I was hoping you would go into more detail as to why you would choose a superloop over an RTOS-based design. I find the "scheduling" aspect of superloops, i.e. manually limiting task run times (essentially cooperative multitasking), to be frustrating when compared to preemptive priority based scheduling in an RTOS.
@richardvonlehe4581
@richardvonlehe4581 Год назад
I commented too soon. At minute 43 you do give some reasoning. My understanding is that the superloop was chosen due to the overall simplicity of the things the microcontroller was responsible for. I'd be curious what the flight controller of the Prime Air drone was using for an OS.
@czbero
@czbero Год назад
So heart wrenching to see best minds in an industry working on such pointless projects like delivering people their treats in an ever-shortening timespan.
@Heater-v1.0.0
@Heater-v1.0.0 6 месяцев назад
Please God Dave us from having 100's of drones buzzing around our neighbourhoods delivering junk to people.
Далее
50 YouTubers Fight For $1,000,000
41:27
Просмотров 135 млн
меня не было 9 дней
12:48
Просмотров 2,3 млн
Why I Chose Rust Over Zig
33:18
Просмотров 40 тыс.
How To Become An Embedded Software Engineer?
10:30
Просмотров 123 тыс.
Applied C++20 Coroutines - Jim Pascoe - ACCU 2023
1:15:43
Здесь упор в процессор
18:02
Просмотров 344 тыс.
Собери ПК и Получи 10,000₽
1:00
Просмотров 2,7 млн