What is required to create a device like Raspberry Pi from scratch?

Thread Starter

G-Virus

Joined Dec 15, 2019
4
Hello everyone! I hope I'm writing to a correct forum. I want to find out what is required to create my own mini computer by myself. I worked with microcontrollers and created some devices based on microcontrollers, but now I would like to go ahead and create my Raspberry-like device. My questions are following:

1. Can I use any kind of ARM CPUs and any kind of RAM together, like all we use in our PCs (we don't care about vendors or something, everything has a standard port)? I mean, does it have some special interface that supports both CPUs and RAMs?

2. the same question as above, but for ROM. Can I solder to the CPU some NAND memory or just SD card without having compatibility problems? I guess CPUs might have special interface PINs for RAM as well as for ROM
and please could you guys recommend me some specific models of CPU, RAM, ROM and etc. that I can purchase and try to build. One note: I'm going to run Linux on this device, so I would like to build a kernel version for that. I think a datasheet for CPU should be enough to find out what is needed to be included to kernel as well as an understanding of potential peripheral that will be used in the device, but maybe I'm missing something important

Thank you!
 

MrChips

Joined Oct 2, 2009
34,627
It is doable if you are willing to go to a lot of trouble.

In the world of computing you are looking at different ends of the hardware spectrum.
Before the days of single chip microcontrollers (MCU), computers were built by interfacing separate ICs,

CPU
ROM
RAM
Input/Output devices

In order to run Linux you will need lots of memory, both ROM and RAM, much more than what you could easily assemble in a DIY system.

Then single chip MCUs came along. These are intended for application specific tasks, hardware and power efficient, and all the hardware integrated into one package. Adding more memory to an MCU almost defeats the purpose of the MCU in the first place.

The bottom line is, if you want to run Linux on a DIY platform, good luck, you will need it.
 

Thread Starter

G-Virus

Joined Dec 15, 2019
4
Thank you for your reply!

Yes, I expected a lot of trouble on this way, but troubles is a typical thing when you are going to create something isn't? :)

I understand it's much more difficult than just to take an MCU and build a device, but anyway, I would like to start with this complicated task. I just need to know I'm thinking correctly - I need some CPU like Qualcomm or Broadcom, then I will eat a datasheet for this CPU, will obtain boot files that are required to run Linux on this ARM CPU (I guess it is possible to obtain it from the vendor website). Afterwards, I need to find out what interfaces are available on this CPU to connect RAM and ROM chips and where it would be good to add pull-up resistors and capacitors. How to build a toolchain and linux kernel I know because I did it a lot of times for different ARM processors and systems. But the hardware question is still relevant

Thanks in advance!
 

SamR

Joined Mar 19, 2019
5,470
An Arduino is a "Development Board" and one of the various microcontrollers it uses is the Atmel ATmega328 microcontroller. Yes, you can use the bare chip but you can't put all the parts together to do what an Arduino does for less cost than what you can buy the completed board for. You can buy Atmel ATtiny chips cheap if you only need ~4-5 I/O pins without all the bells and whistles contained on the Arduino. Serial communications, voltage regulation, LED indicators, just to name a few of what is included on the board.
 

Thread Starter

G-Virus

Joined Dec 15, 2019
4
Guys, it is not about a time or price, I just need an answer for my question :) I don't need the Arduino, Raspberry and so on, because I already passed this step with playing these toys
 

SamR

Joined Mar 19, 2019
5,470
Look into AVR programming if interested in microcontrollers. Otherwise, you need to look at the "Big Iron" chips starting with the Intel line if truly interested in building a computer. There are lots of support documents for it on the net. I would suggest starting small and think big.
 

Thread Starter

G-Virus

Joined Dec 15, 2019
4
I already worked with AVR and ARM microcontrollers, especially with STM32 series. But I need more than a microcontoller, that's why I'm asking :) In my previous job we worked with ZTE company which has built for us a prototype ARM based device with an exactly amount of NAND and RAM we requested. It was a board like Raspberry, but bigger because of an additional hardware. And now I want to figure out how do they do that
 

Papabravo

Joined Feb 24, 2006
22,058
What is required is a set of requirements.
You already know that you have to pick a processor and become familiar with the datasheet.
Then you have to look at what peripheral devices you will need and rundown a set of controllers or integrated bridge chips
Lastly you will need to look at the memory hierarchy. Gone are the days when a single type of memory device would suffice.
Then you need to make a schematic
Then you need to do a layout
Wash, Rinse, Repeat a couple of times if you are lucky
Then you need to fab some boards
Then you need to assemble them
Then you need to debug them
Now you are ready to try some software

Working by yourself I expect this would take 18 months if you are really good at it or 3-5 years if you have to learn one or more disciplines along the way. Go for it!
 

MrChips

Joined Oct 2, 2009
34,627
I understand it's much more difficult than just to take an MCU and build a device, but anyway, I would like to start with this complicated task. I just need to know I'm thinking correctly - I need some CPU like Qualcomm or Broadcom, then I will eat a datasheet for this CPU, will obtain boot files that are required to run Linux on this ARM CPU (I guess it is possible to obtain it from the vendor website). Afterwards, I need to find out what interfaces are available on this CPU to connect RAM and ROM chips and where it would be good to add pull-up resistors and capacitors. How to build a toolchain and linux kernel I know because I did it a lot of times for different ARM processors and systems. But the hardware question is still relevant
If this is your approach and level of experience, then you have a very long road ahead of you.

I would suggest you start with a RaspberryPi or a PC mother board and put together a Linux system from scratch with whatever open source code is available.

