Monday, October 9, 2017

Implementing an Embedded Linux System in Xilinx Zynq

Chapter 1: Introduction
1.1. Overview and Targets
The final achievement of this project is to develop and implement a custom and Embedded Linux Operating System (OS). This OS will be developed on ZedBoard (Zynq Evaluation & Development Board) development kit. Therefore, how to create, configure, build and implement an Embedded Linux OS on ZedBoard will be explained in detail during this Final Bachelor Thesis.
Nevertheless, and before starting, it is necessary to know more about the board. The ZedBoard use a Zynq-7000 SoC architecture, which includes the ARM Cortex-A9 processing system (PS) and the 7 series programmable logic (PL). The individual components which comprise the PS such as I/O peripherals, clocking, interrupt, AXI interfaces and memory controllers are also detailed briefly. Note the relevant efficient PL-to-PS interfacing including processing interrupts generated from a PL peripheral. Consequently, the ZedBoard is the perfect platform to develop and implement the Embedded Linux OS.
Xilinx and its whole family of programs will be the main tool for achieving this goal. The Xilinx program PlanAhead includes all necessary tools (map, place and route, synthesis, implementation and BitStream generation tools) to build and design any typical process flow for FPGA. In addition to these functionalities, it allows multiple run attempts with different RTL (Register Transfer Level) source versions, constraints or different strategies for synthesis and/or implementation.
Nevertheless, these tools are not enough; some GNU tools are also required to get this achievement. There are different GNU Linux versions on the Internet which can be downloaded and implemented on ZedBoard for free. Furthermore, there are a wide variety of tutorials and documentation of each one.
Therefore, it will be explained in detailed two different options and set of techniques to implement the Linux Operating System on ZedBoard:
 Developing a not-graphical-user-interface custom Embedded Linux OS which will be designed exclusively for the specific purposes (e.g. for the specific and required PL peripheral).
 Implementing a complex HDMI graphical user-interface GNU pre-designed Embedded Linux OS in which specific PL peripheral can be easily added.
They have different but interesting and important advantages, as it will be showed in the following chapters. Because of this, both of them will be developed and implemented on ZedBoard before thinking which one will be finally chosen to implement the PL peripheral.
Finally, note that “Chapter 3: Custom Embedded Linux OS on ZedBoard” and “Chapter 4: Ubuntu Linux OS on ZedBoard” are closely related to “Appendix 1: Guide – Linux on ZedBoard step by step”. These chapters are complementary to this appendix and vice versa; they will deal with the development and implementation of the Linux OS. Nevertheless, they will do it in a different form.
Chapter 1: Introduction
Page 19 of 180
 The third and fourth chapters will be focus on the idea, on the concepts, on answering the questions “what must be do”, “why must be do” and “which ways are there available” to develop and implement the Linux OS.
 The appendix will be focused on the exactly steps to achieve the target, on answering “how must be exactly done to develop and implement it”.
Therefore, these chapters are strongly recommended before performing this appendix and this appendix is strongly recommended after reading these chapters in order to better understand the ideas exposed in the whole thesis.
1.2. Why Develop and Implement an Embedded Linux Operating System
There are a countless number of reasons to develop and implement an embedded Linux system. The most relevant will be explained during this section and are summarize below.
 Community support and possibility of taking part into it.
 Devices coverage.
 Eases the new features testing.
 Full control.
 Low cost.
 Platform reusage.
 Quality.
 RTOS (Real Time Operating System) possibility.
