How to Do Embedded Development with Rust • Steve Klabnik • GOTO 2023

Поделиться
HTML-код
  • Опубликовано: 4 ноя 2024

Комментарии • 21

  • @faldarith
    @faldarith 10 месяцев назад +15

    The attitudes about web programming and system programming made me think for years I didn’t like coding, when what I actually needed was to get closer to the metal and gain a deeper understanding of the theory.

  • @franksinatra2530
    @franksinatra2530 Год назад +8

    I've dabbled in low-level programming, but never really interfaced directly with actual hardware. This is a great starting point for me. Thanks Steve!

  • @CrIMeFiBeR
    @CrIMeFiBeR Год назад +6

    I like the analogy, because fashion also repeats itself, people going away from RPC 20 years back, and now we are coming back to it, same with message passing

    • @nirmalyasengupta6883
      @nirmalyasengupta6883 Год назад +1

      I cannot agree more. Sun RPC / CORBA were dealing the same problem which - say, Protobuf - today does! 😁

    • @akauppi2
      @akauppi2 11 месяцев назад

      we are?

  • @EvgeniyDolzhenko
    @EvgeniyDolzhenko 6 месяцев назад

    It's pretty much the same, concepts and the challenges are very much alike. E.g. multi threading in C++ and module loading in Angular, C++ compilation and assets bundling, GDB and DevTools debugger, once you truly master one side of it the other becomes easy and accessible as well.

  • @tomcooper9061
    @tomcooper9061 Год назад +3

    I2C screams of TCP, at least in this simplified explanation. I got my start in IT provisioning IP networks and now I’m doing web development. It’s cool to see how certain concepts from one domain come into another. Thanks for this talk, definitely makes me feel like I can pick up more systems and embedded programming. 👍

  • @dineshwarrajendran1189
    @dineshwarrajendran1189 Год назад +3

    Intro ❤

  • @guentherjehle
    @guentherjehle Год назад +9

    The server/client terminology is not fitting when replacing master/slave in this case - server/client should be swapped. The controller would be the "client" and the peripheral is "serving".

    • @michaelruggles9441
      @michaelruggles9441 11 месяцев назад

      The "server" (microcontroller), in this paradigm, is both serving and requesting data just like a typical web server (serving data to clients, requesting data/services from dbs/apis etc). It is also running the main loop, always listening for "requests" (interrupts) and handling the execution of those events. It wouldn't be fit to call it a client.
      Instead of redefining the server, it might be helpful to think of the "clients" (peripherals) as anything that directly communicates with the server, regardless of whether it's sending or receiving information (browser, db, API, terminal, etc).

    • @inasinas226
      @inasinas226 10 месяцев назад +1

      Yeah which is why the struggle to keep master slave terminology. It works really intuitively unfortunately: a slave cant have 2 master, but a master can have 2 slaves.

  • @raidensama1511
    @raidensama1511 10 месяцев назад +7

    Master Slave are only words just like proletariat bourgeoisie

  • @MDarkus3
    @MDarkus3 Год назад +5

    28:00 unpopular opinion: I hate this code! WoW. If you tell me this is what Rust has to offer for embedded programming I will stuck to my C lang.

    • @scottmabin3323
      @scottmabin3323 Год назад +6

      It's done to show you what HALs do under the hood in Rust. As you user you don't have to delve into this stuff, like you wouldn't have to delve into this with C you'd use an of the shelf HAL. Embedded programming is so much more than writing to registers.

  • @moestietabarnak
    @moestietabarnak Год назад +1

    compiler message with suggested solution ?! ..great ! I've always thought when a compiler tell me "missing ';' or '"" etc... why don't they just ADD it (still print a warning in case it's really not what the programmer had in mind) and CONTINUE building !
    Later the programmer can see ALL the error in once pass.. even like 'accept compiler solution' to automate the trivial fix...

    • @mikkelens
      @mikkelens Год назад

      this can be dangerous for real compiler errors since a program that doesnt compile by definition is wrong and therefor cannot be fixed without knowing the intent of the program from outside of the program itself, but… if you are using a rust code linter like clippy, where your program definitely compiles but may be improved for effiency, clarity or brevity reasons, it will give you those suggestions like a compiler would tive you warnings or errors AND you can run “clippy -fix” to make it actually apply some of these suggestions to your code and you can basically trust it did it correctly without altering any behaviour. I believe all clippy automatic fixes follow the rule of not changing program I/O behaviour at all.

    • @mikkelens
      @mikkelens Год назад

      In this way, the clippy linter is a lot like a more powerful and/or higher concept code formatter (like rustfmt), which I think is really magical.

    • @mikkelens
      @mikkelens Год назад

      Also note that not every clippy suggestion/warning has an automatic fix since those can be pretty complicated at times even though the issue may be obvious. For the areas it works automatically, its wonderful for cleaning up big piles of code while you rummage through it, like forking a small “old” unkept rust library for your own use or improving your own code from before the clippy lints existed/were something you used regularly (new ones are added all the time)!

  • @edgeeffect
    @edgeeffect Год назад +1

    19:36 totally blew my mind... because if you were to press my for my "views" on software development... it would be THAT SLIDE... WORD FOR (expletive deleted) WORD!

  • @baggern
    @baggern Год назад +10

    talk starts at 20:40

    • @dongueW
      @dongueW 10 месяцев назад

      Thanks