- Видео 23
- Просмотров 21 950
Emez Labs
Польша
Добавлен 4 ноя 2010
Hello, I am Mateusz Stadnik. I am a passionate embedded software developer.
This channel is my place to share my projects with you.
Hopefully, you can learn from them!
If you want to reach me: matgla@live.com
This channel is my place to share my projects with you.
Hopefully, you can learn from them!
If you want to reach me: matgla@live.com
I Made My Own FPGA Board And It Wasn't So Hard!
Hi,
This time, I am learning how to solder BGA, which is not easy by hand.
In this episode, I share the process of making an ECP5 FPGA board.
I proudly designed it. It is an extension cord for my MSPC computer, but it can also be used standalone!
This is my first time using BGA chips. Do you want to know if I succeeded or failed? Don't wait; check the video inside.
Also, I will give some tips about soldering during this timelapse video.
I learned a lot, mainly related to BGA workflow, rebelling, preheating, etc.
This is a continuation of part:
Chapters:
0:00-0:24: Intro
0:24-0:59: Components Unboxing
0:59-3:06: Soldering Timelapse - part 1
3:06-3:51: HyperRAM First Failed BGA Reballing
3:51-4:09: Hy...
This time, I am learning how to solder BGA, which is not easy by hand.
In this episode, I share the process of making an ECP5 FPGA board.
I proudly designed it. It is an extension cord for my MSPC computer, but it can also be used standalone!
This is my first time using BGA chips. Do you want to know if I succeeded or failed? Don't wait; check the video inside.
Also, I will give some tips about soldering during this timelapse video.
I learned a lot, mainly related to BGA workflow, rebelling, preheating, etc.
This is a continuation of part:
Chapters:
0:00-0:24: Intro
0:24-0:59: Components Unboxing
0:59-3:06: Soldering Timelapse - part 1
3:06-3:51: HyperRAM First Failed BGA Reballing
3:51-4:09: Hy...
Просмотров: 934
Видео
I Designed My Own FPGA Board! Part 1
Просмотров 1,1 тыс.21 день назад
In this episode, I provide a PCB design overview for the second extension card of my RP2350 MSPC-a custom development board that you can check out in this episode: ruclips.net/video/0R8YMcbSwBU/видео.html). Today, I'm designing an FPGA extension card, powered by the Lattice ECP5 family: LFE5UM-85F-7BG381C. This powerful FPGA chip boasts 84K logic elements. My long-term goal is to implement copr...
Let's Build a VGA GPU Card On RP2350 - Part 1 The Design
Просмотров 823Месяц назад
This episode is a PCB design overview of the first extension card for my RP2350 MSPC (custom development board from the episode: ruclips.net/video/0R8YMcbSwBU/видео.html). I plan to use an external video output generator to offload that task from the main MCU on MSPC. The GPU itself is also designed using RP2350. It will be capable of outputting an 8-bit VGA signal, and I'll try using HSTX from...
I Designed My Own RP2350 Board and You Can Too!
Просмотров 2,8 тыс.Месяц назад
In this episode, I am redesigning my MSPC (custom RP2040 board) to the new version. This was caused by the unexpected (at least by me) release of RP2350-a new MCU from the Raspberry Team. I use KiCAD for PCB design. In this video, I show you the main steps of prototyping a custom PCB. Now, I am waiting for RP2350's arrival. Until then, I have also been designing FPGA and VGA extension cards, wh...
I Made My Computer Which Is Finally Alive
Просмотров 1,9 тыс.4 месяца назад
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: ruclips.net/video/RNaJlmq Sw/видео.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 epi...
C is The MOST Beautiful Language!
Просмотров 9 тыс.4 месяца назад
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++
Просмотров 6935 месяцев назад
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!
Просмотров 1227 месяцев назад
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
Просмотров 757 месяцев назад
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: ruclips.net/video/Lg0guoSGWn4/видео.html Repositories: github.com/matgla/Yasconf github.com/matgla...
MSPC(Custom RP2040 Board) Goes Into The Matrix! Software Simulation Of Real Hardware Using Renode!
Просмотров 3528 месяцев назад
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!
Просмотров 1459 месяцев назад
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
Просмотров 952Год назад
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++
Просмотров 247Год назад
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
Просмотров 139Год назад
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
Просмотров 125Год назад
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
Просмотров 143Год назад
#7 CI/CD for Yasboot: Using GitHub Actions, Docker, and SonarCloud for Automated Testing
#6 The Ultimate Guide to Embedded System-Level Testing with Behave (Yasboot #3)
Просмотров 272Год назад
#6 The Ultimate Guide to Embedded System-Level Testing with Behave (Yasboot #3)
#5 Newsletter about my channel (and Q&A)
Просмотров 107Год назад
#5 Newsletter about my channel (and Q&A)
#4 How to create Hardware Abstraction Layer for C or C++? (Yasboot #2)
Просмотров 840Год назад
#4 How to create Hardware Abstraction Layer for C or C ? (Yasboot #2)
#2 MSPC hardware overview and RP2040 booting process
Просмотров 150Год назад
#2 MSPC hardware overview and RP2040 booting process
#1 Custom RP2040 board (codename MSPC) soldering
Просмотров 947Год назад
#1 Custom RP2040 board (codename MSPC) soldering
Is there a way to order that pcb and all the parts so I could technically build it myself? Great BGA soldering for first time!
Of course, I am always adding repository for project in video description. This one is under: github.com/matgla/mspc/tree/mspc_v2 But please keep in mind that it is not well tested yet. Right now I know about two limitations: 1. I forgot about 3.3 power supply from USB, so it can be delivered only through bus 2. I did misclick on SPI flash CS# line for FPGA configuration. Fix was delivered to mspc_v2 branch, but I am waiting for PCB to test it. 3. Most probably more problems, not yet discovered! About parts, you can check BOM from Kicad project. Right now all parts should be available to order, but there is problem with LFE5-UM which for long time was not available at now, now they are quite expensive.
Great soldering :)
Thanks!
I hate BGA😅 Great job!
Yes, they are not the best parts to hand solder. But I didn't have a choice :) and I always wanted at least to try solder BGA
Doesn't matter if it works, make it readable or I'm not approving your PR.
me too, it's totally unuseful code :) and it sometimes works because it uses old GCC compiler implementation hacks
VGA signal is one thing. VGA card is another!
Of course! And this card will be a real "gpu" like card. With VGA( and DVI ) signals driven from PIO. And text and graphic modes frame generation on those 2 cortex-m33. I have a proof of concept on two raspberry pico with rp2040 with even some experiments with simple 3d acceleration.
I would really love to see you mod this fpga to simulate retro systems 😊
I have plans, but let's the future verify my free time :)
Can this play doom
Doom is achievable on the pure MSPC mother board, since it is possible to run doom on RP2040: kilograham.github.io/rp2040-doom/
what is the simulation software you are using
Hi, it is www.falstad.com/circuit/ I like it for simple circuits, because of its simplicity.
circuitjs by falstad
wow, that's a cool computer! I love the custom graphics! Btw 20k logic elements is already enough for simulating an entire amiga in fpga, so maybe other innovative uses for 84k fpga would be even more attractive. That's close to the 110k of the 68080 Vampire amigas using the cyclone 5 fpga.
Yes, most probably more than enough for me :) When I was selecting an FPGA 2 or 3 years ago, I found that the ECP5 family was quite cheap. Initially, I planned to order a 24k/44k LE version, but then I saw that some stores in other EU countries had a reasonable price for an 84k version, so I ordered two. And they have been waiting till now :)
@@matgla95 good decision, they come to perfect use now.
Yes, and I am planning to offload some tasks to RP2350 on both the motherboard and VGA extension, so I should be able to save some logic elements for other tasks
Is the external PSRAM or QSPI ram able to be encrypted on the fly or at rest with a key stored using the internal OTP storage? Like is this actually a secure device that will prevent people from hacking your IoT application and dumping your secrets
That's rather question for RP2350 datasheet or designers (through raspberry forum), but looking quickly inside documents I don't think so. RP2350 contains encryption module with secure boot, but the flow is to verify image from QSPI flash then load decrypted image inside SRAM. And I would need to deep dive into datasheet, but I believe there is a way to prevent external access through JTAG/SWD and your software should be quite safe (of course except security leaks inside firmware itself)
Even though you scrapped this I would love to see a video on this, I am curious if you would use something like LiteRPC
It's not scrapped :) It's just evolution, complexity of hardware is going to be reduced, but components inter-working that I mentioned will be implemented to communicate between motherboard and extension cards. Previously I planned to use exactly the same implementation for north<->south communication and for north<->extensions. With RP2350 only north<->extensions is left.
Gosh this is soooooo cool!!!
thanks!
where can I buy the RP2350 chip?
Standalone chips are not yet available. But you can buy Raspberry Pico 2 which contains RP2350A.
Very cool stuff. I hope to study enough to make my own board one day.
Thanks! I hope it'll be working fine after soldering :D
Now this is an interesting project. Exited to see it comming to live. A risc5 and arm cpu in 1? 😮
Yes, exactly! Raspberry Pico 2 is already available to purchase. RP2350 inside contains dual core arm cortex-m33 and dual core risc-v, but you have to select which one you are going to use at startup ( as far as I know )
I think this is great, you skiped some of the detial on VGA technology and how it syncs, and generates frames. I think going into that detail would help others gravitate towards your simple yet more detail then average videos. People want to know how things work but may not want the technical explinations. Great job!
Thanks! This will be covered in a dedicated episode. I plan to make it together with graphs from the oscilloscope. But it must wait for RP2350 arrival and board soldering and most probably fixing :) this video is just a short overview of the first step!
Nice work! Great piece of engineering 🎉
Thanks!
Awesome!
Thanks!
It's "risk 5" not "risk vee" ;)
Of course you're right! I didn't know that, so thanks! So I'm sorry about my mistake inside video.
Good work! Thank you for your video!
Thanks!
Interesting video, but I'm afraid I still don't really know how to design a PCB, I thought maybe you would go into detail about the design process but this was more of an overview of what you did.
Yes, that's just overview. I just wanted to cover transition towards RP2350 from my RP2040 board, short overview of design and hopefully in near future short overview of soldering and debugging. Actually design for RP2040 or RP2350 is really well described inside their official hardware design guides. Second thing needed is general knowledge about PCB design and there is a lot of high quality channels with with people much wiser in that domain than me. I personally was learning from Robert Feranec channel.
Great work! Looking forward to the next videos.
Thanks! Since I am still waiting for RP2350 availability I am working on video edit for VGA and FPGA extension.
awesome... i am excited to watch remaining.. i watched all you videos from inception of this series in one day...
Thanks, keeping fingers crossed for your project !
Thanks, new episodes are under recording. Hopefully I will release them soon!
This is fascinating !!!!
Thanks!
Thanks!
The overall series is amazing, as a first step i will try to replicate this whole thing from scratch. am sure i will learn a lot.
My goal was to show all steps of the project, but then I realized that it is hard to follow. I hope some day I will find the balance between what to show and what to cut :)
one more thing i felt is that video length is too long, my suggestion is always keep the video under 20 minutes. and have a series instead of single long video.
Yeah, that's true, that new videos are much shorter.
may be you could lower the volume of music while you are speaking. its bit distracting. i was trying hard to concentrate on what you are saying by replaying multiple times.
Good to know. Latest videos use spectrum filtering to remove voice frequencies inside music. That one unfortunately does not use that yet.
I have heard about PIC, but never why it was used, this video explains in a crystal clear manner. and now i have idea about how it does. THanks for the video.
I am glad I helped you. In my experience I realized that almost all concepts are quite simple, even if they look complex.
Nice Idea.. Keep rocking. !!!
Writing a filesystem from scratch is also interesting. But for now I have to use something already existing.
I like the way you have organized the whole project. its something i was thinking if i start my own board bringup. I hope you dont mind if i user your idea :D
That was one of the main goals when I decided to start my RUclips :) Use it whatever you want :)
I was actually looking for a short video which explains the different steps in involved in Embedded SOftware Development lifecycle, i can the first few videos explained in a very short and sweet manner. The KISS logic - Keep It Short & Simple. Thanks for the video.
Yeah, I wanted to show all the steps of the project lifecycle ( except maintenance, since it's too early ) :)
Nice Work.. Keep it up..
Thanks! I am trying :)
Nice code bro
Thanks !
You know, the more I watch this video, the more I'm grateful I'm a Pascal/Delphi and Ada dev, this is wild, I feel pity for C devs 💀
To be honest, me too. C can't be substituted in some environments. But whenever it could be I think it should be. I mostly use C++, but I am looking for tools that can improve or even replace it into safer language transpilers ( like cppfront ), where other compilers like (i.e rust are not fitting). But I really hope that the standardization committee will resolve most of the problems some day.
My solution to this in a theoretical language that sees and interprets whatever prompt you give it: an empty file. That language needs no code
No Code, No Problems! :)
it will works cuz of gcc it set variables and funcs to type int as default
Yes, but it uses more than that :)
screen was too dark and zoomed out to read code
Thanks! I've noticed that, although I am still working on improving the readability of my videos new ones should be at least a little bit better.
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