Embedded - 433: Getting Mad About Capes

Episode Date: November 3, 2022

Michael Gielda spoke with us about Renode, an open source embedded systems simulator. It also simulates large distributed systems and network communications.  Check out Renode.io and the boards suppo...rted by Renode and Zephyr on Renodepedia. Elecia played with the Nucleo F401 tutorial on colab. Michael is the co-founder of Antmicro. The ESP32-C3 is a commercial RISC-V core with WiFi and BLE. We also mentioned Wokwi on the show. (And we had its creator Uri Shaked as a guest on episode 396: Untangle the Mess Transcript

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome to Embedded. I am Alicia White, here with Christopher White. This week, well, this week it will be an engineering week, and I am excited to have Michael Gielda talk to us about Renode, which is something about testing hardware, software, something. Hey, Michael. Welcome. Hey, everyone.
Starting point is 00:00:29 Could you tell us about yourself as if we met at wherever we actually did meet? All right. So I'm Michael Gilda. I'm a co-founder of EntMicro and an open source enthusiast working with open source silicon software, hardware, you name it. Most of these days I'm actually managing the company, but you can say I'm a manager during the day and an embedded developer at night, which is kind of pretty literal because just this night I was coding something. So, yep.
Starting point is 00:01:04 We want to do a lightning round where we ask you short questions and we want short answers. Are you ready? Yeah, I guess so. Favorite post-Halloween candy? I didn't really celebrate Halloween too much, so I don't have a favorite. Sorry.
Starting point is 00:01:19 Favorite candy of any kind? Any kind? Huh. I think that would be like sour jelly beans. Do you have a favorite Internet of Things connection method? Bluetooth, Zigbee, Internet, Wi-Fi, etc. I have a love-hate relationship with Bluetooth. I love it, but you know but it doesn't always work.
Starting point is 00:01:46 Wi-Fi is probably my technology to go, but it depends on what you mean by IoT, of course. Six-Loban is also highly underappreciated. Favorite microprocessor? Some sort of RISC-V. Hard to kind of decide which one, though. I have a soft spot for the original FE310 fromC-V. Hard to kind of decide which one, though. I have a soft spot for the original FE310 from Sci-5, you know,
Starting point is 00:02:10 the original kind of RISC-V MCU. Favorite video game? Tough one. Between Fallout and Baldur's Gate, I guess. It's a tie. Which Fallout? Again, it's a's between one and two. Between one and two, the original ones, you know.
Starting point is 00:02:29 Do you like to complete one project or start a dozen? That's a very easy one, start a dozen. And do you have a tip everyone should know? Plenty, but kind of a short one, yeah. I guess that nobody's out there to really kind of steal your ideas. So it's best to just talk about them because people are too busy doing their own thing. And if you don't talk to people about your ideas,
Starting point is 00:02:52 they'll never learn about them. That is so true. Okay, so let's talk about Renote because I keep seeing it and we talked to Jonathan Berry a little bit about the landscape of tools for developing embedded systems that are connected. But I go to your website, and it says it was created as a virtual development tool for multi-node embedded wireless. Something, something, scalable workflow, something, something, secure IoT systems. And I have to admit, it's just, it's a lot.
Starting point is 00:03:38 Could you give it to me in terms that... Explain it like we're five-year-olds. Yes, thank you. Okay, I can try. Well, if you're really a five-year- Okay, I can try. Well, if you're really a five-year-old, I have a five-year-old, so I probably use a bit different language, but I know what you mean. Without prior experience, I guess it boils down to the fact that it helps you put your physical embedded devices
Starting point is 00:03:58 into the virtual realm, so you can develop on a PC instead of using the actual device, which doesn't seem like a big difference. But once you try to scale development methodologies across teams, across continents, across different kinds of devices, it turns out that developing software is much easier than developing hardware because anyone with a computer can do anything. And that's what a simulator like Renote will allow you to do.
Starting point is 00:04:24 Instead of having to set up your entire physical device setup, you just start hacking right away. And you can also kind of share this environment with other people very easily without having to send them physical boards. So that's why it's good for developing IoT systems. And of course, the more complex your system, the more advantage you're going to get because you're developing something very simple. Then obviously, you know, real hardware will definitely work for you very well.
Starting point is 00:04:52 But once you get to this kind of scale, it becomes a bit of a challenge. I haven't, other than Walkway as a simulator, which I use for my class, which is all small problems. I haven't had a lot of good luck with simulators. They never quite do what the hardware does. And there's a lot of work to set up.
Starting point is 00:05:16 Sell me what you have. Sure. I think the key to how Reno is kind of successful is that we're trying to make an open source framework that a lot of different people and companies collaborate to develop. And in the end, of course, yes, it takes time to set up simulation, to model hardware and so on. But then again, hardware is commoditized to a large extent. There's a lot of overlap. There's a lot of reuse. So if the entire world kind of builds the simulation infrastructure for everybody else, it ends up
Starting point is 00:05:54 being not so hard to build simulation. And then even if you have the building blocks, you still have to put them together. That takes some work. But from my experience, it definitely saves so much time in the longer run than the 10x kind of return there. So as long as you can kind of pool the resources to develop the actual models for the hardware,
Starting point is 00:06:20 which we're doing, the setup and the use of simulators saves much more time than it takes. So what kind of hardware are you supporting? There's quite a lot. I would try to kind of mimic the real-life projects. We don't even try to mimic, it just happens that the people that approach us have real problems to solve. So they are using whatever is being used in the market right now. So much of the support is oriented around ARMS platforms, which are, of course, extremely popular in the mid-end market. Cortex-M is, of course, very well supported. But we have support for Cortex-A
Starting point is 00:06:57 and are working on 64-bit advanced Cortex-A platforms right now. This will drastically improve in the coming months. And of course, we have very good coverage of RISC-V because it's been one of the key focuses in the last few months ever since we joined the RISC-V Foundation as one of the very early members and got very involved in open source hardware. So RISC-V is kind of obvious,
Starting point is 00:07:23 but ARM is also very important just because of the scale at which it's deployed. Other than that, there's some Spark. There's extensive support. I'm going to interrupt you because I don't really care about all of the processors because all I ever use is a Cortex-M. I want to know,
Starting point is 00:07:43 am I supposed to start with a discovery board or do I come in with my own custom board to start with? What do you, since that part of simulation is so hard. It's the peripherals. It's the peripherals that kill you. Or like the Cypress processor, it's just a pain in the neck to set up. So how are you supporting an FPGA plus? I just wouldn't support that. So that's the perfect question because that's why Renode was born, right?
Starting point is 00:08:15 That's how we kind of ended up doing it in the first place. We obviously started off with using QVU as everyone would, right? Like you want to simulate a board and that's the first thing that comes to your mind. Except that, as you said, there's the whole world of peripherals that QVU kind of tends to normally ignore. And whereas if you're trying to actually run a real thing, you do have those peripherals to take care of
Starting point is 00:08:38 and the drivers to write and the I.O. to do. So Reno was kind of born from that need where we were working with real hardware and wanted to model the hardware in its entirety. And so, Reno actually kind of models all those peripherals. We have very good coverage of, like, ST mic controllers and, you know, Nordic mic controllers and different vendors that could kind of...
Starting point is 00:09:03 But what about spy flashes? We have some too. I mean, it's... Oh, you're talking external things to the microcontroller. I mean, it doesn't do me any good to have an ST32F4 whatever if I can't also connect it to... A display. A display and a spy flash and an ADC
Starting point is 00:09:22 and all of the other things that actually make up my system. My processor is... Boring. Boring, actually, yeah. I mean, it's super important, but overall, that's just the application that isn't the embedded system. Sure, but Reno does have display support as an example, right? So when you're mentioning STM32,
Starting point is 00:09:42 that's one of the original ones where we actually did implement a display controller, an accelerator, and you can actually run a GUI inside of Renode for STM32. So do you need an RTOS or do you support KubeMX? How does that actually work out? It's completely software agnostic. So you can run KubeMX, Bionrace, you can run Zephyr, you can run FreeRTOS, whatever you want. It doesn't rely on any specific payload it runs. It tries to mimic the hardware to the point that the payload doesn't really understand it's being run in simulation. So it can be anything. So I'm actually compiling in my normal environment and programming, JTAGing, flash updating onto your virtual devices. Yes, except like you're not really flash updating in the sense that you're just uploading a binary to a place in memory on your PC. So it's kind of faster and easier.
Starting point is 00:10:40 But yeah, the flow is kind of the same. And if you don't have a peripheral that I need, can I write one? Of course. We absolutely accept contributions and people have been contributing things. And of course, we also do it as a service. So there's choices there. The one thing that perhaps is important to mention is that we actually have infrastructure that allows you to model a single peripheral and bolt it on top of Renode without having to recompile the whole thing. So we've built it so that if you have one additional thing you need to model, you can create it as an external file and just load it in runtime.
Starting point is 00:11:20 And it's going to work the same as if you compiled it in directly into the core of the framework and over time what happens is that people might build those things in isolation or even we might do that and then once the the peripherals kind of developed enough we can kind of wrap it back into the core framework to be available to everyone but you don't need to start with like digging into renotes internals to model a single piece of IP inside a chip or outside of a chip, of course. So let's say I have a device that has a complicated ADC system that I'm not going to be able to reproduce
Starting point is 00:11:57 because it has to do with the physical world. Do I replace that with a data file, a comma-separ separated file that every time i sample how does that work you're absolutely correct i mean there's many ways you could solve this because of course you could imagine you know connecting not a file but perhaps another program that supplies the data which we could also do. But yeah, a file is the most obvious choice. And in fact, historically, it would just be like a very simple data file that we supported. Right now, we've actually created a more complicated advanced format for supplying multiple sensor data at the same time.
Starting point is 00:12:40 And this is because we're having more and more scenarios where we're kind of getting multiple sensors going at the same time. And, you know, the application perhaps processes the data and makes some decisions based on several data sources. So we've designed a format that allows us to do this more, you know, fine-grained and have better control of how this data is being fed into simulation. But yeah, it's a file in the end.
Starting point is 00:13:05 And then what about timing? On one hand, I can see that having a simulator run fast is so much easier to debug because I don't have to wait for Tuesdays at midnight or whenever my system is having problems. But on the other hand, some of my bugs are timing. So do you run real time or not? So obviously, hardware is not the same as simulation. And if you're kind of looking for really tricky timing bugs, that's one of the things that perhaps needs to be said. We don't tell people not to test in hardware, right? We believe that hardware is extremely important,
Starting point is 00:13:37 and you need to test with hardware in the loop, except that we also believe that 90% of the bugs you can catch with a simulator, and then you're only left with like 10% that are really tied to those tricky timing problems, whereas the rest is other kinds of timing problems or logical errors or bugs that Renode can actually help you with. So when it comes to the question whether it's real time, in the sense of the user experience, yes. In the sense of how do we approach time, it's deterministic so that we kind of synchronize.
Starting point is 00:14:12 Like, for example, if we run multi-node systems, we'll synchronize them together. We're not just running as fast as we can. We're kind of taking time to ensure the determinism. But at the same time, if you do want to let go of determinism and just run as fast as you possibly can, that's a feature. You can also just turn off the determinism and run faster, which is very useful for some scenarios.
Starting point is 00:14:39 It depends on what people need. But there's a lot of kind of tweaks you could do in the timing space that, you know, will allow you to adapt renotes to different kinds of scenarios in terms of what you want to achieve in your testing. I could definitely see a case for I'd like to run as fast as possible, maybe with determinism still on. But, you know, there are those cases of bugs where it's like, oh, this happens once a week. That's a very, very kind of good thing that you're raising here, because that's another way to look at time in which, yeah, real time is really real time. If a bug happens every week, then you have to wait a week for it to trigger. In Renode, or generally speaking, simulation, you'll have many ways to solve this. You can even record and replay these kind of scenarios. You can compress time if your
Starting point is 00:15:28 device sleeps a lot, then you don't need to really wait for it to sleep. You can just skip until something interesting happens. So there's kind of a bunch of features there that allow you to manipulate time, let's call it, and
Starting point is 00:15:43 go back. You can record, you can save games. Like you would do in a game, you can save the state of the entire simulation and load it later. You can record and replay events. So you can imagine a big system where you're trying to focus on a single node in that system. And you only care about what happens to that node. You don't want to simulate the entire system because it's big and slow and it takes a lot of time.
Starting point is 00:16:16 But if you just simulate it once and record the events, you can take those events, you can save them, and you can replay them into that single node. And from then on, you can actually focus on the single node. You can just simulate a single node, which is much, much faster, and just replay the events as they happened. And so trigger bugs that normally you'd have to have a huge simulation or a huge physical setup and perhaps wait for a long time, you could now possibly trigger in minutes. What about all the times I need to work with Bluetooth or servers to connect to?
Starting point is 00:16:56 How do I... Let's go with servers, let's go with just Wi-Fi because that's a simpler case. Let's say my device is a sensor that needs to send data to AWS instantiation. And I want to be able to test this all the way with my application people who are getting the stuff off of the AWS server. Can I do that? Yeah, you can absolutely do this, and we've done this.
Starting point is 00:17:24 Obviously, the server is done this. Obviously, the server is expecting a real device, so it might have some kind of quirks you have to adapt to in terms of how you talk to it. But generally speaking with rich networks, the virtual and physical world,
Starting point is 00:17:39 also in the context of sending data to the cloud, one thing that perhaps you have to make sure you understand is that determinism cannot really be guaranteed in that regard because you're bridging into the real world. Once you do that, you kind of lose guarantee of determinism. But you can definitely do this, and we've done this. It's definitely possible.
Starting point is 00:18:02 And Bluetooth, can I integrate with an iPhone app? That's a very common question, too. And the answer is you absolutely can. We haven't done much of this yet. We're kind of looking at this right now. We've mostly been focused on simulated networks. So internally in Renode, you can make a Bluetooth connection between nodes and talk between them.
Starting point is 00:18:28 But talking to your phone is absolutely doable. It's just we haven't really... We've had a lot of people ask about that use case, right? But then it boils down to actual customers that are building these kind of systems and testing these kind of problems. So I think we're going to be doing this very soon because we have a few also vendors that we're working with directly
Starting point is 00:18:51 and that's an interesting topic for them to explore as well. And you mentioned multi-nodes, which is one of the places that this gets really interesting for me because sometimes, I mean, we talk about the Internet of Things, but it used to be called distributed systems. And sometimes that meant a lot of systems. For example, sprinkling sensors around a city and having them all work together to get more information. But then that leads to lots of other problems, including timing and staying in sync. But also they have to communicate in the real world, which sometimes is very hard. Do you model the network issues?
Starting point is 00:19:44 That's another question that pops up very often. And of course, we've given some thought where there is some level to which, you know, you might want to care about the physicality of things, but we're not aiming to like model the entire world because that's just a lot of compute. We're focusing on the results of what happens when communication fails and we can actually have models of the radio medium between the nodes which either can be a perfect medium and then of course all the packets always get through but you can also put nodes in physical like virtual locations that are kind of at some distance and then have some kind of a distance-based radio model which drops packets
Starting point is 00:20:30 every now and then the further you are. So you can have various ways in which the connection quality can be represented as being poor. That is not to say that we're not simulating physical walls or something. We're not trying to model the physics of
Starting point is 00:20:48 how the particles actually or the waves behave. But we are kind of simulating the result of a failed communication. And then when communication fails, what happens? Does your protocol handle this retransmission
Starting point is 00:21:04 well and these kind of things that can be simulated and in fact that's kind of one of the key you know focuses really when people talk about wireless networks is what they want to test what happens if things go wrong not if they work well so you can go in and say like i want to stochastically drop 15 of packets or corrupt some percentage randomly that kind absolutely yeah and you could even introduce some more like intricate corruptions like you know if you know the kind of things to look out for you can break the packets in ways that you know because you can you can just drop packets for example and then of course uh dropping is is very binary.
Starting point is 00:21:45 But if you wanted to, let's say, malform packets or something, you could also think of writing a simple script that just mangles them a little bit, and then you see how your protocol is handling this. At what point do I start looking at
Starting point is 00:22:01 Renode? At what point in the development cycle? At what point in the development cycle? At what point in the development cycle and then at what complexity of device? I would say that it depends a bit, of course, but pretty early on, we try to encourage people to try to do things early on. It's going to be easy to scale them out
Starting point is 00:22:23 once you're trying to build a more complex system. So definitely even starting with a single device, like a 32-bit Cortex-M MCU with two sensors on it, there's already kind of usefulness in using reNotes. Having said that, I think it's a different place for different people, where some people love tests and they kind of want to get everything tested, or perhaps the company they're working for is requiring that or likes to have that,
Starting point is 00:22:52 and then you should start very early. And there are other people who perhaps prefer to set up testing once they're more comfortable with what they want to do. I mean, Renote can also be used for prototyping. So we're talking about testing a lot because it's one of the key use cases, but prototyping and just picking the hardware they want to work with is another aspect that we're trying to target. So I would encourage everyone to try to introduce Renote into their workflow very early. But on the other hand, you know, it's, I think think best if you introduce it at the moment when you're comfortable with fusing it
Starting point is 00:23:27 and you feel there's a real need. And what about complexity? You mean of using Renode itself? Well, there are going to be projects that don't need Renode because they're too simple or don't need Renode because they are too complex
Starting point is 00:23:44 and setting up the simulation is as much work as doing the project. Well, perhaps, yeah, definitely on the simplicity end of things. Absolutely. You don't need to set up simulation every time you try to blink an LED, right? But on the other end of the complexity spectrum, I mean, I can envision projects that are kind of complex enough that it's just a lot of work to simulate them. But over time, we're actually trying to, through, again, pulling the resources, making the framework open source, we want to be able to simulate a really complex system
Starting point is 00:24:14 without the systems, without having to put in a lot of work. And so I wouldn't say that, like, ideally, we can also target the complex side of the spectrum without the actual act of setting up simulation being complex in itself. But I totally agree in terms of, like, yeah, if you're just building something very simple, you might just not need Reno, then that's fine.
Starting point is 00:24:40 And it seems like there's cases where you, even if your system was daunting or too complex or felt like it was too complex to simulate at one go, you could certainly break into subsystems. Yes. Yep. That's a great thought. Yep. starting out as an STM32 nucleo board and an inertial measurement device and a couple of pumps and sensors. So I have inputs and outputs. Where do I start? I mean, the hardware is not yet on my desk. Right now, I'm still sketching out where everything should go in the prototype and talking to the EE to find out which pumps need what kind of special handling.
Starting point is 00:25:34 What do I do? Well, I mean, first you should probably match whatever components you're planning to use at least. Before that, I go to the Renode website and I push download Docker? I mean, that's what I was meaning. Before, okay, you should download Renode for sure, right? But doing some research before doing that actually helps in the sense that you're mentioning a specific project, right? You already have something on your mind.
Starting point is 00:26:06 You're trying to use it in a specific scenario. So certainly downloading Renote and just playing around with the demos we have, and we have lots of them because over time they've accumulated and there's dozens. And then there's the Renotepedia effort, which covers hundreds and actually thousands of demos. So definitely that that would help to to get a feeling for what we not can do but like in terms of actually how can we not be useful for your particular project um it's always good to kind of research a little bit you know whether the hardware you're trying to use is kind of uh at least nominally supported
Starting point is 00:26:42 right because like if you if you pick something that's completely different than what we have, then you'll just find it harder to adapt to your needs. Whereas if you pick a board that we have a demo for, that's kind of what I would try to lead with. It's like, if you find that we actually have a specific demo for the exact board that you want to run, let's say, that's obviously the best place to start, right?
Starting point is 00:27:09 Because you can literally go run the demo and I'll tell you how to do it in a second and just replace the binary with your own. And of course, if you start using hardware features that are not there, like say a sensor that you want to connect and it isn't there, then, of course, you have to do some work to add it. But just being able to run your own binary
Starting point is 00:27:34 on the approximate platform that you're going to aim for is a very powerful experience that I really encourage everyone to try out. And so coming back to how I would approach this problem, I would really first try to see if normally that platform is supported. And if I had some confirmation that, okay, something similar to what I want is there, then I'd go and download GreenNote and try to run that demo.
Starting point is 00:27:59 I could run any random demo, of course, and that's also fine because it shows you the capabilities of the framework but it's especially cool if you can actually you know compile a binary that's like a hello world which is like the starting point these also do if you were trying to run the real hardware right you'd also compile a hello world first you wouldn't build the entire application you would start with something very simple. And once you have that simple thing and you run it in a simulator, you can realize, oh, okay, that's really something. I can really kind of build a test.
Starting point is 00:28:37 And of course, it gets harder as you try to introduce more complexity into the flow, but that kind of experience is very powerful. So yeah, download the Renode is, of course, one of the important steps. And you can do it for any platform, like Mac and Linux and PC. Windows PC, I mean. And we have portable packages for Linux, which is the best starting point for Linux people. We're actually working on having portable packages for all, which is the best starting point for Linux people. We're actually working on having
Starting point is 00:29:05 portable packages for all three operating systems, but installing on Windows and on Mac is not hard. These are just an exafile, a regular installer on Windows and DMG on Mac. And on Linux, you have the portable package.
Starting point is 00:29:22 So on all three OSs, you have a fairly simple choice how to install Renode. Or, of course, you can the portable package. So on all three OSs, you have a fairly simple choice how to install Renode. Or, of course, you can try Docker too. We have Docker images. So if you're more into that kind of way of working, then Docker is your friend. But, of course, then you might run into some issues
Starting point is 00:29:39 with setting up where are your files and how to find them on your drive and stuff. So installing Renode natively, for me at least, I'm the kind of person who would probably just go and install it. But yeah, Docker is available too. I am desperately not the person who just goes and installs stuff on my computer. Really? I just grabbed stuff. As he was saying about looking for tutorials, I found one that had a collab, which is the absolute best way to get me to try it.
Starting point is 00:30:10 Oh, yeah. Although, trying to figure out what this collab does while I'm also trying to figure out how to do a podcast. While you're also doing a podcast, yeah. You might be multitasking too much. This is incomprehensible, but that's probably because I can't do both. I have a question about the demos. So if I grab one of the demos for some STM32, does that include like a cube project? Is it a fully fledged demo that I can just drop into the IDE as well and build for?
Starting point is 00:30:43 Or is it a demo that's just defining the board and stuff? That's such a fantastic question. Yeah. And that's a big struggle because, you know, like we're building a simulator and at the same time, of course, in some sense, we're building, you know, all the embedded software in the world because we have demos and stuff. So historically how we approached this was we'd provide binary demos with some kind of binary. All this Renode stuff would be, of course,
Starting point is 00:31:12 open. And then you'd have a compiled binary just because explaining to people how to also go and compile the actual binary is 10 times the amount of work than getting them to install Renode. So what we have in Renode is a bunch of work than getting them to install Renode. So what we have in Renode is like a bunch of scripts that you can just install
Starting point is 00:31:29 Renode, you run it, you type one line, like essentially it's just start and the name of the file with the demo, like the script that's the entry point to the demo. And then what the script does, it actually downloads the binary from our servers, and it runs it in simulation. And if you want to put your own binary there, you just, in the script, you change one line, and here you go.
Starting point is 00:31:55 So we don't provide like, you know, KubeMX projects and stuff. Not because we couldn't, it's just like a huge endeavor to try and provide other people's demos. Actually, demos from ST or someone else should work, right? And so we provide
Starting point is 00:32:10 those compiled binaries because they're like this instant success thing. And then once this works for you, well, just replace the binary and run something else and see what happens. But there's this one endeavor that we've embarked upon
Starting point is 00:32:26 throughout the last year, which is called Renodepedia, or earlier, the Renode Zephyr Dashboard. That's the origin of it. And Renode Zephyr Dashboard is actually building hundreds of Zephyr RTOS binaries from source. So you can trace back the sources directly, compiling them, running them in Renode, seeing if it works.
Starting point is 00:32:49 It's also automatically generating all the Renode files because Renode has those building blocks. There's the CPU models, there's the IO models, different sensors, and so on. These are kind of building blocks from which you have to assemble a platform. Fortunately, Zephyr has device trees which describe what's connected where. So we can take that data, we can kind of generate the re-node description files
Starting point is 00:33:12 called REPL, re-node platform files, as we call them. And so generating it all together gives us the ability to kind of test Zephyr binaries at scale. And there, if you want to actually reproduce the entire thing, it's trivial because we give you collabs that kind of show you how to build that kind of binary. And a lot of it is for structure that you can just trace back directly to the sources.
Starting point is 00:33:39 So for Zephyr, it's been pretty simple because Zephyr is well-structured. It's easy to generate different kinds of binaries for different kinds of targets, right? And of course, it scales across different vendors, even different architectures with 5R and so on. So it's a good kind of, it has a good coverage of the entire ecosystem.
Starting point is 00:33:58 But you could imagine similar efforts for, you know, other operating systems, other, you know, or Kubemex or something. It's just a matter of there's some work involved in actually setting up the compilation and testing infrastructure to make sure that those demos actually work. So the Zephyr dashboard has been the biggest such endeavor from us and perhaps in a sense worldwide.
Starting point is 00:34:24 I'm not claiming it's the biggest such thing, but definitely one of the bigger and more ambitious projects. I think if you're into where do I get a demo that I can actually reproduce end-to-end, Zephyr Dashboard is a great place to start. Okay, well, I was going to add to that about Sysbus and cpu zero but i think you've covered all of that um so we have some listener questions um from benny uh has um is there a guide for dockerizing renoad for ci continuous integration or other larger scale use cases?
Starting point is 00:35:08 As mentioned, there's Docker images available. And basically we even have like GitHub action with Renode where you literally just have to submit like several variables and Renode is just there in a Docker image prepared for you. So absolutely, yes. There isn't a dedicated guide for Dockerizing Renode because it has been Dockerized. But if you want to learn how, you can just go and look at the Docker file
Starting point is 00:35:34 of the Renode Docker. And you can just make your own if you need a special image with Renode. But I guess the real... Like, if you don't want to recompile Renode, and we're trying to make the framework so that few people have to really recompile it, right? Like, it's
Starting point is 00:35:53 really people that want to do some hardcore development and develop some inner interfaces. But if you're just going to use it, if you're just going to add a little bit of stuff on top of it, then the portable release for Linux or whatever other installation that we have is enough. Meaning that you grab a vanilla Docker image and you can just install Renode on it and there you have Dockerized Renode. read on. And right now I can type at my device as if I was at the debug port
Starting point is 00:36:29 that I have usually connected to my computer through an FTDI cable. That should feel pretty familiar where like in the end what you see is the window right like there is a physical port you can see the cable but ultimately how you really experience your board is through this UART and we just open a window and we show you the signs and you can see the cable, but ultimately how you really experience your board is through this UART, and we just open a window and we show you the signs and you can type stuff and interact with the board. You know, like,
Starting point is 00:36:53 I think that's another topic, so perhaps I'll stop here. But, exactly. The virtual UART is kind of the first point of contact with Renote, I would say. Benny wanted to know if it's possible to do socket CAN. Why would anybody want to do CAN? Sorry.
Starting point is 00:37:13 Yeah. Having a bad CAN week. Well, yeah, true that. But I guess the automotive guys wouldn't agree. And there's a lot of CAN use out there in robotics and so on. And we've done virtual CAN setups. We haven't used socket CAN. We haven't bridged with real physical CAN connections from Reno.
Starting point is 00:37:36 But this is absolutely possible. We have not just, because I think someone mentioned we have virtual UARTs that we can also bridge into the real world, but we also have connected, like you can bridge to Ethernet networking as well, and generally networking, so you can have host-guest interactions of different kinds. CAN would absolutely be possible. It isn't there right now, but I think it'll come at some point when someone has a real use case where they need to talk to a physical
Starting point is 00:38:08 connected device, then we'll just have to implement that. Jonathan suggested I ask about Pokedex for Zephyr boards. Is this like Pokemon? Yeah, I love that question. Pokedex is, you know, how you kind of look up all the Pokemon in the Pokemon world.
Starting point is 00:38:27 I love the analogy where Renotepedia, the framework I was talking about, is kind of like this, except not for Pokemon, but for actual real hardware. The Renotepedia is kind of an effort to try to showcase, you know, how much diversity there is in hardware. It's a nice encyclopedia, basically. You can also think of it, the inspiration for doing Renalpedia in the first place was Ufopedia from XCOM, the XCOM games, where you'd go and get lost in the lore of the game. You'd get into this mindset where you're really kind of interacting with this world and looking up all the alien species and weapons
Starting point is 00:39:11 and whatever you have in that game. And I, at least, and I think there are people like me as well, could spend hours just browsing and just reading all those descriptions and flavor text and comparing different parameters, you know, of different, I don't know, weapons. It's just, I guess, engineers, many at least, have this kind of mind where they just like these kind of things. And of course, it has a practical,
Starting point is 00:39:37 like perhaps in a game, it isn't very practical. You just want to win the game. But in real life, when you're trying to document all of the world's hardware, you're trying to document all of world's hardware, they're trying to see what they're comprised of, like what kinds of relationships between different pieces of hardware there are. This actually becomes useful, like this kind of
Starting point is 00:39:55 data set where you try to take this hardware apart and take a look at what is this SOC? Like, how is this SOC related to the other SOC? What kind of IP blocks come into this SOC and make it what it is? How are these boards related together? Why is this Ethernet controller appearing in a bunch of RISC-V and ARM boards and
Starting point is 00:40:17 not even just ARM Cortex-M but perhaps Cortex-A? This is a fascinating story. You start seeing how the sausage is made, how the hardware is really composed of building blocks that ultimately are much like software components. When we're building software, we're using libraries. Similarly, when people are building chips,
Starting point is 00:40:38 they're using IP cores, libraries of sorts. And so uncovering that complexity and showcasing it for the world and trying to reason about it in a structured way is a fascinating story to tell, I think. And we're just getting started. This realpedia is there, it's full of stuff, but there's plenty more to be shown and said. Do you have any questions for us before we move on to RISC-V? I mean, I guess I had the question whether you'd actually used read or whatever, and I guess the question was
Starting point is 00:41:12 more like, you haven't earlier, but you've just started experiencing it, right? Exactly. I ran my first Reno thing, widget, Reno note during this podcast. So the answer is both yes and no. You haven't entirely convinced me. I mean, I'll go off and play.
Starting point is 00:41:37 To be fair, you're difficult to convince. I am very difficult to convince. I mean, I need to go read a manual on, oh God, AT commands. But also I need to go read a modem manual for different things. And then I need to go work on a CAN bus thing. You don't need to. Well, but I will. And then I have a device that's getting closer to production and has a bunch of sensors and a bunch of code and Bluetooth communications. And none of these would I immediately jump to Reno for. But you're a consultant. But I'm a consultant, which means that I would have to get somebody to pay me to want to do this. Yes. Which means that I would have to be familiar enough with this and convinced enough with it that I demand that they do that. This is why I'm saying you're a difficult target. I'm super hard to convince. is so long that I look at this tutorial and I see a couple of things I can probably work out,
Starting point is 00:42:47 but it would take me a solid eight hours to figure out how to make Renode useful to my clients. And if at the end of that eight hours I couldn't, then that's billable time wasted. So, yeah. I mean, I can see how it would be useful. No, I mean, it's definitely the thing with open source is that that's why I kind of like running a company that does open source, because I'm not really trying to tell everyone,
Starting point is 00:43:20 oh, this is the best, you have to buy it, right? It's just, it's out there. So you might not be convinced right now. Some time will pass. And we've seen that a lot of times where we've had interactions with people throughout the years and they've perhaps gone from being like, what is this?
Starting point is 00:43:35 Why do I need this? To being absolute zealots about it. And we've had other people who never became convinced, right? And that's also fine because it's just open source. You can just grab it and use it, but you don't have to. You don't have to interact with us to try it out. Of course, we try to make documentation better and better, but there's never enough time.
Starting point is 00:43:59 So definitely construction criticism in terms of how easy it is to set up is always welcome. And I think we should, for sure, work hard to expose the coolness of Renode. Renode PD is one of those efforts, but it's definitely just one thing. So that people get the point easier. They're more grasped by the immediate benefits. And it's fine for some people to never actually be in a position
Starting point is 00:44:28 where Renode helps them because it totally depends on your station life and your way of working, your clients. So yeah, it's perfectly fine not to want to use Renode, especially at a specific point or in a specific project. I think that the sweet spot is when some scales suddenly start to appear and you have to work with more people and coordinate between them. And hardware suddenly starts being more of a pain
Starting point is 00:44:59 than this nice shiny thing on a desk that you like to play around with. So we see a lot of bigger clients approaching us and saying, oh yeah, I have many development teams working together. How do I make them collaborate more effectively? And that's where Renode really comes in. Yeah, I think our situation is weird because we're often coming into small clients at the mid to late development stage and everything's a panic so it's very difficult to say oh you need to take a step back and simulate everything yeah oh no i absolutely understand this viewpoint
Starting point is 00:45:36 because it this has happened to us many times before as well and in those cases it's probably not a good idea to go and try to you know to do something they aren't used to doing and so on. But what I was going to say was projecting backwards in my career, if I had had this at various other times, I would have been over the moon because we tried this at Fitbit, but nothing existed. So some people tried to do a QEMU thing from scratch, and it never really went anywhere because it was too difficult. And if we'd had this at Fitbit, it would have gotten a ton of use because we really needed, you know,
Starting point is 00:46:14 CI stuff to work at scale on devices. I mean, we had just horrible, you know, racks of Mac minis and stuff and attached to watches. I think we had cameras at one point. It was just, you know, we had all kinds of Frankenstein's monsters to try to get device testing to scale. And we work with clients like that.
Starting point is 00:46:33 Yeah. Exactly. And then I can tell you a story. We'd actually talked to the Pebble guys before they were acquired by Fitbit, right? And we just talked to them a little bit too late. And the conversation never matured before they were acquired.
Starting point is 00:46:48 But you can imagine a parallel universe in which we reached out to them a year earlier and we'd been using Renode when Fitbit acquired Pebble. So I totally agree. Probably these kind of clients and use cases are where people are throwing an insane amount of resources on testing anyway right but because testing with real hardware is hard
Starting point is 00:47:13 they're kind of wasting time and money most of the time that's where renote is especially handy and i think if i was starting a project of my own from scratch. I'm not that into figuring out the hardware. If I have an application idea and I want to play with it and prototype, I'm more inclined these days to try to do something in software than to grab a board and get upset at the board. So if I were to start my own project,
Starting point is 00:47:41 something like Reno would be somewhere I would look to get that first few months of okay, let's play around with this. I see where this is. The other piece that I would like to use it for, but I'm not sure yet, is I teach a class about embedded systems.
Starting point is 00:47:58 And we send students boards, but and for the most part, they all get the same board. So, and one of them was a nucleo board that you, that is on, uh, the Renodepedia. Um, but I don't know, I have a few, uh, things in Walkwee that they, that are part of their exercises so that they can have code that they know runs and can walk through and all of that.
Starting point is 00:48:30 But I don't know how I would put Renode in that without making it a whole chapter. I mean, Walkway is like, here, go play with this. But Reno would require at least a lecture and not just a hand wave. Yeah, I mean, Walkway is a great idea where it runs in the browser, so you can play around with it very easily.
Starting point is 00:48:59 And certainly that kind of experience is something we want to move towards as much as we can. I would say that playing around with things in Renode doesn't necessarily have to be a whole lecture, but sure, if you wanted to get out all the advantages, it becomes more than a lecture. But the Colab stuff, as an example,
Starting point is 00:49:23 is something you can try out without any prior experience um so it's more a matter of the fact that uh what we also has this kind of visual you know editor that allows you to kind of build a this kind of nice uh connected uh setup so but that is something you could do we know too It's just that we have had a few approaches to this kind of thing. It's fundamentally not trivial to do it well. Especially for multi-node systems. Because of course if you just say, okay, I want to focus on a single node and you make some simplifications, then of course
Starting point is 00:50:04 it becomes easier. And if you wanted to, for example, specifically focus on the education space, I think you could do a great job, and Walkway does a great job, right? But the thing is that we work with pretty complex use cases with clients that have multi-node systems and stuff, and just visualizing this
Starting point is 00:50:21 and making it possible to work with this graphically is so hard. We've tried. So we've always fallen back to making sure we have a good API, we have a good textual command line driven flow. And then on top of that, you can build any sort of cool visualization or visual system. And we definitely want to do more of this. And as the framework grows bigger, as the team gets bigger and so on, visual system. And we definitely want to do more of this.
Starting point is 00:50:46 And, you know, as the framework grows bigger, as the team gets bigger and so on, that's an obvious direction. But it's just not something you can easily do and make everyone happy. No. You really can't. And if you are making everyone happy,
Starting point is 00:51:00 you're probably not actually getting anything done. You're lying. Exactly. Someone's lying. Yeah, no, I mean, this is, things like Reno seem to be kind of a holy grail in my mind. That's this shining thing on the hill that everybody wants to have. But it, you know, the reality of the embedded systems world is such complexity that you have that trade-off. Either we meet the complexity with something that can handle it and is therefore complex, or we simplify things and you can't do some stuff.
Starting point is 00:51:34 Exactly. Yeah. You end up looking for the sweet spot. And I guess it's everywhere in life and in all of engineering, right? There's holy grails. You want to aim high, but you can never really do 100% of what you'd assumed initially. hearing, right? There's holy grails. You want to aim high, but
Starting point is 00:51:45 you can never really do 100% of what you assumed initially. And that's fine. And Renode helps a lot of people. And yeah, as I said earlier, it's not going to help everyone do everything. We're trying to take the burden off. Even in the testing,
Starting point is 00:52:02 when people ask, should I test in hardware, should I test in Renode? We say, look, you should do both, right? I mean, it's just that in Renode, you're going to be able to quite easily test a lot of things that would be hard to test in hardware. That saves a lot of time. And then once you've saved that time, you can devote that time to other things
Starting point is 00:52:18 or perhaps to testing in hardware better, right? The stuff that you really need to test in hardware. So it's all about the Pareto optimal way of working, really. But you said both, and I'm like, okay, you just doubled my testing. But I know where he's coming from, that
Starting point is 00:52:36 the re-node version of testing would be much easier to debug, and much easier to make more complex instead of the simple testing I would get in a lab. But when he said, you have to do both, I'm like, no. Well, when I hear somebody say that, I hear, okay, you can do your continuous integration testing
Starting point is 00:52:52 in Renode, and maybe you wouldn't want to do your user testing in Renode unless it was something that you could do that with. But if you had a wearable, that's obviously not going to work. So you have to partition the types of testing that are appropriate for your system. Yeah, that's what I meant meant and of course like you can even take some of the user testing and some stuff that the users have detected like you know they're trying to input stuff and things
Starting point is 00:53:12 are not working you can actually try to record and replay these kind of events you know so mixing up like real testing with virtual testing is actually pretty cool if you if you have a good understanding of what's you know what are the strengths and weaknesses of both approaches but i agree it's typically it's just different kinds of testing that will happen in the virtual versus the physical world and certainly i'm talking about deployments of thousands or at least hundreds of units you know i'm not talking about a hobby project where you know like it's you don't really need to do so much testing or or just very small deployments where you could literally imagine someone going and testing things manually because there's just five things so brisk five uh you mentioned that earlier uh how are you involved
Starting point is 00:53:59 with it well quite deeply in the sense that we've been around since the very beginning of RISC-V. I mean, not the very beginning, that's obviously Berkeley. But like the beginning of the foundation, 2008, 2014, 2015, we got involved early. We kind of started building some first RISC-V implementations. We worked with Sci-5, we worked with Microchip. That was that built the first mass market SOC on RISC-V. We have a lot of RISC-V clients, and we're also very active in the entire ecosystem,
Starting point is 00:54:30 not just RISC-V itself, because RISC-V itself is actually going well. And, you know, you don't really need to push it very hard for it to be successful. You can already see it being very successful. But there's this entire ecosystem of open hardware around RISC-V, you know. Open source implementation of RISC-V, that's one thing.
Starting point is 00:54:47 But I mean all the other building blocks of an ASIC or all the tools that go into making an ASIC. All this, we believe, will eventually be open source. Just like in software. Everything is pretty much open source. And of course, you have proprietary icings on top very often, but most of the world's software is built from open source building blocks with open source tools. And the same goes with hardware, we believe, just in the longer
Starting point is 00:55:14 timeframe. So RISC-V is definitely a key focus and something we're very deeply involved with. I myself am the marketing chair for the Chips Alliance, which is this group that's building all these open source hardware, building blocks and tools for hardware. Yeah, so we spend a lot of our time. Also, for example, in Europe, the EU is putting out requests. Can the industry tell us what needs to happen for Europe to be
Starting point is 00:55:46 competitive in terms of semiconductors? And so we typically be part of these kind of groups that would say, hey, you need, Europe needs to do more open source or the US needs to do more open source. Anyone that wants to be competitive needs to kind of use RISC-V, you know, needs to do open source hardware to stay relevant. That's our belief. I remember quite clearly when we didn't all run open source compilers. Yep. When we had to pay for every compiler, not just for the special ones that work on a particular processor. Absolutely.
Starting point is 00:56:21 And that changed, and that's how the world is. It needs to change because it's not just about the money. It's about having to ask for permission. you know you're just gonna go somewhere else you're gonna like people from hardware they will very often just go and start doing ai or web development because you know hardware is just too proprietary and there's too many um walls uh and people stop caring that's and people are complaining a lot oh why are people not going to study hardware and why they're not taking up those kind of difficult topics? And part of the reason, I'm not saying it's the entire reason, but I think part of the reason is that if you have a choice between, I grab a laptop, I just grab a bunch of front-end software libraries and on, and just build things, I kind of result in five minutes versus embedded, where you have to do a lot of hand-waving to even get started. And it's not just the physicality of the world. That's the one thing we're trying to solve with Reno,
Starting point is 00:57:39 but it's also about the licenses and the obscurity. If that was different, I think it would be much easier to attract new talent to focus on hardware rather than other areas. But because it is open source, what happens if it gets too fragmented? What happens if every vendor adds their own custom instructions? That question is, of course, very popular in the RISC-V world. And the answer is you have to make RISC-V so relevant and the foundation itself, or international it's called right now,
Starting point is 00:58:19 so relevant that people just can't afford to fragment off. You can see it with Linux. Linux is also very fragmented in the sense that everyone has their own fork. But at the end of the day, if you want to be relevant, you have to stick close to the mainline Linux, at least to a certain degree, to be able to benefit from all the mainline development of Linux. Similarly, if you want to benefit from what the international is developing and building into the standard and so on, you can't just invent your own stuff.
Starting point is 00:58:50 You can do it for a time, but that'll just cost you money and time in the longer run. So I guess the answer is, the RISC-V international has to do a good job and stay relevant. And it is doing a good job, and it is spinning up new efforts to standardize different profiles, as an example, just to kind of show the way, how would you build this class of RISC-V SoC? How would it work? What kind of features does it need to have? What kind of software is that associated with? RISC-V is trying to map that out using various working groups. work, what kind of features does it need to have, what kind of software is that associated with.
Starting point is 00:59:32 RiskFive is trying to map that out using various working groups so that people know how to do it so that they stay in the comfort zone. And if someone wants to veer off, they're allowed to. They can just do things differently and fork off, but probably they won't be very successful because they'll have to support themselves, they'll have to build their own tools and so on, which is hard and costly and time-consuming. Comparing it to Linux makes a lot of sense to me because there are big Linux distributions. We all heard of Ubuntu and Debian and Fedora and they all have, I don't know, their own mascots.
Starting point is 01:00:01 I don't know what the difference is between them. But then we also do have some embedded Linuxes that are far more boutique and far more customized to what they are or what they're intended for. So I could see how RISC-V could be similar where you have the big ones and then maybe you do go off and have your own set of features. And then you deal with having your own set of compilers. And being open source isn't a unique... Being open source doesn't lead it necessarily to being fragmented any more than proprietary
Starting point is 01:00:37 because x86, I don't... I mean, AMD and x86 had a pretty... There was a fork about 20 years ago, and it was pretty significant, and things reconverged, and now, you know, everybody supports everything else that everybody came up with. But there's precedent for things fragmenting even in the majors in the past. I always talk about open source as this kind of switch, whether the source is open or not. It has implications, but the definition of open source itself is just about the availability of the source and what you can do with it. But whatever happens, whether the ecosystem becomes fragmented or not,
Starting point is 01:01:16 it's different kind of dynamics at play. It's not necessarily automatically so that open source is fragmented versus proprietary technologies are very consolidated. It can actually be the other way around, right? Open source is a great method for consolidating things where people flock behind successful projects and, you know, work together as part of foundation or something to improve one or a group of projects together versus perhaps proprietary products where you have, you know, lots and lots of options and none of them works as you want it to. So, yeah, I don't think fragmentation is really related directly to open source. The custom extendability of RISC-V perhaps can be viewed as this potential problem. But again, it's a standard.
Starting point is 01:02:02 It's, you know, a standard of ways. Even in Reno, for example, because this is standardized, we have a very easy way to add support for custom instructions so that even if people come up with 100 new custom instructions, it's easy to support them in the tool chain, right? Because everyone knows how to do that, and it's baked into the spec itself. Will RISC-V chips be cheaper because they don't have the licensing cost?
Starting point is 01:02:29 Ultimately, yes. Right now, of course, it depends on the space you're looking at. RISC-V has some catching up to do in the high-end spectrum, but it's growing very fast. Already in the low-end space, you can see really cheap RISC-V options coming from China, but it'll take time. Of course, it's not that right now
Starting point is 01:02:50 you'll get a comparable RISC-V chip to the same kind of ARM chip, and that's kind of obvious. We're much earlier in the RISC-V lifecycle. But ultimately, yeah, it's going to be cheaper, but I don't think it's about the cheapness
Starting point is 01:03:06 of it. I think it's about the freedom to design whatever you want. That's the more important aspect of RISC-V. And if I am running a Cortex M something, M0, or even M4,
Starting point is 01:03:22 and I want to go to a RISC-V processor, what should I be looking at?, and I want to go to a RISC-V processor, what should I be looking at? I don't want to build my own processor. I just want to buy one. Just a microcontroller. I think the Espressif C3 series is kind of a decent, you know, level of support versus price versus performance at this point.
Starting point is 01:03:45 If you're looking at the Cortex-M space. And let's see, there were a couple more questions you put for us. Okay, I'll ask Christopher, but this is for Michael. What is your take on Rust and Embedded? Have you seen much uptake? I've seen uptake elsewhere i have not encountered rust in my daily work um i haven't seen it in any clients i'm sure there are people other spaces that are using it and i see that on social media you know people are integrating into things but
Starting point is 01:04:19 uh i think it's fairly niche at this point still. Yeah, I think it has its place. I think Oxide and high-profile companies like that are the biggest examples that I've seen so far. But I have not personally used it, and I have not had a client ask for it, and I don't anticipate using it in the near future. I've had a client recently ask me for C Sharp, but not Rust. Well, yeah. And Python. I mean, Python I get a lot. I did recently see a job posting that requested Rust,
Starting point is 01:04:59 but I think it was one from Ferris Systems or one of the other ones that basically is named for Rust. Rust Shop, yeah. One of the Rust-focused ones, yeah. We do get to work with Rust from time to time, but yeah, I agree, it's fairly niche. I'm interested to see how it grows, certainly with the Linux kernel adopting Rust as a potential language to write drivers in.
Starting point is 01:05:21 I think that's going to be a huge driver. But yeah, I'd like to see more of it. It's kind of fun to see some innovation in that space. And I've seen people do some pretty crazy stuff with Rust and Embedded, but yeah, I also haven't seen much actual real-world
Starting point is 01:05:37 projects approaching us and saying, oh, we totally need to use Rust for this. With some notable exceptions. We have some really nice work going on with Rust, but it's a minority. I would like Rust better if they weren't so evangelical. But that's just me. I think I haven't seen... I was about to say, there was a lot of excitement and stuff,
Starting point is 01:06:04 for lack of a better word, evangelical stuff about Rust like two years ago. I haven't seen anything in the last couple of years. It's just kind of quieted down and people are like, well, here's this language and I'm using it for this. I haven't really seen that much. Yeah, I watched some Euro Rust talks. All of them had a section that was called Preach.
Starting point is 01:06:23 But you're at a Eurorust conference. Yes, but I didn't... It's like going to a superhero movie and getting mad about capes. Point taken. I love the analogy, yeah. Okay, and let's see, what else
Starting point is 01:06:41 do we have for you from our listeners? Ah, one more about Renode going back. Again, from Benny, how do you create GUI elements in Renode? That's a very detailed question. I think Benny might be using this. What is a GUI element for me who hasn't used Renode? Yeah, I mean, I don't know what the question is about is it more about you know uh how do you
Starting point is 01:07:06 create a part of the soc that's capable of displaying gooey stuff but i i believe that probably what's meant is how do you create like a visual representation of the board oh yeah yeah i would guess that's the the question's origin And the answer is we have some examples. We've done some web-based visualizations. And again, we'd love to do more. And we also have, like, Renode has a library called xwt built in. So if you want to do like a desktop style visualization of something,
Starting point is 01:07:40 we have a logging utility that's visual. We have some kind of, we have the ability to do such things, but we don't have a framework-wide way to show you the board and everything that's going on with it visually. Again, not for lack of the will to do so, or because we haven't tried. It's just difficult to build out this feature in a very consistent way that works for everyone.
Starting point is 01:08:10 So there's two ways. Either you can go at a desktop style of XWT, or you can do some kind of a web-based visualization where you just communicate with Renode over some kind of a socket or something. And we've done that too. There's examples there. So, yeah.
Starting point is 01:08:28 But we're always happy to talk about these ideas. Ultimately, of course, things like Walk.Wi are a good inspiration. And you'll certainly see more of this kind of stuff in the future. More specifically, I feel like we should send Benny to a discord do you have a discord? I'm afraid not it's an ongoing discussion people are asking
Starting point is 01:08:51 and it's just a matter of if you do set one up you actually have to maintain it and talk to people about questions in real time talking to people is overrated sorry it's definitely is overrated. Sorry.
Starting point is 01:09:07 No, it's definitely not overrated. It's very difficult. You have to do it right, right? You have to kind of be able to answer. As we talked in this podcast, Reno is not always useful for everyone in every context. And sometimes it's just difficult to explain when people focus very much on what it cannot do or that it doesn't work for a use case.
Starting point is 01:09:28 It's like, yeah, it's not supposed to do everything. That's the kind of conversation that's the hardest, I guess. And we will have to set something up, of course, at some point. But right now we're mostly using GitHub issues to communicate with the community. Yeah, but the request is out there. And we're just trying to make sure that if we do it, you know, and when we do it, we do it right. And we can actually afford the bandwidth to, you know, make sure that it's high quality and we observe some code of conduct, etc, etc.
Starting point is 01:10:01 Yeah. Michael, it's been really good to talk to you. And I bet I probably should go look more at Renode. It sounds like it would be very useful in many situations. Do you have any thoughts you'd like to leave us with? Perhaps that open source that we can touch upon a number of times today is this thing that's not just free, you know, as in doesn't cost anything, but it's more a very pragmatic way of solving a lot of
Starting point is 01:10:32 problems. I've talked about hardware a little bit, but just the sense of collaboration in general, if making things open just helps people work together very easily helps science helps the advancement of mankind in general so i tend to look at it as a good thing and also a good way to do business right it's not just ethically nice to be working with open source it's also at least for us it has been a very successful story where our company is growing very fast because we're working with open source. So yeah, remember that it's not just about it being free, but it's more about it being accessible for everyone and helping people collaborate better.
Starting point is 01:11:18 There are different kinds of free. Our guest has been Michael Gelda, co-founder of AntMicro. We'll have many links in the show notes, including to this collab I'm playing with. Thanks, Michael. Thank you very much. Thank you to Christopher for producing and hosting. Thank you to our Patreon listeners Slack group for their questions. And of course, thank you for listening. You can always contact us at show at embedded.fm or hit the contact link on embedded.fm. Now a quote to leave you with. I probably should have chosen something about open source,
Starting point is 01:11:53 but I'm still very much in the murder bot world. So this one's from Martha Wells. All systems red. This is murder bot. I could have become a mass murderer after I hacked my governor module. But then I realized I could access the combined feed of entertainment channels carried on the company satellites. It had been well over 35,000 hours or so since then. Well, still not much murdering, but probably, I don't know, a little under 35,000 hours of movies, serials,
Starting point is 01:12:25 books, plays, and music consumed. As a heartless killing machine, I was a terrible failure.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.