After knowing the major advantages of embedded Linux systems, it will be perfectly clear the usefulness of knowing how to develop and implement a system of this kind.
1.2.1. Community Support and Possibility of Taking Part into It
Linux is an open-source code; therefore, there are a great number of developers and user communities sharing their knowledge and code. This results in a high-quality support in which anyone can directly contact with many developers who are working or have been working in the same topic.
In addition, these communities are usually internet communities, allowing 24-hour availability to the user and speeding up the problems resolution.
Finally, there is also the opportunity of taking part into the different communities, for example to bug report; to add new code, versions or patches; etc.
1.2.2. Devices Coverage
Due to the rest of its advantages, there are a great range of systems based on embedded Linux kernel, such as smartphones, tablets, PDAs, smart TVs, machine control, and medical instrument, among others.
1.2.3. Eases the New Features Testing
As already mentioned, Linux is an open-source code. Therefore, it is really easy to get a piece of software and evaluate it. It allows studying several options while making a choice. Furthermore, new possibilities and solutions can be investigated.
As a result, it is too much easier and cheaper than purchasing or using proprietary-product trial versions.
1.2.4. Full Control
The developer can have access to the source code for all components, allowing unlimited changes, modifications, and optimizations without vendor lock-in. Therefore, the developer has full control over the software.
Nevertheless, that is not the case of proprietary embedded operating systems, where the opposite is the case.
1.2.5. Low Cost
Being an open-source includes being free of charge. Therefore, this free software can be duplicated on as many devices as it was necessary with no costs.
It is one of the key advantages, and it can be considered that all other benefits have been produced as a consequence of this advantage.
1.2.6. Platform Re-usage
Linux already provides many components and code for standard well-know functions, such as libraries, multimedia, graphics, protocols, etc.
It allows quickly developing complex products, based on easier, already available components. Therefore, it is not necessary to re-develop the same code by different developers.
Being able to re-use the components and code is another of the key advantages of embedded Linux. It results from the rest of advantages of embedded Linux over proprietary embedded operating systems.
1.2.7. Quality
The open-source components are widely used, in a great multitude of systems. Therefore, a large number of users develop different embedded Linux components and share their knowledge, allowing designing a high quality system with high quality components.
1.2.8. RTOS (Real Time Operating System) Possibility
Another benefit of using an embedded Linux RTOS over a traditional proprietary RTOS is that the Linux community tends to support new IP and other protocols faster than RTOS vendors do.
1.3. Why on ZedBoard
There are a wide range of FPGAs, such as Artix, Kintex, Spartan, Virtex, Zynq ZC70X, etc. Nevertheless, ZedBoard is the chosen board to be used and programmed in this case. Therefore, the reasons to select ZedBoard instead of any of the previous boards are showed below and will be briefly explained:
 Different memories types
 Dual core ARM Cortex-A9
 Great variety of peripherals
 SoC architecture
1.3.1. Different Memories Types
ZedBoard includes several kinds of memories, such as a 512MB DDR3 memory, a 256MB flash memory and a SD slot. This gives the flexibility of allowing small-size systems to be stored in the flash memory, with the advantages that this kind of memory involved; and allowing huge-size systems to be stored in an external SD Card.
Therefore, a very fast or a heavy embedded Linux can be developed on ZedBoard.
1.3.2. Dual Core ARM Cortex-A9
ARM is present in most of current Smartphones (about 95% in 2010), and a wide range of smart TVs and laptops (35% and 10% respectively). Therefore, it is the perfect processor for the board.
In addition, ZedBoard not only includes a simple core ARM, but also includes a dual core ARM Cortex-A9. Therefore, the processor will not be a bottleneck for the developed applications on the board in any case.
1.3.3. Great Variety of Peripherals
The ZedBoard provides a wide range of interfaces to connect the most common peripherals and devices, such as monitors, keyboards, speakers, internet connection, etc. The most important interfaces which the ZedBoard provides are the followings:
 Audio line-in, line-out, headphone and microphone.
 Ethernet.
 HDMI and VGA.
 OLED display.
 SD Card.
 USB.
Therefore, the embedded Linux version will be able to use a monitor, a mouse and a keyboard; and will be able also to have internet connection.
1.3.4. SoC Architecture
The ZedBoard is an evaluation and development board based on the Xilinx Zynq-7000 All Programmable SoC (System-on-a-chip). This board allows creating a Linux, Android, Windows or other OS/RTOS-based design.
Therefore, the ZedBoard is not only a FPGA, but it is a Programmable SoC device. But, what is the difference between a FPGA and a programmable SoC device? The main difference is that the SoC combines the processing system (PS) with the programmable logic (PL); as a result, it has a higher speed and a less size than a traditional FPGA.
In particular, the ZedBoard combines a dual Corex-A9 Processing System (PS) with 85,000 Series-7 Programmable Logic (PL) cells.

No comments:

Post a Comment

Understanding of U-BOOT

INTRODUCTION Exciting new embedded Linux devices are appearing at an amazing rate. Installing and booting Linux on these wildly varying bo...