Пікірлер
@billhurt3644
@billhurt3644 2 күн бұрын
With all of the AI “just let Chat GPT generate some code for you” garbage that I encounter these days as a software engineer, I find myself running full speed the other way and trying to get as low level as possible. Your videos are fantastic and make it seem easier than ever to get right down to the hardware and this video and the last one before it were incredibly illuminating. I’m a back end microservices developer and I’ve been encouraged lately that Rust can be used at a high enough level that the developer ergonomics for creating web services might not be that bad. But based on these last two videos I just ordered a bread board and some LEDs for Raspberry Pi and I’m thinking about buying a micro controller. I haven’t been this excited about a new tech toy in years!
@Bobkaliali122
@Bobkaliali122 2 күн бұрын
Thank you so much great channel!! It would be great if you can show an example of how to use serial communication with this framework. And lets say implement your own Peripheral! It will be awosome if you will make video about it
@clivedsouza6213
@clivedsouza6213 3 күн бұрын
This is great stuff here! I just need to read up on the semantic differences between a task and a future as you mentioned, but overall I am so glad the ecosystem is at such a rich point. Thanks Chris!
@antoniong4380
@antoniong4380 4 күн бұрын
It's like a tutorial to messing around. You showed how to mess around, and how to advance to the next step fast. Also loved the background music
@Polynuttery
@Polynuttery 4 күн бұрын
Excellent video ❤✝
@kv7622
@kv7622 9 күн бұрын
really nice level of details, thanks! I was like where did Embed.toml go when trying to follow along. Took me some time to figure out "probe-rs" runner (noob here), but all part of learning (and should have payed attention to the notes for "Embedded Rust setup explained" where probe-rs was mentioned)
@b1chler
@b1chler 12 күн бұрын
U r on your way to 🐐
@jepcdd
@jepcdd 12 күн бұрын
Thanks!
@therustybits
@therustybits 12 күн бұрын
Thank you! 🙏
@TimmmmCam
@TimmmmCam 13 күн бұрын
Very high production value! I think your `join(button_a, button_b)` example wouldn't work if you pressed the same button twice in a row though? Edit: never mind, I forgot they have loops in the `button()` functions.
@MrSp0ck
@MrSp0ck 13 күн бұрын
Mate - you are a star of youtube Embedded Rust - kudos!
@elindifferente4544
@elindifferente4544 13 күн бұрын
This was so far the best Intro one Rust for Bare Metal Boards I saw. thanks for your effort.
@srl_br
@srl_br 14 күн бұрын
Hi there, I just discovered your channel, and the videos are fantastically informative! I've subscribed, and I'm eagerly awaiting the next video(s). I'd love to see more videos on Embassy. Another topic I'd like to see explored is unit testing for an embedded target in the no_std environment. From my limited research in that area, it appears to be a can of worms.
@critamine
@critamine 14 күн бұрын
This is awesome
@heinzhaberle3326
@heinzhaberle3326 14 күн бұрын
It is a long one. And yes I was watching til the end. Amazing story from classic embedded over to more advanced state machines and finally into the full asyn executer connectd to the rust compiler. So many patterns done in simple code and even later on adapted to the real world. I am really impreessed. And I am also writing this as a true believer in embedded asyn.
@simis_tld
@simis_tld 15 күн бұрын
Thank you so much for your videos. They are so well laid out... The only sad thing about your videos is that there aren't enough of them 😭 Regardless, please don't lose interest in this! 🙏
@sergeyyatsuk9085
@sergeyyatsuk9085 15 күн бұрын
So basically the Embassy provides cooperative multitasking and if one task fails to release control then all tasks are dead? Is there a Rust RTOS with a preemptive scheduler?
@therustybits
@therustybits 14 күн бұрын
async runtimes are cooperative, yep. RTIC (rtic.rs/2/book/en/ ) is another option for more real-time-y stuff with more predictable task scheduling. Hubris (hubris.oxide.computer ) and Tock (github.com/tock/tock) are other options with more traditional preemptive scheduling.
@RetoonHD
@RetoonHD 16 күн бұрын
I thought at first in your temperature example you were going to do the classic "wait for signal receive, take measurement, show measurement" using a `while let Ok(v) = SIGNAL.wait().await {}`. But instead you made it about polling speed, which is a cool difference. Nice video, thanks for making it.
@lachpanbailey6760
@lachpanbailey6760 16 күн бұрын
Incredible explanation! Please keep it up 👏 What is the book on your table in the background?
@therustybits
@therustybits 15 күн бұрын
"The Linux Programming Interface" by Michael Kerrisk
@Neberheim
@Neberheim 16 күн бұрын
I don’t understand anything you’re talking about, but I still like watching these to pretend that I might someday.
@zbll2406
@zbll2406 16 күн бұрын
just use stm32, c
@connorradeloff5597
@connorradeloff5597 17 күн бұрын
Great video! I really wish I had these when starting on my semi-large embedded project, ha! One sort of "best practice" that I wish I did when starting to write things like driver logic for IC's is to write your driver code using the embedded_hal_async and NOT the chip-specific SPI/I2C/etc abstractions! Having your driver depend on the generic HAL I2C/SPI/etc trait makes the code much simpler and reusable, IMO. I think this was a bit of a particular problem for me about a year ago because I was new to rust and the embassy-rp I2C/SPI structs took pin numbers as generics causing some crazy types for a beginner to rust to wrap their head around, but if I just wrote them using the embedded_hal_async drivers as a dependency I would have had a much easier and simpler time, and it's what I'm doing now for all my drivers. So far this is my first delve into low leve/embedded development and it's been a total blast as a .NET developer by day. Rust can be... strange sometimes but it really is an absolute pleasure to work with, and the community is amazing. Great videos, looking forward to the next one!
@davidbronke5484
@davidbronke5484 17 күн бұрын
That was great, and showed why Embassy is so useful, since you don't have to implement all that stuff yourself! And despite what Ferris might have said, I did watch all the way to the end. 🦀
@Flourish38
@Flourish38 17 күн бұрын
This video explains async better than anything else I’ve ever seen. Maybe I won’t complain as much about colored functions now that I know the demons that they’re hiding from me…
@oxereviscerator
@oxereviscerator 17 күн бұрын
this is the best tutorial video i have ever seen
@JulianBolivarGaleno74
@JulianBolivarGaleno74 18 күн бұрын
Embassy can de used on Safety Critical Functions?
@therustybits
@therustybits 17 күн бұрын
Safety-critical software usually requires the use of certified toolchains, libraries and compilers, so I’d say no, but admittedly that is not my area of expertise. That being said, Ferrous Systems have a qualified version of the Rust compiler (ferrous-systems.com/blog/officially-qualified-ferrocene/ ), so use of Rust in safety-critical systems is making some progress.
@Kilohercas
@Kilohercas 18 күн бұрын
I have a question about something mentioned in Dave's Garage video: they demonstrated that a modern Rust program can sometimes outperform C or C++. This seems counterintuitive to me since C gives you full control over everything, including memory access, allowing for highly optimized, low-level operations. Do you have any thoughts on this, particularly in the context of embedded devices like the STM32? Could this performance advantage hold true in such scenarios, or is it more about the compiler's implementation and optimization capabilities? For example, in my use case, I have a 256x256 matrix of u16 values. I need to: Compute the sum of all values in the matrix. For each element, multiply its value by its row and column indices, summing these products across all rows and columns. Do you think Rust could actually perform this kind of task faster than C? Or is it more likely that C would still have the edge due to its fine-grained control?
@therustybits
@therustybits 17 күн бұрын
Between the type system and the borrow-checker, Rust allows a number of checks to be performed in a zero-cost way at compile time, so my guess would be that you might be able to remove some runtime checks that you’d need or want in C (invariants, null-pointer checking, etc) that could speed things up a bit. This may not really pay dividends in a small project, though.
@therealjpster
@therealjpster 13 күн бұрын
@@therustybits rust references are also like __restrict C pointers, and C devs rarely bother using __restrict. That helps the optimiser.
@amidamarurookie
@amidamarurookie 18 күн бұрын
love your contents you made! Im starting learning embedded systems recently, completely a newbie in this field and really learnt a lot here. Thank you so much The Rusty Bits.❤
@alexheslop2917
@alexheslop2917 18 күн бұрын
Knocked it out of the park yet again, thanks for the video!
@mikkelens
@mikkelens 18 күн бұрын
I thought for some reason I had already seen a video by you on this topic, but from how much new knowledge of embassy I just gained I think it's safe to say that you hadn't (and that I was thinking of another channel). I knew some of the basics of how to use some of the embassy templates and build within them, but I had NO IDEA how much stuff embassy can provide as a project and collection of libraries! Channels, mutexes, signals... Thank you so much for bringing to my attention how much can be had with not too much effort! Makes me want to retry my scalable 8x8 display driver project, knowing that I'm not stuck implementing as many foundations if I need them.
@johnknight7293
@johnknight7293 18 күн бұрын
How do you know what feature flags to use, both in the cargo.toml and the cargo add operation?
@therustybits
@therustybits 18 күн бұрын
In general I'll look at any feature flags that are listed in the Rustdocs (eg, docs.embassy.dev/embassy-time/git/default/index.html#feature-flags) and select the ones that are needed/wanted for the project, usually in consultation with what is used in some of the examples (github.com/embassy-rs/embassy/tree/main/examples) to make sure I'm not missing anything. But.. yeah... required vs optional features for a crate feels like something that should be surfaced a bit better within crates.io and the Rustdocs.
@YuriyYarosh
@YuriyYarosh 19 күн бұрын
It would be nice to compare Embassy to RTIC.
@JacobWohlClips
@JacobWohlClips 19 күн бұрын
Embassy is such pleasant name. I’m so used to new Rust frameworks having names like “gremlin” or “gorlok” or “yucky”.
@namr2000
@namr2000 19 күн бұрын
Great video as always!
@jan_the_man
@jan_the_man 19 күн бұрын
Another great video! I feel like rust is definitely gonna have a big role in the future of embedded systems. Together with Zig (which I also really love), I see a future with of embedded development with the strong, powerful, ecosystems that we need.
@dwhall256
@dwhall256 19 күн бұрын
I have a couple decades of embedded C experience. I've tried to get into Rust, twice. On the second attempt, I read two books and devoted 3 months' spare time to writing katas. I see the value of Rust. I believe it when plenty of educated people are extolling the benefits. But I have not yet found the path to comfort with the language. In your Rust-learning journey, what were your hurdles? Was a syntax with sharp corners one of them? Do you have an extrinsic motivation for using Rust, such as an employer-driven switch to Rust?
@tommasoclini9902
@tommasoclini9902 19 күн бұрын
Finally a new video 🎉
@lbGkifoo1bj12e9plhjfWA
@lbGkifoo1bj12e9plhjfWA 19 күн бұрын
good stuff. Next please do RTIC and compare it to embassy executor
@FrankTaylorLieder
@FrankTaylorLieder 19 күн бұрын
Great explainer animation for async execution!
@ellafoxoo
@ellafoxoo 19 күн бұрын
I've been going through Embassy lately for some 3D printing hardware I'm building, and it's been great. I'd love to learn more about building device independent crates for interacting with external peripherals, such as over i2c or SPI. Perhaps building our own interrupt handlers that callback to the Embassy executor. I feel like there are some gaps in my knowledge that I know you'd be great at teaching. Thanks for the videos so far; this series has been extremely resourceful in helping me get through the steep learning curve of the language!
@MarkusBurrer
@MarkusBurrer 19 күн бұрын
I have seen that AVR is also to be supported. Does anyone know whether this is already working properly? There are no examples yet.
@therealjpster
@therealjpster 13 күн бұрын
People have Rust working on the atmega328 but we’re generally limited by the LLVM backends available and plus the AVR is really unusual in being Harvard Architecture. __flash char* anyone?
@jagagemo8141
@jagagemo8141 19 күн бұрын
Rust (BTW)
@oof-software
@oof-software 19 күн бұрын
This channel really is a gem! I love the pacing, concise but detailed explanations, great visual aids for the explanations, and the examples are simple enough to fully explain but not too simple where they wouldn't be of value. Thanks for these videos! :)
@davidbronke5484
@davidbronke5484 19 күн бұрын
Thank you so much for making this! I just recently started helping out with RMK, which uses Embassy, and I love your videos! The clarity is incredibly helpful.
@a_pullin
@a_pullin 19 күн бұрын
Wow. Impressive. Everyone is such a great programmer. Such great tricks. I couldn't come up with this in 100 years. And yet: the other 99% of the world uses simple RTOS.
@Kfoo-dj4md
@Kfoo-dj4md 19 күн бұрын
Your videos a work of art, they are very useful, and fun to watch
@NotherPleb
@NotherPleb 19 күн бұрын
Great video! I want to see how to implement a driver or bridge with C
@irlshrek
@irlshrek 19 күн бұрын
omg this is so cool
@johnwu5908
@johnwu5908 19 күн бұрын
GOAT
@maksmakes
@maksmakes 19 күн бұрын
This channel is such a fantastic resource for people interested in using Rust on microcontrollers, than you for making such nicely produced videos!!
@JamesMunns
@JamesMunns 19 күн бұрын
So glad you're doing these overviews of important parts of the ecosystem! It's a great thing to share with folks who are interested or getting started!
@therustybits
@therustybits 19 күн бұрын
Thanks so much for the kind words James!