how can I get started with rust, any good textbook?
@beningoembedded9 күн бұрын
There are some great books that are provided by the Rust developers. Here are a few resources I've found helpful: - doc.rust-lang.org/book/ - www.rust-lang.org/learn - docs.rust-embedded.org/book/ There are several others but they are not open sourced.
@patrickegesa82649 күн бұрын
@@beningoembedded thank you
@IndeepSinghSidhuАй бұрын
Trend will be changing in next 3 years, now AI is in second stage where human interaction is needed to code for a single file. Next 3 years, AI will be stage 3 where these AI tools will generate whole project without involving human interactions. Now you can use AWS neo for putting AI code into edge devices. It is working great for lightweight applications.
@beningoembeddedАй бұрын
Thanks for the comment. Yes, trends are constantly changing and AI is a big trend that will / is transforming the software industry. It'll be interesting to see how companies and developers keep up!
@MahadiHasan-qi1cb2 ай бұрын
Wow! what a podcast! Enjoyed Every minutes of this. Even though the uncertainty of the future cannot be properly addressed at this point of time, but the confidence of Embedded system Developers is a big sigh of relief for beginners like me. I hope the new shiny object is not gonna Change everything like the regulators are asking for, "hype cycle" sounds just about right assessment. Good practice of coding should prevail with static analysis, right?
@jacob_beningo2 ай бұрын
I'm glad to hear that you enjoyed it! C will not be going away anytime soon. C, good processes, and static analysis will win the day for quite a few years to come. However, I could see a slow transition over the next decade or two to other languages. Whether that is C++, Rust, or something else, we will see . . . (May direct assembly with AI agents writing all the code?) Even a mixed language solution where all three languages are used is possible. So learning C well will not be an issue anytime soon.
@MahadiHasan-qi1cb2 ай бұрын
@@jacob_beningo Do you think, it is remotely possible that Micropython will be as fast as any of those programming language you mentioned above. Also, I tried several Embedded system Manufacturers IDE like STMCubeIDE, ESP IDF but none seem to have taken C++ Seriously except Creating EXTERN C Wrapper to convert C to C++. Is it some inertia that they inflicted upon them. Only Arduino IDE seems to be an exception. Or it is just me not knowing advance level of using them yet.
@MahadiHasan-qi1cb2 ай бұрын
I am wondering now, should I stop learning C/C++ ? if Regulators are discouraging/dropping these languages, What should beginners do right now? Even regulators are talking about RUST, Is there any other alternative except python?
@beningoembedded2 ай бұрын
As an embedded developer, I don't think C/C++ will ever be dropped. Regulators may push for a specific language or make it easier to certify another language, but at the end of the day it's up to the team. If you have the right processes and tools, you can just as easily create a project in C/C++. 60% of projects today or more are still in C. 25% in C++, and the remainder in a variety of languages. I'd recommend learning Rust so that if there is a rapid migration to it, you aren't left behind. However, the future is probably more a mixture of languages. C/C++ for low-level access and drivers, while C++/Rust are used in the application layer.
@ESEben1024 күн бұрын
@@beningoembedded I've noticed that Embedded Software Engineer positions oftenly require python instead of RUST (well, may be for python is multifunctional). Do you think it wise to put effort on python and postpone the learning of RUST?
@beningoembedded23 күн бұрын
@@ESEben10 No! Python definitely should have priority over Rust. It will be several years before we see a real big push for Rust in embedded. It's still "the early days" for Rust.
@paulchamberlain79422 ай бұрын
Just to contribute an actual use case. I use an object that ties together the essential elements of running a simulation. The function pointer parameters allow different functions for different platforms. For example, the millisecond elapsed function is different for arduino and windows: FrameTimer(uint16_t frame_int, uint16_t aux_int, U32_CALLBACK p_time_fn, VOID_CALLBACK p_frame_fn, VOID_CALLBACK p_render_fn, VOID_CALLBACK p_aux_fn) An example of usage would be: pTimer = new FrameTimer(1000 / MAX_FPS, 500, millis, Update, Draw, Debug); FrameTimer is a rubbish name but has proven to be a very useful object for running simulations.
@colinmaharaj3 ай бұрын
I haven't tried but i know putty used this, but I haven't figured out how to use this yet in my apps
@frazcas3 ай бұрын
good information and have a nice day , regards from fraz sri lanka. how to be in touch with you ?
@timon10274 ай бұрын
Thank you for your information😊
@victormanuel87674 ай бұрын
This coming off the heels of me just learning to use function pointers is super helpful. It contextualizes use cases really well, and i wish there was a discussion of their applications for the use cases at the end of the video.
@beningoembedded4 ай бұрын
Thanks for the suggestion. Maybe something I'll do in the future in a different video. The idea of this one was to be a super short talk that discusses the technique. I agree more indepth looks would be helpful!
@HansBezemer4 ай бұрын
I couldn't live without function pointers! Agreed, nowadays I use a language (Forth) which makes it much easier to use function pointers, but I wrote my Forth compiler by basically using three tables - one of which with function pointers using something resembling your second technique.
@JayDee-b5u4 ай бұрын
I think you misspoke at ~ 6:19, "You don't want these (function pointers) in FLASH...". I think you meant, "You don't want these (function pointers) in RAM...".
@Bits325 ай бұрын
The simulation suggestion near the end of the podcast is horribly underrated.
@beningoembedded5 ай бұрын
I feel that it is too. Something I'm hoping to promote and push teams to do more of!
@beningoembedded5 ай бұрын
Here is the link to the Edge AI book that you can download for free: edgeimpulse.com/edge-ebook
@NeedBetterLoginName5 ай бұрын
What a great little vid! Thanks.
@Rupa-nb5uf5 ай бұрын
Sound amplitude needs to be High to help watching in pc .it is ok in mobile
@fifaham5 ай бұрын
Function pointers are evil? I have always used them and I never had any problem with them, unless you have a bad memory or stack overflow or damaged memory section then this will never happen, assuming there is an active WDT monitoring those special cases. I have always recommended to use an auxiliary MCU in case the first had damaged memory then the second takes over - in case of medical or security applications.
@beningoembedded5 ай бұрын
Exactly. Unless this, unless that. There are companies that deem them evil and that they should be avoided at all costs. I love and use them all the time. If you know what you're doing, you can avoid all those "unlesses"! Thanks for the comment!
@unclechaelsneckvein6 ай бұрын
Fuck AI
@ralflici9866 ай бұрын
Very interesting talk, thank you!
@edh60967 ай бұрын
I am an EE with 45 years of embedded retiring soon. All assembler, C, and then C++ OO at several multi-national top tier companies. Started using DevOps at least 10 years ago. STILL SEEING 65% OF PROJECTS OF OUR PROJECTS ARE LATE!! What is different from the old days? 100% of the Tech. What is the same as the old days? 100% of the management strategies.
@naymulhasan15337 ай бұрын
Awesome! 🎉
@fifaham8 ай бұрын
@22:40 it would be great if we have translators between assembly codes of various manufacturers that help facilitate the code transition to another manufacturer.
@fifaham8 ай бұрын
@21:32 for low count pin MCU we can set the code to poll for the zero logic via the switch for 1 second after power up, or so - and after say 1 second from power up the code flow goes automatically to program, not bootloader, if low logic is not detected. So before you power up you just press and hold the switch then power up - this guarantees that the MCU will enter bootloader code. I have done such a similar design before. Then re-use that GPIO pin for another task.
@jacob_beningo8 ай бұрын
1 second is a very long time in a lot of application. In some industries, there is a requirement for this entire process to take less than 1 millisecond!
@SumitAdep8 ай бұрын
nicely explained this part 49:17
@davidhawley11328 ай бұрын
Excellent. I plan to use to resolve issue with FTDI232 board that doesn't seem to like me powering my PCB separately. Unfortunately, I will have to create my own breakout board, but that's a minor inconvenience.
@dreadesina521610 ай бұрын
C++ for embedded system? I think he misspoken, first C++ too bloated for an embedded system, with the limited resources available for an embedded system, C will always be the de facto programming language for embedded development and also C will never be faced out, lot of compilers, applications included enterprise applications depend on this ubiquitous language and the most popular programming language of all time. Rust did nothing new in term of technology only help programmer who don't understand C with memory management and allocations and synthetic sugar for using structure as interface the funniest thing is any language new or upcoming will still need to be write in C and with the portability of C and how small it is, it's the perfect language for embedded system and any system applications in my opinion. So instead of trying to look or invent a new tools take the time to understand the one you have and how it works use the good side for your advantage and be aware of the bad ones and take note. We all know the usefulness of an hammer also we also know how dangerous it is during engagement if we don't pay attention so do we say hey the hammer hit me on the finger so it's not good for this function we need another hammer that won't crush my finger when I'm using it even if I wasn't paying attention. No programming language is perfect the same way no software is perfect out of the box so why do we always pretend and justify the proliferation of programming language every time some programmer got bitten by not understanding the tools they're using. Please understand your tools and the functionality of the tools to help your development and help you write elegant codes and software.
@RobertNutella10 ай бұрын
So how much time do we have until there won't be any job for embedded programmers in your opinion?
@beningoembedded10 ай бұрын
I think there will always be jobs for embedded developers. Companies can't find developers with the right skills. Most folks go into more "sexy" areas like AI, web apps, etc. AI will be a great tool to make the few that do embedded more productive at it. At least, that's my opinion today.
@TheJoMoVO11 ай бұрын
Awesome video. I'm curious, do you have a favorite RTOS to work with?
@beningoembedded10 ай бұрын
I don't have a favorite. I have several that I use based such ThreadX, FreeRTOS, Zephyr, etc.
@hectorvidales87611 ай бұрын
Great video, thank you!
@theeeview6718 Жыл бұрын
Great video, gents! I'm a history nut so I loved this.
@ZiglioUK Жыл бұрын
Max is a legend!
@zoenagy9458 Жыл бұрын
How many decades we have to wait till we get a universal HAL like uart_init(ch) uart_read(ch, u8*) uart_write(ch, buf, len) chip independently, out of the box, which then can be customised.
@beningoembedded Жыл бұрын
Thanks for the comment. I don't think we will ever end up with a universal hal. While the idea is appealing, there are so many diverse ways of doing things and so many requirements for different architectural sets that it is probably improbable. If you are working with Cortex-M parts, you could view CMSIS as providing that need. In automotive, you might use autosar, etc While I'm not optimistic, we could see some open-source HALs gain traction in specific market areas.
@StudentoftheUniverse-f7z Жыл бұрын
The closest we will come to a Universal HAL was demonstrated into "2001 a space odyssey". @@beningoembedded 😜
@Bob-zg2zf Жыл бұрын
Thank you, Jacob! Long time no see! Great video. but, sometimes, I feel using ChatGPT is kind of cheating. weird... sigh...
@grimvian Жыл бұрын
The use cases gives me inspiration to enhance my C code, so a big thank you from me.
@ShyuLee Жыл бұрын
How can you get SES attached to the target via J-Link and the SystemView access J-Link at the same time?
@SurvivalSquirrel Жыл бұрын
Thank you for this free education.
@bennguyen1313 Жыл бұрын
My debugger only has JTAG, i.e. no real-time tracing via Arm's ITM SWV (SWD+SWO) or J-Link RTT. How can Tracealyzer be used, either streaming via uart (USB CDC), or versus placing in ram for later analysis? Would love to see a typical debug session using Eclipse+Tracealyzer and an STM32.
@GrindAlchemyTech Жыл бұрын
Thank you
@boudewijndijkstra82 Жыл бұрын
Another problem is that calculating the maximum stack usage becomes non-trivial. For each function pointer invocation it has to be clear which functions can potentially be called.
@beningoembedded Жыл бұрын
Absolutely! Thanks for the comment and observation!
@anon_y_mousse4 ай бұрын
It gets harder still when using C and VLA's. Imagine even trying to guess when the size comes from the user too.
@Bob-zg2zf Жыл бұрын
so true, but so difficult to do, constantly.
@Bob-zg2zf Жыл бұрын
I just bought your book today.❤
@beningoembedded Жыл бұрын
Excellent! I hope you enjoy it!
@Bob-zg2zf Жыл бұрын
@@beningoembedded I ordered it but I have not received it. I hope I will indeed enjoy it as much as I enjoyed your videos. The thing is, my expertise level is not that advanced. I am afraid I won't understand all or most of your book's contents. But I like your video contents and style and background.
@Bob-zg2zf Жыл бұрын
@@beningoembedded Do you mind if I ask you a simple question? I have read your article, where you mentioned that we are supposed to "write rock-solid embedded software". But I can only design and solder an STM32 board with HCD1080, using someone's Keil project code that I downloaded from the Internet. So, how do I write my own entire project/code? How do I improve myself from using others' code to "write my own rock-solid embedded software"? The architecture seems so difficult to master to write from scratch or modify here and there....
@AzlanIkram Жыл бұрын
Really nice explanation of the bootloader topic . I had a lot of questions on mind but this cleared up alot
@bobby9568 Жыл бұрын
The stops: up. to. date.
@TecICTian2 жыл бұрын
Thanks for the demo
@CuriousCyclist2 жыл бұрын
Really good video! Thanks for taking the time to make it.
@Kefford6662 жыл бұрын
That memory map allocates a whole 1KB page to the boot config byte. You said you write a string there rather than a whole byte, but do you write anything else here? It seems like a waste of a flash page if there isn't much written there.
@jacob_beningo8 ай бұрын
You can write other information there that might be useful. It does seem like a waste, but 1 kB in many hardware solutions today is not that much.
@Kefford6668 ай бұрын
@@jacob_beningo I am sure other things will come up so it may prove to be handy!
@PalabrasdePoderparati2 жыл бұрын
Great video and explanation! Thanks
@suptarotangel2 жыл бұрын
What’s the job a developer comes to someone to update their firmware? What’s that guy? If I wanna be him lol
@AbuSous2000PR2 жыл бұрын
very helpful many thx for sharing
@kneg78432 жыл бұрын
Great Tutorial. Thank for sharing this great overview
@shahfenil082 жыл бұрын
Interestingly, I violated the rule that said it should be constant and my code was crashing because it was pointing to the 0x0. As I was debugging the issue, I found out another bug index out range. So one bug exposed another nasty bug. Note that, before implementing function pointer other bug was still there but I couldn't find out because my program haven't crashed or going into hard fault. :D