No video

Introduction to RTOS Part 1 - What is a Real-Time Operating System (RTOS)? | Digi-Key Electronics

  Рет қаралды 861,215

DigiKey

DigiKey

Күн бұрын

Пікірлер: 269
@OdotRIH4KRC
@OdotRIH4KRC 17 күн бұрын
Without the help of Shawn many in the community would be lost. Thanks tons Shawn for all you do.
@rickpontificates3406
@rickpontificates3406 2 жыл бұрын
As a game programmer for 30 years, when I learned iOS Swift, I had to change my way of thinking about code because Swift doesn’t function like other languages I’ve used. In Swift, there is NO “main loop”. In fact, the Apple device’s OS is the main loop of your app. Everything in your app is accessed by interrupt handling, either a timer interrupt or a human interrupt, like a button push.
@mieszkogulinski168
@mieszkogulinski168 9 ай бұрын
Same in JavaScript, where we also don't have a main loop, programs are functions responding to events like clicking a button (or in case of Node.js like an incoming server request). And the browser is the "operating system" (or Node.js or Bun or whatever else). Okay, a function calling itself recursively using requestAnimationFrame could be something like a "main loop", it's done mostly in games using canvas element...
@benargee
@benargee 5 ай бұрын
​@@mieszkogulinski168 if swift and JS are the same in this regard, they are event driven languages and a loop is still involved, the event loop.
@sirifail4499
@sirifail4499 4 ай бұрын
That’s exactly what I felt the first few times I wrote BREW Apps (Qualcomm’s missed opportunity to become Android).
@MattKremer
@MattKremer 3 жыл бұрын
This is exactly the informational/tutorial series I've been looking for. Even better I found it after it's all done, so I can go straight through it! Thanks!
@bryanst.martin7134
@bryanst.martin7134 3 жыл бұрын
I remember 2 decades back when I got a little catalog from them. Only the size of a Readers Digest condensed book, for those that remember those. Now they sit prominently and honorably on the World stage, with a catalog too big to ship, and CS reputation unmatched in my history. Keep it up!
@saganasimov4891
@saganasimov4891 3 жыл бұрын
This video series is a goldmine for me, as I want to pursue embedded systems. Thank you very much for this and more videos to come such as this.
@user-hl7xh8sm5q
@user-hl7xh8sm5q 2 жыл бұрын
Thank you, Dr. Digi-Key. In real time, the narration is displayed in text in the right window of the video. This feature is very useful for me, who has never spoken English.
@jzero4813
@jzero4813 3 жыл бұрын
7:40 To be fair, an ESP32 is much cheaper than an Arduino, and has BT/WiFi so I tend to use them even for projects they are wildly overpowered for. Super loops are great for simple projects just due to the law of fewer moving parts. Faster to develop, lower surface area for bugs. Project complexity is the primary deciding factor. Most industrial automation, for example, runs on PLCs, and they are almost universally super loop architectures. Huge scale, loads of I/O, long programs, but still low complexity. Excellent summary, in any case.
@akulanvn381
@akulanvn381 2 жыл бұрын
You explained it so perfectly. I was having such hard time understanding RTOS in my embedded systems class this helps incredibly. Thank you for being so informative.
@ShawnHymel
@ShawnHymel 2 жыл бұрын
That's exactly what inspired me to do this series--I was not a fan of how they were taught in school :)
@fadieid5638
@fadieid5638 Жыл бұрын
How can I take an embedded systems class like yours?
@tingoyeh4903
@tingoyeh4903 2 жыл бұрын
Great video. Other tutorial online are either too hard or too basic, this series of video just match the hole in this field.
@kenwallace6493
@kenwallace6493 3 жыл бұрын
This intro is as good as any I've seen, especially relevant for deciding if the complexity of RTOS is warranted. In my case, it's not but I feel better sticking with the super loop.
@TheMateusrex
@TheMateusrex 3 жыл бұрын
Just starting a career in embedded systems, and I'm looking forward to your tutorials. I like your style.
@ArjanvanVught
@ArjanvanVught 3 жыл бұрын
@MichaelKingsfordGray So what would it be? C++ ? Where is FreeRTOS based on? Where is ChibiOS based on? Where is Linux RT based on? All on "C" ?
@ArjanvanVught
@ArjanvanVught 3 жыл бұрын
When exploring embedded systems, then it is also worthwhile looking at the Orange Pi Zero board. This gives you 4 ARM A7 cores with proper DMA EMAC Ethernet.
@TheMateusrex
@TheMateusrex 3 жыл бұрын
@@ArjanvanVught Thanks!
@gaminggoneviral8063
@gaminggoneviral8063 3 жыл бұрын
Yes!!! Edge Ai and now RTOS!! Love your stuff! please dont stop Sir! These things are actually the next biggest trends. Thanks Sir.
@jerrywatson1958
@jerrywatson1958 2 жыл бұрын
It's the bowtie that keeps me glued. LOL. Thanks for adding a bit of levity to this talk.
@finnyphilipbiju4520
@finnyphilipbiju4520 3 жыл бұрын
Thanks for coming up with this tutorial. Was really waiting to explore more on RTOS
@EarlWallaceNYC
@EarlWallaceNYC 3 жыл бұрын
I've been looking for Shawn. since he left "that other maker site". I like Shawn's style, and his teaching style works for me. He and Digi-key get my vote and more of my business.
@ShawnHymel
@ShawnHymel 3 жыл бұрын
Thank you for your kind words!
@tonyfremont
@tonyfremont 3 жыл бұрын
Glad to see you back at it. I watched all your Arduino videos today, and I've seen all your STM32 videos as well. This is awesome content, and I can't wait for the next video in this series.
@mattnielsen1468
@mattnielsen1468 3 жыл бұрын
This series is a godsend. Excited for the upcoming tutorialsm
@veralagarwal2045
@veralagarwal2045 3 жыл бұрын
Yeahhh!!.. After learning RTOS in books and Online resources, I got the best from Shawn.
@DeltaPrismo
@DeltaPrismo 2 ай бұрын
Looking to work with that in the future. It's a awesome vídeo. Computer engineer student here ;)
@mohamedfaroukel-alem7253
@mohamedfaroukel-alem7253 3 жыл бұрын
Guy, your explanation is so simple and clear
@thosewhowish2b693
@thosewhowish2b693 3 жыл бұрын
Really not sure what I dig more, the presentation or the music. Great job!
@salmanali2719
@salmanali2719 3 жыл бұрын
Cannot wait for this series to be completed.
@yash1152
@yash1152 3 жыл бұрын
6:59 hardware comparison chart 9:52 "Any board will work as long as they've an associated arduino package"
@mondherbenromdhane2069
@mondherbenromdhane2069 3 жыл бұрын
9:52 I can already hear the booooooo's
@ko-Daegu
@ko-Daegu 3 жыл бұрын
@@mondherbenromdhane2069 Why thou?? Also do I need engineering background as I got none
@enricosaccheggiani3192
@enricosaccheggiani3192 3 жыл бұрын
Very good video, I have subscribed , compliments. Many teachers didn't know the difference between thread and task, only this is worth the video
@mrfudd13
@mrfudd13 3 жыл бұрын
Dude: the ambush music is too loud!
@ShawnHymel
@ShawnHymel 3 жыл бұрын
Noted, thank you. It will be fixed for ep 3 and beyond.
@cernejr
@cernejr 3 жыл бұрын
@@ShawnHymel Thank you.
@nobody2937
@nobody2937 Жыл бұрын
Absolutely agree...
@alanyorinks805
@alanyorinks805 2 жыл бұрын
Thanks for the excellent series. Explains FreeRTOS in an approachable manner including excellent examples and tips.
@nisar-systemarchitect
@nisar-systemarchitect 3 жыл бұрын
Thanks Shawn, the tutorial is very nice. One request would like to make is, music is too loud and your voice is quite low, please make adjustment for better experience. Regards
@ShawnHymel
@ShawnHymel 3 жыл бұрын
Thanks for the heads up! I'll work on getting the volume down of that intro/outro music.
@UmairAhmadh
@UmairAhmadh 3 жыл бұрын
It is really awesome to see this. -A fan
@MultiSchuman
@MultiSchuman 3 жыл бұрын
What is RTOS? Ans: its like any other operating system. Very helpful thankyou.
@KangJangkrik
@KangJangkrik 3 жыл бұрын
Finally... Event-driven microcontroller for real! 😁
@amirphilip2234
@amirphilip2234 Ай бұрын
Really impressive explanation
@christianlohmann8577
@christianlohmann8577 3 жыл бұрын
I remember, many moons ago, I had a RTOS version on an EPROM cartridge attached to my Atari ST. Many moons ago.
@JohnWasinger
@JohnWasinger 3 жыл бұрын
My older brother developed on Atari 1040 ST and a 520 ST computers. The operating system on those 68000 based processor systems was called TOS. The OS was burned onto internal ROMS on the main board. There was something called "realtime" for a musical cartridge back on Jun of 1991.
@christianlohmann8577
@christianlohmann8577 3 жыл бұрын
@@JohnWasinger Tramiel Operating System ... good ol’ days. Enjoyed that one quite a bit with the M68k family over the years. Was used where I had my first programmer job too for various application. Even developed a TokenRing network and integration into TOS.
@rishiktiwari
@rishiktiwari 3 жыл бұрын
Much awaited Topic!
@RakshithPrakash
@RakshithPrakash 3 жыл бұрын
Top-notch video, please continue this series, thanks
@manjchana
@manjchana 3 жыл бұрын
This is such a great video, very much looking forward to the next one!
@thecoolaravind
@thecoolaravind 3 жыл бұрын
Thanks @Shawn Hymel: Looking forward to the rest of the parts on RTOS !!!
@AleemAhmed
@AleemAhmed 3 жыл бұрын
Everything is best explained in this video. Cleared the conecpets. Thanks 👍
@Kravch96
@Kravch96 2 жыл бұрын
Shawn you are a literal embedded god. Thank you so much for your videos
@JohnJonesJMJAtlanta
@JohnJonesJMJAtlanta 3 жыл бұрын
Clearly explained, clearly articulated. Thank you.
@PrithaMajumder
@PrithaMajumder 2 ай бұрын
Thank You So Much for This Amazing Video Video Lecture - 1 Completed
@alexandrecvl
@alexandrecvl 3 жыл бұрын
TSpark is the most interesting rtos architecture. The only really original architecture in the market.
@luizteixeira6624
@luizteixeira6624 2 жыл бұрын
Very good introduction video for RTOS! thank you for sharing this knowledge
@TheAndjelika
@TheAndjelika 3 жыл бұрын
My question. Where is the line in between assembler code (machine code) run by CPU, so when you create your code on that level, interrupts, loops, and where RTOS begins? I have feeling it is somehow in between just machine code and GPOS, a bit advanced than super loops.
@ArjanvanVught
@ArjanvanVught 3 жыл бұрын
With a super-loop you would need to implement a state-machine. Hence no locking of tasks. Hence no context switching overhead.
@tillabakos2248
@tillabakos2248 3 жыл бұрын
A bow tie? A have to take a bow in front of such audacity. And yes, it is a great video indeed.
@dougsteel7414
@dougsteel7414 3 жыл бұрын
There are instances of asynchronous execution within a super loop. Either by calling inbuilt functions or using command patterns, although I guess functionally they're no longer a loop even if they are structurally
@deathvall3y
@deathvall3y 3 жыл бұрын
very much resourceful, waiting for the next video 💙
@reshan8239
@reshan8239 3 жыл бұрын
Exactly what I needed for my PowerPoint presentation about OS. Thanks man
@AmitKumar-yw7ri
@AmitKumar-yw7ri 3 жыл бұрын
Great i am searching for video like this u know what i found u just one day after u just post ur video, thank u very much i am very eager for next video.
@AgainPsychoX
@AgainPsychoX 3 жыл бұрын
It's so well done video. I love the series.
@bharathishrinivasantr4809
@bharathishrinivasantr4809 Жыл бұрын
Very well illustrated. Loved the content delivery
@kurtttttttt
@kurtttttttt Жыл бұрын
THE MUSIC IS TOO LOUD
@jeroenfeher8107
@jeroenfeher8107 3 жыл бұрын
9:28 Got it. Won't use it then. No guarantee on it's future paths in that case. Your videos are great though for understanding these concepts.
@RinksRides
@RinksRides 3 жыл бұрын
not firing a spark plug = not a big deal, misfiring at the wrong time COULD be catastrophic though.
@ShawnHymel
@ShawnHymel 3 жыл бұрын
Good catch, thanks :)
@dylansternbeck9230
@dylansternbeck9230 3 жыл бұрын
My first experience with a RTOS was a lighting console that ran on VXWorks!
@dankilg4130
@dankilg4130 3 жыл бұрын
Very interesting. A multi-tasking Computer. Must be a real head- Ache to program. Wondering How many tasks can be performed In real time. Must be like dealing With a woman. Gods only real Time biological multitasking Creature.
@outlookha3330
@outlookha3330 3 жыл бұрын
Waiting for the next video!
@BavlyS
@BavlyS 2 жыл бұрын
Thanks for the great effort you put into making this great introduction.
@GrimpeurFou
@GrimpeurFou Жыл бұрын
Outstanding overview. Thank you!
@mikosoft
@mikosoft 2 жыл бұрын
So if I understand that correctly, the only difference between GPOS and RTOS is the way task switching is handled so that timing deadlines are met? But isn't this already possible in modern GPOSes as well?
@dmytrozota1904
@dmytrozota1904 2 жыл бұрын
Thank you for making these tutorials)
@vijayalakshmi-ir5jw
@vijayalakshmi-ir5jw 2 жыл бұрын
Well explained one... Thanks for sharing
@MisterWillow
@MisterWillow 7 ай бұрын
Wow, I just stumbled upon this channel by sheer luck! (Subscribed!)
@haraldhwick
@haraldhwick 3 жыл бұрын
How did I wander here? I was just watching documentary on ICs. This is interesting though :)
@kayakMike1000
@kayakMike1000 3 жыл бұрын
Scheduler is kinda the core of an RTOS... loading/unloading/start/stop/suspend/resume tasks is core RTOS. Interprocess communication comes next.
@MKDas
@MKDas 2 жыл бұрын
Really informative and helpful.
@hithere2561
@hithere2561 3 жыл бұрын
Thanks, great video but do you mind to turn down the music volume at the beginning - its waaaay louder then rest of the video
@ShawnHymel
@ShawnHymel 3 жыл бұрын
Thanks for the heads up! I'll work on getting the volume down of that intro/outro music.
@StephenMattison66
@StephenMattison66 3 жыл бұрын
Great video, great audio, thanks for the smart lapel mic!
@webfreezy
@webfreezy 3 жыл бұрын
Well, the music is too loud compared to the voice, otherwise it's ok
@StephenMattison66
@StephenMattison66 3 жыл бұрын
@@webfreezy No, it's great!
@dabay200
@dabay200 3 жыл бұрын
Nice video but you need to improve the sound quality - the voice level is too quiet and have ramp up the volume quite a bit.
@ultraderek
@ultraderek 3 жыл бұрын
I just set up some peg board in my workspace. I use so many freakin tools doing robotics and other mcu projects. I kind of wonder why I haven’t already been using peg boards.
@ShawnHymel
@ShawnHymel 3 жыл бұрын
Right?!? It took me a few years before I decided to put the pegboard up. It's incredibly handy!
@jerrywatson1958
@jerrywatson1958 3 жыл бұрын
I may be late but you earned a new sub today. I am going to invest in this kit. This looks fun, takes me back to my 8080 days as a kid.
@mav29
@mav29 3 жыл бұрын
so well explained love this video
@bertbrecht7540
@bertbrecht7540 3 жыл бұрын
This is top quality content. Thanks!
@sexygeek8996
@sexygeek8996 3 жыл бұрын
Nowadays many companies are putting Windows on everything just because they have a large pool of cheap programmers who don't know anything else. The products they make now are slower and less reliable than they were 30 years ago despite the vast improvements in hardware.
@penguin1714
@penguin1714 3 жыл бұрын
Thank you for making these videos!
@BDYH-ey8kd
@BDYH-ey8kd 3 жыл бұрын
You can run concurrent on super loop if you divide the tasks in switch statements and design non blocking, but this requires some years of experience.
@moiquiregardevideo
@moiquiregardevideo 3 жыл бұрын
The "divide tasks in switch statement" is what many call "state machine". More precisely, a hierarchy of state machines where each switch statement could be seen as a tree structure when matching the call tree.
@cyborglabs2272
@cyborglabs2272 3 жыл бұрын
thanks,,,,, very nicely described,,,,, one thing missing was the example of some rtos
@endofficecolo6850
@endofficecolo6850 2 жыл бұрын
@Digi-Key, do you have that keyboard for sale by any chance?
@ShawnHymel
@ShawnHymel 2 жыл бұрын
I don't think they do. It's a Varmilo VA87M, if you're curious.
@bennguyen1313
@bennguyen1313 3 ай бұрын
Does an RTOS' delay function (ex. FreeRTOS' vTaskDelay()), allow the scheduler to run other tasks? Actually, even if a low-priority task sits in a tight while(1), isn't the whole point of an RTOS to have the ability to wrestle away the CPU after too much time? I have a motor control application, and would like if a task receives a command in the queue, it will move until it reaches the destination (30+ seconds). If another command is received while it's moving, it must stop and go to the new position. Maybe the task could look like: wait for queue command start motor moving Continuously check position and stop when reached OR stop when new queue command is received Would monitoring the position block/starve all other tasks? If so, what's the proper way for it to closely monitor position while still allowing the RTOS to run other tasks?
@shuewingtam6210
@shuewingtam6210 3 жыл бұрын
You said RTOS can do multitasking but what is the difference from multi core cpu, that can also do multi tasks with core funtioning individually?
@ShawnHymel
@ShawnHymel 3 жыл бұрын
Great question! A multi-core processor is something that's done in hardware: it allows you to run code concurrently on separate cores. An RTOS (or most OSes for that matter) can make it seem like you're running tasks concurrently (even on a single core) by rapidly switching between tasks. I recommend watching Part 2 to see how that's done. Some OSes are configured to handle multi-core systems, so you can have multiple cores that switch among tasks (all running on top of the same OS). In Part 12 (to be released), I show how you can use FreeRTOS with a dual-core system.
@pipoyII
@pipoyII 3 жыл бұрын
Thank you Shawn!
@Astinsan
@Astinsan 2 жыл бұрын
Linux can do real time os … ubuntu studio for instance has the ability to do realtime… there are also commercial products like redhawk
@manfredbogner9799
@manfredbogner9799 2 ай бұрын
Sehr gut
@mithrandirthegrey7644
@mithrandirthegrey7644 Жыл бұрын
You can run normal Linux distros as RTOS by changing the scheduler from CFAS to FIFO. It's not super-duper accurate but it will do the job for 99.999 % of all hobby projects and probably 80 % of all commercial projects. FreeRTOS is great for small critical tasks. VXworks is to go-to for missiles, airplanes etc. where software is just a small part of the cost and things working as they should is worth lives or millions upon millions of dollars.
@ko-Daegu
@ko-Daegu 3 жыл бұрын
What do I need to be to understand this series cuz I got no electrician engineering background
@ShawnHymel
@ShawnHymel 3 жыл бұрын
You don't necessarily need a degree or be in any particular profession. This is an intermediate/advanced topic related to embedded systems. I recommend having some experience with Arduino and C/C++ to understand this series. There are lots of videos and courses out there to get you started with Arduino.
@tonysofla
@tonysofla 2 жыл бұрын
You did not mention state machine cooperative multitasking, a task doesn't hog the system but instead do snippets and then for example tell schedular to come back in 250ms with the option that a tasks IRQ can tell the event handler to run this task "right away" I wrote my own in 50lines of C code. example of usage: OS_Interval_Next(this,5*1024); // give it 5sec time before turning off swclk pin
@tommymairo8964
@tommymairo8964 3 жыл бұрын
5:08 You don't need to use multi-core processor for concurrency. If you have interrupt supported by hardware, why don't you use an external timer which fire interrupt every 1ms? So you could switch to the next task after the current task's quota expires.
@YourCRTube
@YourCRTube 2 жыл бұрын
This is _exactly_ how FreeRTOS works.
@NoProblem76
@NoProblem76 2 жыл бұрын
How does RTOS compare to coroutine?
@ShawnHymel
@ShawnHymel 2 жыл бұрын
Most RTOSes (like FreeRTOS) use pre-emptive scheduling, which allows tasks to interrupt other tasks whenever the scheduler decides to do so. In some RTOSes, you can turn off pre-emptive scheduling to turn it into cooperative scheduling, which allows you to use coroutines.
@chaitanyakanagala7950
@chaitanyakanagala7950 3 жыл бұрын
Great work 👍
@RegisMichelLeclerc
@RegisMichelLeclerc 3 жыл бұрын
On the principle, you can achieve all of this in a "superloop" by making sure every instruction will execute in a limited amount of time and will never hog the MCU to itself. For instance, when repainting your LCD screen (say, a 5110 LCD of 84*6 bytes), you could block the entire processor for the time to repaint the entire screen and call the function 20 times per second (you're going to kill yourself waiting for the RDY pin of the screen to become high), or repaint the screen one byte at a time and call the function at every loop (returning immediately if the RDY pin is low). Same goes with buttons, you check the state of the button once per loop instead of hogging the CPU with insane debounce delays, It's just a programming style, what's the point of adding a greedy layer of RTOS (in terms of time and memory) instead of accepting the challenges from the limitations of the processor?
@moiquiregardevideo
@moiquiregardevideo 3 жыл бұрын
For that example, RTOS are overkill. I may update more than one byte but not the entire screen on each calls. Maybe a cache could be best if RAM is many order of magnitude faster. Your code paint to a RAM buffer fast fast. Then, the paint compare if anything is different and update only what changed. The RTOS become necessary when the device must access wifi, ethernet, all brand of SD flash memory and all USB hub/mouse/keyboard/thumb drive that ever existed.
@WagonLoads
@WagonLoads 3 жыл бұрын
I have been running into a situation where I need something to be timed. The problem, is when the timeout occurs at some point in time when the loop is doing another process.. Let's say the loop takes 11 to 14 seconds to repeat and I want my screen to stay lit for 90 seconds.. I can't guarantee when the loop will check when the screen timer reached 90(not after). It can only tell if the set time has gone past the timeout.. (Just like your piston catastrophe reference). Is there anything like a timer interrupt?
@wahabfiles6260
@wahabfiles6260 3 жыл бұрын
so basically in normal OS scheduler is non-deterministic while in RTOS its deterministic?
@ShawnHymel
@ShawnHymel 3 жыл бұрын
Yes--that is well summarized. Note that heap allocation and access can be non-deterministic as well, which is why FreeRTOS lets you choose the heap allocation scheme (www.freertos.org/a00111.html). I talk about memory management and touch on this in a future episode.
@wahabfiles6260
@wahabfiles6260 3 жыл бұрын
@@ShawnHymel maks so much sense! subscribed to your channel as well.
@sexygeek8996
@sexygeek8996 3 жыл бұрын
If you want deterministic performance you should avoid using the heap, other than allocating everything you need on startup. Dynamic memory allocation is grossly overused nowadays.
@paullee1792
@paullee1792 3 жыл бұрын
Is that open source operating system?
@ciobanurivelino3844
@ciobanurivelino3844 6 ай бұрын
Unfortunately i tried to learn RTOS, to create an independent 6 timers with 1 relay output. Info and examples it's inexistent. Only example, was something with Semaphores. So, i created in Arduino with millis().
@derekdowns6275
@derekdowns6275 3 жыл бұрын
Anyone else miss Qnix RTOS? Most solid OS I've ever had the pleasure of using.
@madspaz77098
@madspaz77098 3 жыл бұрын
QNX is still a thing. Jaguar even used it in their infotainment systems. You can still buy licenses for the desktop OS too. I think it's owned by Blackberry now.
@LL-ue3ek
@LL-ue3ek Жыл бұрын
good video, need to crank up the volume a bit.
@phil7898
@phil7898 3 жыл бұрын
Great Video, but in your comparisson of RTOSs, you don't mention MS_Azure (ThreadX etc) [typical MS compexity, but FOC on STM32 & fully certified]
@ingenierocristian
@ingenierocristian 8 ай бұрын
Howdy, I understand the need to present these topics in a digestible and simple way, but could you please tell me where can I find more info?
@naasikhendricks1501
@naasikhendricks1501 3 жыл бұрын
RTOS are not difficult to debug . the issue with RTOS is the tools to do the debugging is crazy expensive and general difficult to implement as they so generic so it takes hours to implement.
@ArjanvanVught
@ArjanvanVught 3 жыл бұрын
Please bear in mind that in RTOS on a single core SoC, there is just one task running at a time.
@heroslippy6666
@heroslippy6666 3 жыл бұрын
so it actually benefits from having multiple cores?
@ShawnHymel
@ShawnHymel 3 жыл бұрын
This is correct, and it's something I show in the second episode. The ESP32 has two cores, which allows you to run 2 tasks concurrently, but if we only use one core (as I show in the examples), the processor is required to time slice the tasks, as only one can run at a time.
@ArjanvanVught
@ArjanvanVught 3 жыл бұрын
@@ShawnHymel Therefore with one core, you can also implement a big-loop state machine, hence there is no context switching overhead.
@ShawnHymel
@ShawnHymel 3 жыл бұрын
@@ArjanvanVught Yes. A super loop with a state machine is often a very good way to accomplish many (possibly most) goals with embedded code. An RTOS offers the benefit of easily switching back and forth between two tasks to give the illusion of running things concurrently (or actually running them concurrently on a multi-core system) . You can get a state machine to do that (e.g. switch tasks every 1 ms), but you've essentially written a scheduler by doing so (and thus incurring overhead) :)
@moiquiregardevideo
@moiquiregardevideo 3 жыл бұрын
@@ShawnHymel home made schedulers can avoid deadlock and starvation and priority inversion. Basically, when two threads compete for the same resource, one should timeout and manually perform a retry later.
@AjayKumar-fd9mv
@AjayKumar-fd9mv 3 жыл бұрын
Great post
SCHOOLBOY. Последняя часть🤓
00:15
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 13 МЛН
Harley Quinn's desire to win!!!#Harley Quinn #joker
00:24
Harley Quinn with the Joker
Рет қаралды 15 МЛН
Lehanga 🤣 #comedy #funny
00:31
Micky Makeover
Рет қаралды 29 МЛН
OMG what happened??😳 filaretiki family✨ #social
01:00
Filaretiki
Рет қаралды 12 МЛН
Real Time Operating Systems (RTOS) - Nate Graff
35:02
White Hat Cal Poly
Рет қаралды 50 М.
Embedded Software Engineering Interview Questions & Answers
10:24
Greidi Ajalik
Рет қаралды 56 М.
Harder Drive: Hard drives we didn't want or need
36:47
suckerpinch
Рет қаралды 1,6 МЛН
But, what is Virtual Memory?
20:11
Tech With Nikola
Рет қаралды 258 М.
Signals. I spent 2 years to understand this part.
21:24
kimylamp
Рет қаралды 217 М.
PROTOCOLS: UART - I2C - SPI - Serial communications #001
11:58
Electronoobs
Рет қаралды 1,4 МЛН
SCHOOLBOY. Последняя часть🤓
00:15
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 13 МЛН