How to use this article efficiently?
This article does not provide deep details into the topic, you’ll encounter some new words you may not know, but you’ll find a link for each of these words in wikipedia explaining what these words mean. This article by itself isn’t sufficient and the topic can not be fully explained through one article or even a series of articles, so you need to get the main lines from here and then search. At the end of the article, you’ll find a list of additional resources that you can use to enhance your knowledge about the topic. For any further inquiries, your questions are very welcome.
Building a tablet
Building small and tiny computer devices has proved to be the industry of the future. With the rapid spread of tiny computers such as Rasperrypi , Pandaboard and many others, the facet of computer devices has changed. Here, we will be briefly talking about the technical details of building these devices (can be applied to all computer/digital devices in general with small changes). In this article, we would assume that our goal is to build a tablet as one of the devices we’ve talked about.
To achieve our goal, we had to divide our work into two main categories “Hardware and Firmware”. Beginning with hardware, the main task of this part is to design hardware for the tablet. PCB design in general has two main parts: Schematic and PCB Layout. You’ll certainly need a CAD tool to finish your design. I personally recommend Altium Designer for this kind of designs. After design and test comes the role of the manufacturer(the factory that would fabricate the board and assemble components on it) to fabricate the board as it can’t be manually made. First, we need to find a Reference Design to start from. After that, we have to fully understand the whole design so that we can customize it and make our own modifications. You’ll encounter many problems such as some components would be out-of-stock, some would be very expensive and others would need to be changed as we change the design. You’d have to find new alternatives and carefully study their datasheets to make sure it would perform the same function with the same restrictions (voltages, current, I/O,..). You’ll also find compatibility problems between new and old components so you have to choose them carefully.
Example of SD-Card connector schematic
In the phase of PCB Layout design, we first place the components on the board paying attention to EMI (Electro-Magnetic Interference) issues and layout guidelines for CPU and RAM and general guidelines for placing components on a multi-layer PCB. Then, we start to define our stack up (the number and arrangement of PCB layers). Then, we add the manufacturer rules (track width, Via diameter, Track-to-track clearance, ..) to our design and start routing. Routing that kind of boards is such a complex process, in which we combine manual and automatic routing to accomplish the mission.
Example of a 8-layers board stackup
Example of a routed multi-layer board
Concerning firmware the first thing to do is to choose the operating system(mostly Android) we would use to run with the hardware we’d build, then we need to figure out how to boot that dead board so that it could run the operating system we’ve chosen. Here comes the role of firmware. It’s about booting the board’s processor using microcode (uboot) and startup code. Booting is necessary for as an initial step for bringing the board to life. Before that, the OS is ported to the board using a certain kind of storage ( microSD Card for example), which in turn is copied into RAM so that the tablet can load the operating system and run the applications. Before we can port the Android image, we need to build the image itself. We can’t just use a generic image built for another target. Our customized image should contain all the drivers needed by different peripherals that exist on our board. For example, we need to add specific drivers for touchscreen by ourselves to the Android source then build the source, take the output image and port it to the board. This is a very time-consuming process and needs special software tools and following the steps provided by Google precisely.
Additional Resources :
We’ve talked very briefly about the process, in this section we provide you with some additional links that you can use to get more knowledge about the topic and practical tutorials