If your view of building a system is about adding pull-up resistors and capacitors then you should start with a basic chip such as 68000, 8086 or Pentium CPU and see how far you can take it.
 

MrAl

Joined Jun 17, 2014
13,667
Hello everyone! I hope I'm writing to a correct forum. I want to find out what is required to create my own mini computer by myself. I worked with microcontrollers and created some devices based on microcontrollers, but now I would like to go ahead and create my Raspberry-like device. My questions are following:

1. Can I use any kind of ARM CPUs and any kind of RAM together, like all we use in our PCs (we don't care about vendors or something, everything has a standard port)? I mean, does it have some special interface that supports both CPUs and RAMs?

2. the same question as above, but for ROM. Can I solder to the CPU some NAND memory or just SD card without having compatibility problems? I guess CPUs might have special interface PINs for RAM as well as for ROM
and please could you guys recommend me some specific models of CPU, RAM, ROM and etc. that I can purchase and try to build. One note: I'm going to run Linux on this device, so I would like to build a kernel version for that. I think a datasheet for CPU should be enough to find out what is needed to be included to kernel as well as an understanding of potential peripheral that will be used in the device, but maybe I'm missing something important

Thank you!
Back in the 1970's i worked with a company where we had to make not only the mini computer but the CPU itself out of discrete parts. For example the program counter was something like several 7493 TTL counters in tandem. The instruction decoder was a group of TTL gates. The memory was ROM that had to be programed with a separate device that we built to program ROM's. The entire CPU had to be housed in a card cage because there were several PC boards involved.

Since then however i've created different microcontrollers out of raw CPU's. One for example was the Z80 CPU. The board i made had a ultraviolet erasable ROM, RAM, and glue logic to decode IO and ROM or RAM addressing. I did all the software for it myself though so did not need to use any ready made operating system.
The thing is though, all the work i put into that Z80 based uC a simple Arduino board of today does 1000 times more and it programs 1000 times faster, and it's about 10 times cheaper and 10 times smaller.

So yes you can do it but it's a lot of work and years from now you will regret having spent all that time and energy repeating the work that others have done already. You'll regret not having worked on something more practical. You will also be stuck hunting down bugs for the rest of your natural life unless maybe you got straight A's in college.

When it comes to spending your time in different ways it's always your choice. The idea is to use your time to your best advantage.
 

dl324

Joined Mar 30, 2015
18,216
Can I use any kind of ARM CPUs and any kind of RAM together
No. There are many variants of ARM processors and they can have unique feature sets. I have two SBC's that use two different ARM processors and the method for accessing the GPIO's is different. Both boards run a custom version of Debian and there's a lot of heavy lifting done for you by the supplier of the boards.

You can't build one for less than you can buy one.

I have one board (called C.H.I.P.) that cost $9 (plus shipping). It has a 1GHz single core processor, 512MB RAM, 4GB or 8GB FLASH, 36+ GPIO, WiFi, Bluetooth, composite video, etc.

A similarly configured Raspberry Pi Zero would cost $25-30.

Since Pi Zero is only $5, why would you want to roll your own?
 

BobTPH

Joined Jun 5, 2013
11,463
Sure, you can do it. Just look at a Raspberry Pi, determine what chips it uses, gather all the datasheets and hook it all up.

Bob
 

Ya’akov

Joined Jan 27, 2019
10,226
When you look at the RPi board which is at least four layers, and see the various ICs littering it, why do you expect that a processor, RAM, ROM, and a few passives will get you an RPi-like device?

Those boards are made by teams, and they still take a lot of time and prototyping.

I understand you want to learn, but I suspect you are leapfrogging your necessary next step, and probably quite a few more, to set out in this way.

If you want to learn, build less complicated things until you have those skills. Your view of how to go about this strongly suggests you haven't got enough experience to attempt it—yet.
 

WBahn

Joined Mar 31, 2012
32,702
I understand it's much more difficult than just to take an MCU and build a device, but anyway, I would like to start with this complicated task.
This is a very risky and poor way of going about things.

It reminds me of a PBS series a couple decades ago where a guy wanted to set out and prove that you could construct a homebuilt airplane in a short amount of time. I don't recall the specific time -- something like 30 or 60 days or maybe a bit longer.

People told him to build the plane using one of the established plans for proven designs using readily available tools and materials and only requiring basic mechanical skills.

But, no, he decided to have a fiberglass plane designed and then had to learn how to make molds and forms and how to work with fiberglass and resins and epoxies, something he had never done before.

Not surprisingly, it turned in total chaos that saw him getting nowhere as the deadline approached.

So, what did he eventually do? Scrapped all of that complexity and started over, with a new time clock, IIRC, and went with a proven design using readily available tools and materials and skills that were not too far above his current skill set.

The route you seem to be shooting for is very similar. It would be like someone saying that they are really comfortable changing tires and wiper blades and even stereos and speakers in cars. Then asking if a Formula 1 race car can be built using any tires, any engine, and any transmission. And then saying that they understand that building a Formula 1 car is much more involved than building a dune buggy, but that's where they want to start.

You need to break it down and take it in pieces. If you think that you can just connect any RAM chip up to any CPU, then you have a lot to learn. Don't risk your entire project by trying to discover how to do this will trying to build a complex system. Start with a much smaller project where the entire purpose is to learn how to design and implement the CPU/RAM interface in such a way that it actually works. You will likely have to make several iterations, so keep it as simple as possible by having it serve only that purpose. Do the same with other aspects of your system. Then, and only then, start bringing them together to integrate into something of the complexity you want.
 
Top