travistrue2008 wrote: ↑Fri Feb 09, 2018 11:39 pmEver since I was a kid, I always wanted to develop my own video game console. I started using the Pi Zero W as my development board, which is great for developing software apps, learning more about low-level Linux APIs, learning how to develop my own Linux OS stack (I bought a book on the Yocto Project), I've been learning circuits, and how to design PCBs.
So, I definitely believe that there's quite a bit that goes into developing an embedded system, but I don't understand what all goes into it that makes it difficult. For example: people keep asking when the fabled "Raspberry Pi 4" will be announced, and the response is "not soon" at best as not only does the Pi 3 fulfill the Pi Foundation's mission to provide a low-cost computer for educational purposes (it really is a great little board), but it's also been stated that a hardware re-design would be required for a more powerful SoC. Also, but the Pi Foundation is also working with manufacturers to meet current demands for the products it provides which is partly why the Pi Zero/W is limited to 1 per order.
So, what I'm asking is: how do I go from a Raspberry Pi, to building my own RetroMini. Here's the RetroMini: https://www.youtube.com/watch?v=LIfecgHhA_4. I understand that the RetroMini uses an AllWinner SoC while the Pi uses a Broadcom SoC, which has different business implications (manufacturing contract, NDA, etc), but is it possible to buy just the surface mount SoCs to mount on a custom-made PCB for prototyping?
I know these questions are too broad for a forum thread, I wouldn't doubt it if it took years to learn the necessary skills, and I'm sure I can't do it alone, but this stuff fascinates me. Are there any learning resources out there to start learning this, or is my only option to go back to college for computer engineering?
An embedded system product like the ReroMini is simply something like the Raspberry Pi altered to do what is required for that product. A product is often a prototype built from something like a Raspberry Pi and other parts but in a form more suitable for that final product.
I want to learn how to design and build the embedded hardware, and build my own software stack.It is not feasible to buy the SoC.
Though the Compute Module overcomes this issue:
I'll look into Element14. I knew that they do basic Pi soldering mods, but I didn't know that they could transplant a Pi's SoC onto a custom PCB. I was thinking of going through Seeed Studio for prototyping PCBs. Yeah, I planned on starting with a Pi Zero, and then work my way up to designing my PCB in EAGLE. I wouldn't doubt it if PCBs get expensive due to all the one-off orders. I've looked into homebrew solutions for fabricating PCBs for prototyping, but haven't found anything promising yet. When you say 1000s of boards, are you saying that it's expected that I'd go through 1000s of PCB iterations, and subsequently need to purchase 1000s of PCBs one at a time during the prototyping phase?I think a custom PCB is an option from the licensed contractors, Element14/RS.
Start with Zero or CM prototype and then do a PCB with what you need, however expect to pay for lots of PCBs.
But it is only 1000's of boards if I remember right?
I've actually been building my own front-end. RetroPie is cool, but the UI can be laggy at times. The game scraper is a nice touch, but you have to re-scrape everything whenever you change games. I started writing my own UI since I do have experience doing that. I think I can provide a nice, lightweight UI without X11 (I've looked into the raw FB, DirectFB). I do plan on supporting emulators first instead of dedicated games. I think there are some interesting features I can add to it with my current software skills, and it gives me a chance to learn more about emulators. I could write software that'll listen for changes in the ROM directory, and update the UI when ROMs are being copied, finish being copied, etc from USB or wifi (thought about doing it all via HTTP with a REST API since parallel uploads are faster). I can also build my own ROM database for boxart and metadata, which I've put quite a bit of time into. So, the user uploads a ROM to the device, and the device automatically grabs and caches the metadata in storage upon completion based off of its header data.Then just run RetroPie?
Yeah, that's what I'm going for I'm just unfamiliar with the process of going from the prototype I've hacked together with a Pi to a custom PCB that's specialized to my project's needs. A lot of seems straight forward: copy the relevant parts of the Pi's schematic, and add my breadboarded elements to it, but it's just like you've said: The SoC's not easy to get ahold of, there'll be licensing issues to get the startup software (I wouldn't even know where to start with getting it off the Pi), and the Pi's schematic is vague to due Broadcom's confidentiality requirements.An embedded system product like the ReroMini is simply something like the Raspberry Pi altered to do what is required for that product. A product is often a prototype built from something like a Raspberry Pi and other parts but in a form more suitable for that final product.
Mainly on the job I would say, though not necessarily large companies.travistrue2008 wrote: ↑Sat Feb 10, 2018 11:50 amI think the first question I need answered is: how do people generally learn how to work directly with SoCs to make their own embedded system? Is this generally learned in computer engineering programs in colleges, on-the-job at large companies (such as Broadcom, ARM, Sony, Apple, Nintendo, etc), or is it a mix of both? I mean, you have to start somewhere, right?
You bring up good points. I was hoping that I could learn how to do this stuff myself, but it's like injection molding or PCB fabrication: there isn't any desktop-class equipment to do this stuff (only industrial), and getting ahold of any SoC for just prototyping is difficult and expensive. I'm considering the AllWinner route for an SoC if the barrier of entry is reasonable. I'm still going to use my Pi Zero W as a development board for as long as possible because it is an embedded system with GPIOs on it. There's quite a lot I can learn from it, especially from the embedded OS side of things.Mainly on the job I would say, though not necessarily large companies.
People have or acquire an interest in electronics or software engineering, learn theory and skills at college, join companies where they gain the experience in actually doing it, often as part of a team which provides mentoring and additional assistance.
Others learn and gain experience through pursuing the same as a hobby, though they won't usually have the resources and tools which employment in the field may provide.
Getting skilled, experienced and capable is an ongoing process, just as in any other field.
That's pretty sweet! I heard about this through The Ben Heck show a while back, but I thought it was only for performing small modifications to the board such as soldering/unsoldering stuff from an original board. I'm still stuck in the learning phase of how to design hardware though. I'm trying to figure out what I need to learn, and unfortunately, these lead to me asking really ambiguous and open-ended questionsElement14 has a minimum order quantity of 5000 units :
https://www.element14.com/community/doc ... on-service
That's for custom units with the broadcom CPU/SoC onboard
On a smaller scale, there is also Geppetto, who have NO minimum quantity (but $2000 setup)
and can build your custom design at around $40 per unit (based around the compute module - so you'd have to add $25 for those)
they have a nice easy drag and drop interface, and some existing compute module carrier boards for single purchase,
I also notice they have extended into custom HATs too
Even cheaper, design your own compute module carrier and get those PCBs made up ... or just use a ready made pi 3
OpenGL takes quite a bit of time to get the hang of, but it's definitely rewarding! There are quite a few good resources out there too. I thought Jaime King's OpenGL series was great:My attempt for doing baremetal games on Pi's.
I use Pi's so I can learn this OpenGLES stuff too, which is the current speed bump in the road of this project
My device actually won't have a display on it. I'm actually streaming the data to my TV wirelessly. Ironically, I don't need OpenGL either, and the GPU will be used for compression, which is kind of a double-edged sword considering the main perf bottleneck should be uploading uncompressed data, and downloading the transformed, compressed data to and from the GPU.If you want to do a Retromini type design it is actually not that hard design wise.
To get the framerate up look for parallel LCD data bus, in Pi land that is called SMI mode.
For the rest of world - 6800 or 8080 mode.
I recently started learning about those, and then I discovered the Super Nt. REALLY cool concept.An alternative is do it all with a FPGA, experts only apply
That's good to know! I will keep that in mind as I learn more about the YOCTO Project. I'm currently learning more about the Linux OS stack, and it's been an exciting ride. I've put off doing that for years.The biggest task is going to be the software, normal rule of thumb 5-10 software guys for every hardware guy.
For you that mean software will be 5-10 times harder, 5-10 times longer or both at once.
Nice! Where would you recommend I start to learn the hardware side of things? I bought these books:Generally you learn this stuff before or after Uni, some people are trying to change that.
I now work in a Uni, it can be a struggle to get even the basics taught.
Not many could learn the complete DIY Retromini in that time. It would be at least a double degree.
I'm with you there. I'm only 28 now, but I've been obsessed with code since I was 14 when I started learning C++ and DirectX 9. Looking back at it, I bit off way more than I could chew... I still pull all-nighters learning new stuff like I did back then. It was all about building arcade cabinets 3 years ago (built 1), and 3D printers 2 years ago (built 2). It makes me a zombie during the days, and my friends miss me from time to time, but it's fun. I love it.All us oldies stayed up nights and weekends coding and soldering to learn in our own time, most of us still do
I'm just targeting SNES for right now. I've got a SNES emulator's code running, and outputing audio and video to my own OpenGL ES 2.0 window. Going to switch that over to streaming once I get the web clients written (I've been learning Angular 4 and SQL since that's all anyone seems to be hiring for where I live). The web client will replace Emulation Station, and run off of separate hardware from the console I'm building. It's a strange setup, I know haha.However if you want to emulate any old game that is a different skill, stick with RetroPie