![Emez Labs](/img/default-banner.jpg)
- 21
- 11 988
Emez Labs
Poland
เข้าร่วมเมื่อ 4 พ.ย. 2010
Hello, I am Mateusz Stadnik. I am a passionate embedded software developer with almost 9 years of commercial experience. I want to share some of my hobby projects on this channel.
If you want to reach me: matgla@live.com
Channels miniature license: "This miniature was created by Copilot, an AI companion."
If you want to reach me: matgla@live.com
Channels miniature license: "This miniature was created by Copilot, an AI companion."
I Made My Computer Which Is Finally Alive
In this episode, I did the last fixes necessary to power up the whole MSPC board (my custom RP2040 development board).
It is the continuation of my first video: th-cam.com/video/RNaJlmq__Sw/w-d-xo.html.
It took me a while to implement the Yasboot bootloader functionality necessary to boot South Bridge MCU firmware.
Now that the rollercoaster just started, having the working board in the next episodes, I will implement a custom physical interface (similar to SPI/QSPI), VGA card, and many more things. For sure it will be fun!
Impostor video:
th-cam.com/video/nTsvb-8v5cs/w-d-xo.html
Repositories
Be careful WIP, will change in the future:
github.com/matgla/Renode_RP2040
github.com/matgla/Yasboot
github.com/matgla/mspc-south-bridge
github.com/matgla/mspc
Chapters:
0:00-0:18: Intro
0:18-0:36: MSPC South Bridge Firmware
0:36-0:44: RP2040 resoldering
0:44-1:20: Fixing Power Supply Issue
1:20-1:37: Verification of North MCU
1:37-1:59: Renode - Multinode simulation
1:59: Outro - future plans
It is the continuation of my first video: th-cam.com/video/RNaJlmq__Sw/w-d-xo.html.
It took me a while to implement the Yasboot bootloader functionality necessary to boot South Bridge MCU firmware.
Now that the rollercoaster just started, having the working board in the next episodes, I will implement a custom physical interface (similar to SPI/QSPI), VGA card, and many more things. For sure it will be fun!
Impostor video:
th-cam.com/video/nTsvb-8v5cs/w-d-xo.html
Repositories
Be careful WIP, will change in the future:
github.com/matgla/Renode_RP2040
github.com/matgla/Yasboot
github.com/matgla/mspc-south-bridge
github.com/matgla/mspc
Chapters:
0:00-0:18: Intro
0:18-0:36: MSPC South Bridge Firmware
0:36-0:44: RP2040 resoldering
0:44-1:20: Fixing Power Supply Issue
1:20-1:37: Verification of North MCU
1:37-1:59: Renode - Multinode simulation
1:59: Outro - future plans
มุมมอง: 1 641
วีดีโอ
C is The MOST Beautiful Language!
มุมมอง 4.4K14 วันที่ผ่านมา
This is a short video that seeks out old civilizations. To boldly go where no man doesn't wanna go today! Let's see my old code for one of the programming challenges written in C. Used icon from: commons.wikimedia.org/wiki/File:C_Logo.png commons.wikimedia.org/wiki/File:C_Programming_Language.svg Link to exercise: pl.spoj.com/problems/SUMAN/
Safer C++ - Better C++
มุมมอง 59721 วันที่ผ่านมา
C is having trouble. Governments and huge corporations are moving quickly to transition to memory-safe languages. But that’s not always an option, so we have to fight to improve our C toolchains and language bases. In this episode, I want to share my thoughts about improving code (mainly C , not only). Some are in development, and some already exist. If you are interested in programming, especi...
First Milestone! Thank You!
มุมมอง 753 หลายเดือนก่อน
I want to express my heartfelt gratitude to all of you who have watched, liked, commented, subscribed, or provided any other feedback! Thanks to your support, this channel not only continues to exist but is also making progress!
Yasboot: My RP2040 Bootloader Got Configuration Parser And LittleFS
มุมมอง 503 หลายเดือนก่อน
Welcome back to my Yasboot series! In this episode, I am taking my custom RP2040 bootloader to the next level by adding a configuration parser called Yasconf, and integrating support for LittleFS. Don’t forget to like, share, and subscribe for more updates on this exciting project! Related Videos: th-cam.com/video/Lg0guoSGWn4/w-d-xo.html Repositories: github.com/matgla/Yasconf github.com/matgla...
MSPC(Custom RP2040 Board) Goes Into The Matrix! Software Simulation Of Real Hardware Using Renode!
มุมมอง 2634 หลายเดือนก่อน
In this episode I am adding hardware simulation basic parts of MSPC board using Renode framework. 🔧 What’s Covered: MSPC Board Simulation: Walk through the process of simulating the first few components of an MSPC board. From memory-mapped registers to more complex interrupt-based interactions! Raspberry RP2040 MCU Peripherals: Dive deep into the SIO integral divider and Timer/Alarms peripheral...
My Cortex-M dynamic linker is working! The story of the two modules!
มุมมอง 1155 หลายเดือนก่อน
In this episode, I am resolving a conflict between two modules: Floppy and Stepper. They are not able to resolve it on their own in the current implementation. Let me share with you the latest (at least for now) episode of YasLD implementation. After this episode, I have a working dynamic linker for Cortex-M0 microcontrollers. I will focus on showing you how to implement such a dynamic linker a...
My dynamic loader can take from external world
มุมมอง 9407 หลายเดือนก่อน
In this video, I will share with you my adventure with adding support for importing symbols from external world to modules. It’s next step towards implementation of Yasld which will be dynamic linker for Cortex-M microcontrollers written in C . Thanks to importing symbols I can now write modules with highly reduced size, thus they can share standard libraries with runtime system. This episode h...
How I created dynamic loader in C++
มุมมอง 2048 หลายเดือนก่อน
In this episode, I embark on an exciting project known as Yasld (Yet Another Simple Linker Dynamic). The video is divided into three key segments: Theoretical Deep Dive: We delve into the world of dynamic loading, a topic rarely explored in the realm of microcontrollers. Get a comprehensive understanding of the concepts and principles involved. Project Development Time-lapse: Watch the project ...
#9 Filesystem Comparison for Embedded Ecosystem: Selecting the Perfect Filesystem for Yasboot
มุมมอง 96ปีที่แล้ว
In this enlightening video, we delve into the realm of filesystems for embedded projects, focusing on selecting the perfect filesystem for the Yasboot project. If you're a developer or enthusiast working on embedded systems, this is a must-watch! Join us as we explore the specific needs and requirements of the Yasboot project from a filesystem perspective. We'll provide a comprehensive comparis...
#8 Ever Wondered How Your Computer Boots Up? Adding MBR to Yasboot
มุมมอง 110ปีที่แล้ว
Welcome to another episode of Yasboot implementation progress! In this video, I will show you how to add MBR (Master Boot Record) parsing to Yasboot (Yet Another Simple Bootloader). I will explain what MBR is and why it's important for a boot loader, and then demonstrate how to implement MBR parsing in C . In addition, I will touch on new script creation to create a drive image for the MSPC (Ma...
#7 CI/CD for Yasboot: Using GitHub Actions, Docker, and SonarCloud for Automated Testing
มุมมอง 130ปีที่แล้ว
In this video, we'll explore how to add continuous integration to the Yasboot project using GitHub Actions, Docker, and SonarCloud. Continuous integration (CI) is the practice of automatically testing code changes as they're made, and it's a crucial part of modern software development. First, we'll set up a GitHub Actions workflow to automate the testing process. We'll use Docker to create a re...
#6 The Ultimate Guide to Embedded System-Level Testing with Behave (Yasboot #3)
มุมมอง 153ปีที่แล้ว
In this video, you'll learn how to add system-level testing to your embedded project using popular testing tools like Behave, Pexpect, CMake, and Kconfig. I'll walk you through the process step-by-step, based on my own project Yasboot. With these powerful tools, you'll be able to test your project in a realistic environment and catch bugs before they make it into production. Behave is a Python-...
#5 Newsletter about my channel (and Q&A)
มุมมอง 107ปีที่แล้ว
Newsletter about changes on the channel. Let me know what you think about them? :) 0:00 Hello 0:33 What exactly is that channel about 2:07 What's the meaning of MSPC 4:01 What is a Yasboot and why is needed 4:32 Content form changes 4:55 Titles 5:06 Schedule of uploads 5:20 Q&As
#4 How to create Hardware Abstraction Layer for C or C++? (Yasboot #2)
มุมมอง 640ปีที่แล้ว
#4 How to create Hardware Abstraction Layer for C or C ? (Yasboot #2)
#2 MSPC hardware overview and RP2040 booting process
มุมมอง 116ปีที่แล้ว
#2 MSPC hardware overview and RP2040 booting process
#1 Custom RP2040 board (codename MSPC) soldering
มุมมอง 851ปีที่แล้ว
#1 Custom RP2040 board (codename MSPC) soldering
Nice job with Renode simulation ;D I myself tried to implement RP2040 but lack of time and development for other MCU made me drop it for few months. Maybe I will put my hands on it again! Powodzenia ;)
Thanks :) currently I am working on adding PIO simulation for the next part. I think I will release a video on how to use it on other projects. Of course it still will be in work in progress mode with contributions warmly welcome :) in which environment have you tried to implement RP2040?
@@matgla95 to be clear - by implementing I meant Renode implementation. I'm more focused on other MCU series right now ;) looking forward to see the video on how to use Renode. Maybe I'll learn something new from it :D
What does the dumbass arrow pointing at?
In thumbnail? At my computer's PCB.
main(k){while(scanf("%d"))printf("%d ",k++*k/2);} is it a valid solution? It is 3 characters shorter. Also the original version with "%d " gave me segfault so I went with "%d ". I would like to try more but I really don't understand the coding challenge here. Why do we even scan for numbers? The rules are unclear to me, perhaps it's due to traduction from polish.
So, let me clarify a little bit. The code is on SPOJ and is executed for 10 test cases. Test data is provided on STDIN in the form: 1 <- test case 1, n = 1 8 <- test case 2, n = 8 ... rest 8 test cases. Your code should output answers on STDOUT separated by whitespace for each of such test cases. According to segmentation fault. I see two problems in the code that you wrote; scanf in the original code reads a decimal number from STDIN in storing it in the k variable; thus, scanf("%d," &k), otherwise k is uninitialized and scanf depending on libC implementation may segfault, it thinks it has one argument according to format string, but it's not placed in argument list and is writing data to some unexpected memory address (most probably null). Additionally, there is '~' before scanf to detect EOF. Otherwise, the program will not end.
Erlang, any ML, any Lisp and Haskell are beautiful. If someone finds C beautiful they also find spoiled foods yummy.
I think beauty is subjective and depends on context. Here I used it a little bit ironically, since you can still do things that should not be allowed, at least by default. Hopefully compilers are evolving and, i.e. GCC 14 rejects such code by default which is good in my opinion!
Out of curiosity, why the GNU GPL rather than the GNU AGPL? The GNU AGPL is stronger and would prevent anyone from taking your operating system and turning it into a cloud service and refusing to give anything back to you. As for the hardware, were you aware of the CERN Open Hardware License when you licensed it? The CERN Open Hardware License 2.0 Strongly Reciprocal is essentially the GPL for hardware rather than software.
Thanks, for that comment! That software is created mainly for educational purposes. I don't think that I will be able to create OS/Bootloader/(What ever else) that is able to compete with any other not single person project. Also I don't see any real usecases to run it over network. It's closely related to specific hardware. For other cases there are better tools available. But if someone will find a way to use it: good for him! :) I selected GPL for software, because I like that part you have to share with community if you wanna use it. But I wasn't digging deep through all licenses availble, I just selected first one that was fine for me. AGPL also fits, but I don't think I will change all license headers right now. About hardware part, it's an experiment. I am only hobbiyst, so I decided to publish with just MIT. Basically to allow anyone to do whatever they want with that.
@@matgla95 One of the good things about the GNU AGPL is that the network use is redistribution clause doesn't really apply if you do not make the software available over a computer network. In that sense it is pretty much identical to the GPL for non networked software, but if anyone turns it into a service as a software substitute then the network use is redistribution clause kicks in immediately.
I guessed correctly but I liked anyways! Good video
Thanks! :)
But it is defined as 'undefined behaviour' the part of the code >>k++*k/2<< since in C theres no defined order of evaluation of operands, k++ could be evaluated before or after k/2 making the result inconsistent and compiler dependent. So lets be aware of that. though if its working for that issue its a fair game
Sure! Good point and that one is even reported by GCC, when using the -Wall flag :) but the goal of that exercise is to abuse whatever you can in the provided compiler to achieve the smallest possible source code
Good job
Thanks!
Why is there a space between %d and ?
Originally that code doesn't contain . It was added just to better presentation of execution. The testing from SPOJ is executed for many inputs from stdio and space is necessary to separate outputs for test cases.
based
Thanks :)
Most impressive and very interesting. Well done.
Thanks!
My First Programming language was python, then I moved to C. When I was Learning python i struggled with logic building. But After learning C im getting better with Logic, and Also Better at JavaScript.
Yup, different languages due to different paradigms enforce to improve the skill set and it seems you have a win-win outcome :)
I see Windows, I leave. Edited to get rid of the heart sticker.
Yes you're right, I have a problem with recording on Linux ( my camera interface produces crazy delays, most probably Nvidia again broke their driver xd ) which I haven't solved yet, so I temporarily switched to windows.
@@matgla95 That's no excuse to have it running in the background. Honestly, I'd be embarrassed. You do you though. I'm sure your excuses will safe you from the social credit system you help implement by running spyware. Oh, and don't get me started on the smart phone which I'm pretty sure you have too.
No no, I am only using pigeon post :)
@@matgla95 You sound like a smoker telling me that smoked meat takes longer to go bad. I guess the copium is always real. Anyway, you keep making excuses for being the corporations' female canine. Another thing though. Are you actually in Poland? We are always looking for Team Fortress people in Europe. I wrote a fork of the original for the Darkplaces engine with more emphasis on tactics and stealth.
Jerk
What does the tilde ~ symbole mean in C ? Just before the scanf
It just performs bitwise negation on value returned from scanf function to break loop when got EOF ( which normally is -1 ).
imagine not knowing how long your integer primitives are because it depends on the platform nice elegance bud
thanks, It's even worse when types promotion come to case when you have different type sizes on different platforms.
stdint.h... Anyone not using them is just stupid or has an old codebase.
Answering your question about what languages I want to learn are: I've been trying to learn Rust for months, I took courses and read books but I haven't made any progress, I feel stuck, my goal with Rust is the backend, even in the same book it tells you that before that you must know C++. My biggest dream is to master Rust and then C++. that's why I started following your channel, thanks
Yes, Rust/C++ require a lot of time invest. They are really hard to master, but still you can write good code without mastering each piece of a particular language.
very thanks, greatings saludos desde Bolivia, querido amigo.
There are better languages for backend
@@thecoolnewsguy For the niche I am aspiring to, they are the fastest and what I need to learn. Thanks for your comment, greetings
I'm an absolute beginner in C programming, watching your video gave me the impetus I need to learn C language upto becoming a master. Thank you and have a felicitous intellectual journey ahead!
Thanks! let's do it! Keeping fingers crossed!
can u give us a link to the challenge
Sure, pl.spoj.com/problems/SUMAN/ And more exercises and challenges like this are here: www.spoj.com/
@@matgla95 I have a 52 letter solution but how do I make it use the correct compiler :c
And that was one of the reasons that I decided to publish that video :) it's an old challenge and the current solution is easy on the internet to find, so I hoped someone will try to reduce it more! Unfortunately since the whole website is old and I am not even sure it is maintained, the latest compilers are not available.
I lied, I misscounted, sorry for my ignorance :D
@@CodingWithDox I am glad you tried. Someday someone for sure will find a better solution :)
Any advice for learning to program, without staying in the infinite loop of the courses, any tips that were useful to you, thank you
I always recommend doing actual programs instead of courses. To be honest I almost always boycott most of course, it's too boring for me instead I am using them as a "what to learn next" list. Then think about what program you could wanna write and try to do it. It won't be perfect for the first time, but you can gain real experience and continuously improve it. It could be big or many small ones, but always think how you can improve them after all. When I was taking part in interviews in my previous company always the best candidates were with people that came with projects on GitHub that they prepared by themselves and it was easier for them to adapt to project.
@@matgla95 very thanks 🙏🏻
@@matgla95 Let's say I want to learn how like you, where would I start, if there is a lot of information, like the basics without having to go through the courses, the githubs are huge and there are topics in a single repository of different things, the documentation is technical and difficult, as you did at the beginning to later be able to extricate yourself from c, this answer would help me a lot more. greetings
I don't mean to completely drop courses, they are necessary to learn basics. I also started with a course something like " from zero to games coder". And with each exercise I did a similar one on my own. Like it was a random number generation section with exercise with solution, so I did it, but then wrote my own program that also uses random number generation. With some basics I started writing game, since it was fun for me, step by step. With no knowledge it required a lot of internet research, like the first goal: select library, then render black window in OS... Trying to move from courses to reading reference manuals for language and documentation for libraries. Today all those GPT/Copilot could help to speed up information searching on given topic. Starting you may want to write as much as possible on your own, it's reinventing a wheel, but needed if you want to get deep knowledge. But most important is to find a way of learning that makes you fun. If it's not fun most probably you won't be able to spend enough time to grow fast, so the whole road will be longer. Keeping fingers crossed :) Which language you are trying to learn?
@@matgla95 I've been trying to learn Rust for months, I took courses and read books but I haven't made any progress, I feel stuck, my goal with Rust is the backend, even in the same book it tells you that before that you must know C++. My biggest dream is to master Rust and then C++. that's why I started following your channe
Swietny material. Wiecej tego sortu filmikow :) Jakbys jeszcze tylko wrzucal regularnie materialy to mozna by pomyslec o jakies formie wspierania kanalu
Dziękuję! Regularność niestety aktualnie nie wchodzi w grę, choć marzy mi się przyspieszenie montażu (pewnie kwestia wprawy). Kanał rozwijam w swoim wolnym czasie, a do tego dopiero uczę się nagrywania i montażu :) Póki co wystarczy lajk lub miłe słowo :)
You seem like a very nice person, i would love to learn from you. ☺️
Thanks! You can try my videos, but the first ones are far from perfect. I am still learning about video creation.
That is so cool 😂
Imagine my face when I found that type is not needed in the main function argument :)
Can you recommend a course to learn c++ with 0 programming knowledge?
Hi! I was teaching myself around 16 years ago. Back then I was using some random c++ course in my native language. I think most important is to spend a lot of time doing exercises. Starting from basics means firstly you need to learn the programmer's way of thinking and problem solving starting from really basic and simple programs. C++ is quite a complex language to learn, but patience and consistency will pay off in the future.
Safer C++? Rust?
That's only my personal opinion and to say it loud: I have no Rust experience, only years of experience in c++. I did some research that made me think that using Rust it's harder to write unsafe code in some areas ( i.e. memory safety, thread safety ) as opposed to C++. But still in any language you can write unsafe code and in any language you can write safe code (even in assembly or brainf**k, but with more effort spent and easier to introduce buggy unsafe code by mistake). And that covers just language level safety. I think that a much harder point is to implement the whole software architecture as a safe which is more crucial. Maybe we have someone here with both C++ and Rust experience? I am curious about her/his view :)
Great video! New sub and can’t wait to see what’s next for your project’s & channel!!!
Thanks! I am working on the next videos. But it will take a while due to limited free time :)
A little too loud music at the beginning of the video, besides spoko :)
Yes, maybe a little bit too loud. Thanks for the comment!
THIS is interesting - looking forward to exploring some more. Thanks a lot and great video.
Thanks! If you like that topic there are also 2 next parts available on my channel with evolution from dynamic loader to dynamic linker.
best video so far! great work!
Thanks! I am glad I am progressing :)
great video
Thanks! I hope you enjoyed:)
little boost for your channel broski
Hi, lovely to welcome you. Each kind of support is a huge boost, not just a little. Big Thanks!
I see your just starting out good sir. Definitely gonna sub 👍
Hi, glad to see you. I hope you enjoyed it and each next episode will be more and more interesting for you.
Great video!
Thanks, I hope you enjoyed it!
g w koncowce "ing" jest nieme (nie wymawia sie) to samo sie tyczy l w takich slowach jak solder, almond, salmon.
Słuszne spostrzeżenie. Zwrócę na to uwagę i postaram się, żeby zacząć to wymawiać poprawnie. Mam nadzieję, że w kolejnym odcinku już nie będzie występować ( oraz kilka innych problemów z wymowa i gramatyka :d ). Dzięki!
Glad to see you back!
Glad to see you, too. I hope that the next episode will be prepared faster.
nice vid!
Thanks :)
Great video! I really like how your dynamics and confidence in explaining stuff boosted over only few episodes. Hyped for upcoming programming episodes 💪
Thank you for finding value in my videos - it means a lot to me. I'm currently working on an upcoming programming episode, and I'm doing my best to improve and finish it before the deadline. I'm also interested in your thoughts on hidden memes. Do you think they would be a good fit for this series? I'm open to feedback and suggestions, so feel free to let me know your thoughts in the comments :)
I liked the topic you picked for this episode, very insightful
It’s great to hear that someone likes the topic! I’m almost finished setting up the framework for my Yasboot project. Once that’s done, I’ll start writing the actual implementation. Of course, I’ll also extend the framework as needed.
Nice video, as always 🔥 I think the timelapse of coding is a little slower than in previous episode? It was easier for me to keep track of what you were doing 😄
Indeed. That's one of the changes. I don't want the video to go long. So I am trying to get a midpoint that makes it possible to understand what I am doing :)
Great qna!
Thanks, I hope you enjoyed :)
Looks like the MSPC project is going really well 🔥Waiting for next episodes!
Thanks :) Yes, it's progressing, maybe not very fast, but continuously. For the next episodes, I am going to go with smaller parts but with more information about what actually I am doing.
Great channel, I hope you will upload videos more often.
Thank you for your kind words. I am developing my channel in my free time, so uploading more often is currently impossible. But I hope that the quality of my channel will improve with each new video :)
It's good to give ChatGPT another try.
Actually ChatGPT is amazing piece of software engineering. Is great helping tool, i.e. for searching informations.
Best of luck with the project & channel, I'll keep my fingers crossed :)
Thanks :)
Hellol Mateus Najs to mit ju!
Helloł, najs to mit ju tu :)
Cool project! I appreciate the video editing too! Looking forward to more episodes🍿
Hope to see you soon :)