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
19,912
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
1,621
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
1,621
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
12,767
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
19,912
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
6,945
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
9,575
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
2,198
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
 

Yaakov

Joined Jan 27, 2019
1,612
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.
 
Top