I'd really like to see a reboot of this series. Particularly around the unique aspects of RTOS - deterministic timing and why we use them in medical and space applications
noooooooooooooo ...please dont end the series 😭... the amount of knowledge and information contained within it is sooo valuable...thank you so much for all your efforts though
By far the best online RTOS course available. Thank you so much for your effort with these videos. Very clear and organized topics and an amazing english accent. 👍🏻
Really great tutorial explaining RTOS! Concerning multi core usage you might introduce Amdahl‘s law to explain how much speedup can be expected from more cores. In addition: if you define an efficiency number as speedup factor devided by number of cores available it will become apparent how badly a multicore system scales up with the number of cores. This might be a nice new lecture. Thank you again!
Thank you for the fantastic 12-part series on Introduction to RTOS! I'm truly grateful for the clear and comprehensive way you explained complex concepts, making it much easier for me to understand.
This is awesome! Thank you so much for the series! I'm kinda bummed out that the series is coming to an end. It would be great if there were more episodes as there are a lot of topics that could still be covered!
Many thanks for the series. Good coverage of the essentials. Unfortunately I now have more competition in the RTOS programming market. I trust that others will use it for good, not evil.
This lectures are just pure gold.. i wish they do more of them and more extensive ..i would pay a lot for such a good level explainetions of those subjects.. i don't know of any online course compering to that
Man, so much work must have gone into this. Thanks for putting in the effort. This has been great at validating what I thought I knew and put my trust into.
As a Dumb-ass hobbyist weekend programmer, I have soooooo much to learn. My biggest problem now is that I am 70 and we all know that you cant teach an old dog new tricks. I have great admiration of young people programmers where they understand this stuff !
0:40 difference between AMP and SMP architecture s 4:08 demo 7:38 ESP-IDF dual cores 9:06 global and partitioned scheduling 11:05 multicore semaphore demo 14:58 challenge
I loved these videos, you've kept me exploring topics that I won't ever see in my college, Im pretty sure thst this will be highly important to everyone who are following the series professionally, including to me. Thank you so much for all your support Shawn!
Well done. So clear on a complex subject. I also like checking designs on a scope. And now scopes have such intelligent triggers you can really find rare glitches. The $100K tools I used at Bell Labs are now hobby priced ... nice!
Awesome video again! Can you elaborate some more on why to run BLE/WiFi related tasks on Core 0? In my program the ESP32 functions as a middle man between both protocols translating MQTT messages to commands sent to BLE devices. I'd like to get an idea on how to set this up correctly, core wise. Thanks in advance and keep up the good work!
Running BLE and WiFi tasks in Core 0 is just what Espressif decided to do as default. You can change it in ESP-IDF (esp32.com/viewtopic.php?t=9225). I don't know too much about those tasks honestly, as I haven't played much with them directly.
Thank you very much for such a detailed video series. I learned a lot of things very easily. Practical's on ardunio quite good to understand the concept.
In 13:07 how did he trigger on both signals simultaneously? The two square waves are not synced with each other. I only manage to trigger on one at a time and found no evidence on how it can be done on both. Great series, the best I've come across, thanks a lot Shawn ! ! Truly fantastic.
Since the watchdog timer has to fire if the scheduler isn't run often enough, it indicates that FreeRtos is NOT a preemtive RTOS but rather cooperative where each task MUST surrender the cpu to let other tasks run, rather than having it yanked from them when their time slice expires.
It’s still a preemptive RTOS, as the scheduler can preempt a low priority task to run a high priority task. You don’t have to yield the processor explicitly to allow other tasks to run. The WDT (which you can disable) forces you (the programmer) to yield regularly, but preemption can still occur.
Awesome tutorial, thanks for making it. Would you consider making a tutorial with other RTOSes like Zephyr? Zephyr seems to be more actively maintained und used in the industry.
I need to control four full H-Bridge driver chips based on the angle input of an absolute encoder, the calculation of the current RPM from that (0 to 10500 RPM), desired rate increase/decrease from a throttle, and calculated load. Converting degrees into nanoseconds for the RPM I find I need a controller that can set outputs based on timed interrupts (I think the most efficient method). Q: What controller processor and RTOS scheduler can reliably be used for those simple calculations along with time interrupts of 100ns increments for this to turn on or off output pins such as: 47600, turn on output pin4 48200, turn on output pin1 53900, turn off output pin 4 54500, turn on output pin 3 55200, turn off output pins 1 and 3 Thanks in advance...
It is interensting that core 0 is recommended be used for Wifi/BLE communication by defualt. If i do the straightforward thing and initilize Wifi.begin(..) in void setup() then it is going to run on core 1 (since setup task is running or core 1). However, if i force Wifi.begin() to be initialized in a task (w/10kByte stack) that is assinged to core 0, then both the wifi and its http get/post functions run on core 0, but this causes ESP crash many times (if Wifi is on core 1, then there is no crash at all). Does anyone face this behavior? Any thoughts? Anyway thank you Shawn for this fantastic playlist!!!
Would anyone know if it is possible to pin call back functions to the pro_cpu? I'm trying to run asyncwebserver call backs on core 0, but they run on core 1.
Hi Shawn, i rellay enjoy your videos and they are really full of information. Yet, i have a question. In the beginning of the video you are getting a watchdog timer error and esp32 reboots, Im having the same problem here. When put vTaskDelay(1); at the end of every task it goes away but i dont want the cores having any idle time so im trying to use taskYIELD(); but it gives that error. How can solve this? Thank you :D
So, what's the difference between xTaskCreate and xTaskCreatePinnedToCore but setting no affinity? And when would the second be used over the former? And thanks for the great series!
I'd really like to see a reboot of this series. Particularly around the unique aspects of RTOS - deterministic timing and why we use them in medical and space applications
noooooooooooooo ...please dont end the series 😭... the amount of knowledge and information contained within it is sooo valuable...thank you so much for all your efforts though
By far the best online RTOS course available. Thank you so much for your effort with these videos. Very clear and organized topics and an amazing english accent. 👍🏻
Shawn, thank you very much for all the effort that you put into making this series about RTOS.
I don't know what I would do without it
I'm using the ESP32 as part of my master thesis project and I have to say THANK YOU for the amazing series, it's been great and very helpful
Me too :DDD
I am using it for my bachelor thesis
What are the theses topics?
Really great tutorial explaining RTOS! Concerning multi core usage you might introduce Amdahl‘s law to explain how much speedup can be expected from more cores. In addition: if you define an efficiency number as speedup factor devided by number of cores available it will become apparent how badly a multicore system scales up with the number of cores. This might be a nice new lecture. Thank you again!
We need this series to continue, the challenges part is awesome
Thank you for the fantastic 12-part series on Introduction to RTOS! I'm truly grateful for the clear and comprehensive way you explained complex concepts, making it much easier for me to understand.
This is awesome! Thank you so much for the series!
I'm kinda bummed out that the series is coming to an end. It would be great if there were more episodes as there are a lot of topics that could still be covered!
What a great way to get introduced to RTOS. Thanks Shawn.
Many thanks for the series. Good coverage of the essentials.
Unfortunately I now have more competition in the RTOS programming market.
I trust that others will use it for good, not evil.
This lectures are just pure gold.. i wish they do more of them and more extensive ..i would pay a lot for such a good level explainetions of those subjects.. i don't know of any online course compering to that
Man, so much work must have gone into this. Thanks for putting in the effort. This has been great at validating what I thought I knew and put my trust into.
Thanks Shawn. Gonna go look for your courses out there for sure.
Thank you so much for this amazing series! The content is very clear and well-organized!
As a Dumb-ass hobbyist weekend programmer, I have soooooo much to learn. My biggest problem now is that I am 70 and we all know that you cant teach an old dog new tricks. I have great admiration of young people programmers where they understand this stuff !
0:40 difference between AMP and SMP architecture s
4:08 demo
7:38 ESP-IDF dual cores
9:06 global and partitioned scheduling
11:05 multicore semaphore demo
14:58 challenge
I wish every tutorial on youtube had this quality. Thank you
Thank you so much, that's a nice series!
Thank you very much for the series Shawn! I look forward to your any of your future series!
Wow, thank you for this great series. Without it I would have been lost
I loved these videos, you've kept me exploring topics that I won't ever see in my college, Im pretty sure thst this will be highly important to everyone who are following the series professionally, including to me.
Thank you so much for all your support Shawn!
Well done. So clear on a complex subject. I also like checking designs on a scope. And now scopes have such intelligent triggers you can really find rare glitches. The $100K tools I used at Bell Labs are now hobby priced ... nice!
Thank you so much for the best RTOS ever series.
Truly excellent series. David Byrne and Alton Brown vibes.
The end... NO!!!!!!
Thanks for a great series; really appreciated!
Thank you Shawn this has been an interesting and (potentially) useful series, now I just need to sit down and take the time to try and implement it!
Hands down the best freeRTOS series!
Thank you very much, Shawn.
Thanks for a great and fantastic series. Very informative and instructive.
Best !!!! I learnt so much from the series.
I will definitely use this concepts to make a cool project in the coming days
Thank you very much for this series, it was very helpful for me.
Awesome! RTOS series of videos Shawn. Please do one on core MQTT for the ESP32.
Great series, A LOT of content in a short amount of time, with really useful practical examples. Thank you!
Awesome video again! Can you elaborate some more on why to run BLE/WiFi related tasks on Core 0? In my program the ESP32 functions as a middle man between both protocols translating MQTT messages to commands sent to BLE devices. I'd like to get an idea on how to set this up correctly, core wise. Thanks in advance and keep up the good work!
Running BLE and WiFi tasks in Core 0 is just what Espressif decided to do as default. You can change it in ESP-IDF (esp32.com/viewtopic.php?t=9225). I don't know too much about those tasks honestly, as I haven't played much with them directly.
Thank you very much for such a detailed video series. I learned a lot of things very easily. Practical's on ardunio quite good to understand the concept.
excellent series. thank you so much for making this!
Thanks a lot Shawn! This series really helped!
This series of videos was pretty dammed great. Thanks for making them and doing the work. It was super duper useful!
In 13:07 how did he trigger on both signals simultaneously? The two square waves are not synced with each other. I only manage to trigger on one at a time and found no evidence on how it can be done on both.
Great series, the best I've come across, thanks a lot Shawn ! ! Truly fantastic.
Thanks for the series, very informative, well presented.
Excellent series.
I would pay for this. Thanks a lot...
Thank you very much for this knowledge with us it is very use full to us. Thank you.
It was a great Series, I learned a lot, thank you so much for all your effort.
Brilliant explanation skills!
Good work Shawn.
Excellent Tutorial learned a lot, but it was like drinking out of a fire hose. Thanks very much for a useful detailed explanation
Wow, these videos really helped my out a lot. Thanks for putting in the time to make these.
Thank you for this amazing series
Since the watchdog timer has to fire if the scheduler isn't run often enough, it indicates that FreeRtos is NOT a preemtive RTOS but rather cooperative where each task MUST surrender the cpu to let other tasks run, rather than having it yanked from them when their time slice expires.
It’s still a preemptive RTOS, as the scheduler can preempt a low priority task to run a high priority task. You don’t have to yield the processor explicitly to allow other tasks to run. The WDT (which you can disable) forces you (the programmer) to yield regularly, but preemption can still occur.
Awesome tutorial, thanks for making it. Would you consider making a tutorial with other RTOSes like Zephyr? Zephyr seems to be more actively maintained und used in the industry.
Awesome Shawn thanks for sharing this knowledge ❤️❤️❤️❤️
so thank you .very valuable tutorial.
I need to control four full H-Bridge driver chips based on the angle input of an absolute encoder, the calculation of the current RPM from that (0 to 10500 RPM), desired rate increase/decrease from a throttle, and calculated load. Converting degrees into nanoseconds for the RPM I find I need a controller that can set outputs based on timed interrupts (I think the most efficient method).
Q: What controller processor and RTOS scheduler can reliably be used for those simple calculations along with time interrupts of 100ns increments for this to turn on or off output pins such as:
47600, turn on output pin4
48200, turn on output pin1
53900, turn off output pin 4
54500, turn on output pin 3
55200, turn off output pins 1 and 3
Thanks in advance...
It is interensting that core 0 is recommended be used for Wifi/BLE communication by defualt. If i do the straightforward thing and initilize Wifi.begin(..) in void setup() then it is going to run on core 1 (since setup task is running or core 1). However, if i force Wifi.begin() to be initialized in a task (w/10kByte stack) that is assinged to core 0, then both the wifi and its http get/post functions run on core 0, but this causes ESP crash many times (if Wifi is on core 1, then there is no crash at all). Does anyone face this behavior? Any thoughts? Anyway thank you Shawn for this fantastic playlist!!!
Really nice serie of videos
Thank you so much .....
Would anyone know if it is possible to pin call back functions to the pro_cpu? I'm trying to run asyncwebserver call backs on core 0, but they run on core 1.
Hi Shawn, i rellay enjoy your videos and they are really full of information. Yet, i have a question. In the beginning of the video you are getting a watchdog timer error and esp32 reboots, Im having the same problem here. When put vTaskDelay(1); at the end of every task it goes away but i dont want the cores having any idle time so im trying to use taskYIELD(); but it gives that error. How can solve this? Thank you :D
Great videos, thanks!!!
So, what's the difference between xTaskCreate and xTaskCreatePinnedToCore but setting no affinity? And when would the second be used over the former? And thanks for the great series!
Great full
Thank you so much for the curse
What is difference between v and x in method names
Thank you
Nice
Fantastic
Thanks
MORE