Robotpeak is a Shanghai-based hardware entrepreneurship team dedicated to the design and development of civil robotic platform systems, robotic operating systems (ROS) and related equipment, and attempts to integrate the ever-changing robotic technology into people's daily life and entertainment. At the same time, Robotpeak will make every effort to contribute to the popularization of robotics in open source hardware and open source software communities. Chen Shikei is co-founder of Robotpeak, who brought us the latest x86 framework for the in-depth usage report of the Arduino Development Board Intel Galileo.
1. Preface
On the first European make Faire, held in Rome this year (2013), Intel released an Arduino Development Board with x86 architecture: Intel Galileo. This is undoubtedly a blockbuster in the field of open source hardware. As the CPU giant Intel, for open source hardware/maker field This formerly relatively small circle launch specialized hardware, undoubtedly demonstrates to the open source hardware domain development the importance degree. At the same time, Intel also serves as the main sponsor of this European Maker faire.
Figure: Intel Galileo Development Board, image from intel.com
In the PC industry, the powerful performance of Intel x86 architecture has been praised by the industry, naturally this launch of the Arduino Development Board, but also to the industry has brought unlimited reverie. I believe a lot of people will be slightly teased to ask: This board can not run a problem such as Windows. At the same time, it is believed that a lot of people will be concerned about the power consumption of Intel Galileo and whether it is difficult to exploit.
As an author who has worked for Intel, the old club is pleased to be able to launch products for the open source hardware market. Through my friends, I was fortunate enough to get an Intel Galileo in an earlier time. After a period of use and experience, here I will share with you some of the experiences we have with Intel Galileo. And as an open source hardware and robotics developer, talk about what the Intel Galileo can do to give us imaginary space?
Here's a response to that teasing question: Yes, with software tweaks, Intel Galileo can actually run Windows.
Figure: Use the Robopeak micro USB display to add a display to the Galileo to become a standard PC
2. Open box experience and basic use
2.1 Unpacking Experience
Because Intel Galileo external bulk shipments still have a period of time, so here first introduce the process of unpacking. Intel is also a lot of work on packaging design, there are some small surprises, as a consistent symbol of color, the Intel Galileo Small box is also used with the same as the Intel Logo Blue, the cover of the old man avatar I think it should be Galileo himself.
After opening the package, you can see the Galileo circuit board, as well as some instructions. Inside the box is a decorative painting that represents an Intel chip line.
Figure: Description of the introduction document
Figure: The Intel Galileo circuit board is packaged in an antistatic bag
Next to the board is a Galileo designed by Intel: What would you make? When the board was removed, suddenly Intel's familiar lamp, such as lights, was emitted from the box! "Music, which is really a surprise. Such a seemingly small design, but the customer opened the packaging is to bring a huge surprise, really very attentively! And this feeling can only be felt by experiencing it firsthand.
The second floor of the box was taken away, and I found a musical mystery behind this layer of cardboard:
Photo: photosensitive Sound box hidden on the back of the box
But this pronunciation box is just a music card with the music IC, there is nothing to hack part, or believe it will be the world's People's spoof modified fate. After opening the second floor, I found a little surprise: Intel overalls puppet:
The remaining parts of the box are the power adapter and plugs compatible with socket sizes in different countries, as well as the fixed pillars and MICRO-USB lines of the PCB.
With everything taken out of this, we can feel how much Intel attaches to this product. Of course, to realize these details is to consider the cost, and ultimately to pay for the nature of the consumer. However, from the current Mouser Web site booking page, the price of the Intel Galileo: $69, considering that the performance and BOM cost is lower than the Arduino Yún also on the Mouser price of $76,intel Galileo price is absolutely kind.
2.2 Basic Use Mode
Before we introduce the architecture and principles of Intel Galileo, we introduce the basic use process of an Arduino development board. Due to the x86 architecture, the Arduino official IDE cannot be used directly with Intel Galileo, and Arduino programs and libraries designed for traditional AVR chips may need to be modified. To do this, Intel provides a modified version of the Arduino IDE, which can be downloaded from Inte L's maker website maker.intel.com to [1].
Figure: Supporting development tools, drivers, and other Intel-provided
For specific driver installation and use, Intel provides users with the Getting Started Guide document [2], where I am not repeating.
Figure: An Intel-written quick start manual
You need to be reminded that the Intel Galileo is powered by the power adapter before it can be connected to the computer via a USB cable. This is important because the Galileo has a dedicated DCDC power supply control, and the start-up process requires a large current demand. If only USB is connected to power the board, it may damage the board or the computer.
Figure: Intel Galileo requires a special driver to connect the PC
In the following article I will mention that Intel Galileo is running Linux internally, and when connected to a PC, it needs to use Intel's dedicated driver description to ensure that the PC recognizes it as a serial device (for Windows,macos and Linux only, refer to the documentation).
Figure: Galileo USB Interface recognized by PC as serial port
Launch the Arduino IDE, at which point we can use the Intel Galileo as a standard Arduino development Board:
Figure: As with other Arduino development boards, Intel Galileo can also be developed in the Arduino IDE
2.2.1 Resolving IDE flash-back issues
Many friends who have already got Intel Galileo will reflect the "flashback" issue with Intel's Arduino IDE, which will silently exit when the IDE starts to appear in the version screen. In fact, this is not Intel's problem, but the new version of the Arduino IDE bug. Because the Intel custom Arduino IDE uses the unpublished 1.5.3 IDE, the IDE will exit itself if the current OS locale is not in English (EN/US). [4] For this reason, the Arduino development team and Intel are aware of this issue and will also be repaired in 1.5.4.
At present, in order to solve this problem, the most direct way is to modify the operating system language settings, the English can be changed. However, this requires rebooting the system and may have an impact on applications that use Chinese. Here I share with you a way to not modify the system language settings using an open source software called locale Emulator [3]:
Figure: Locale Emulator Interface
The software can virtualize specific locales for specific programs without modifying the entire operating system. Using this approach, you can use the Intel Galileo Arduino IDE directly.
Figure: Using Locale Emulator to launch the Arduino IDE to solve the flash-back problem
2.3 Heating and power consumption
Power consumption has been an important problem in the mobile embedded field of x86 platform, and I have done several simple tests on Intel Galileo. Compared to other x86 platforms, the Intel Galileo power consumption is really small, but compared with the arm/mips equivalent to the frequency level of the platform, it appears much larger.
When the CPU is almost idle, the measured power consumption level is 5V 0.5A, which is 2.5W of electricity consumption. During the start-up process, there will be a peak current of more than 1A.
Figure: Power consumption of the Intel Galileo operation
However, given that the Linux Kernel currently running in Galileo does not have dynamic CPU frequency control enabled, the CPU core should have a lower power level than the idle state even under full load, so the peak current during startup should be caused by the instantaneous current generated by the opening of the peripheral. In the post-startup work, the overall power consumption should be maintained near 0.5A, even if the CPU is operating at full capacity.
This level of power consumption is a bit of a pressure to use battery power, if the use of 2000mAh 3.7V lithium battery power, Galileo theory the longest standby time is 2.96 hours.
From a heating point of view, the Intel Galileo uses the Quark processor chip Max TDP is 2.2W, does not require active cooling device. Intel also did not configure the passive heatsink for the Galileo processor. However, this does not mean that it does not heat up during operation. In the working state, even if the CPU remains idle, touch the processor surface by hand will still feel hot, measured temperature at about 65 degrees Celsius.
Analysis of 3.Intel Galileo technology
With the introduction of the previous article, you should know that the Arduino IDE provided by Intel can be developed just like the standard Arduino version. But the only thing that can be done with the standard Arduino Development Board is that it doesn't really reflect what's special about Intel Galileo, which can only be a faster arduino at best.
If there are no features that are superior to the traditional Arduino, I believe Intel will not be able to launch such a product at all. The real power of Intel Galileo is not the previous development of the Arduino IDE, but the Uefi/linux-based software platform behind it and Galileo's own hardware configuration. To this end, Intel provides a wealth of development documentation, software code support to enable developers to truly play out the full potential of Galileo. To understand the use of these features requires more in-depth understanding of the internal architecture of Intel Galileo and the deeper software architectures.
You may also have a few questions:
- Is the processor used by the Galileo an Atom processor or something?
- Power Issues for processors
- Peripheral/gpio and so on how to interconnect with the CPU
- What interfaces and resources are available
- How the Arduino program works
- Can Galileo run Windows or Linux?
Here I will uncover these mysteries for you.
3.1 Hardware configuration and architecture analysis
Here we list the basic configuration of Galileo:
The system diagram for Intel Galileo is as follows:
Figure: Block diagram of Galileo from Galileo Datasheet[5]
The most striking feature on the screen is the processor called Quark SoC X1000, what is the function of this chip? This we will be specific analysis later, but it seems that the processor more like a single-chip microcomputer (MCU), in addition to the processor outside the traditional x86 architecture of the north-south bridge chip has not been traces, PCIe, USB, serial and other peripheral signals directly from the Quark processor chip connected. Intel officials have also mentioned that they will be like the 80 's to push the embedded sector (meaning 8051?). ) to promote the Quark processor architecture [10], visible from the Galileo frame.
Also note that the Galileo is equipped with a total of 256MB of DDR3 memory. Such a large memory space is enough for Galileo to run the current mainstream operating system.
However, unlike single-chip microcomputer, as a compatible standard Arduino board of various GPIO/PWM/ADC signals, and not directly connected to the CPU chip, but the use of a separate ADC chip and IO expansion chip.
3.1.1 External interface List
Figure: Intel Galileo external interface at a glance
From the external interface provided by Galileo, rather than the x86 version of Arduino, I would prefer to think of it as a complete PC motherboard. In addition to interfaces such as VGA/HDMI and SATA interfaces, which are not connected to the display, almost every PC motherboard has an interface that is available on the Galileo (there are also ways to connect a monitor, such as a display/video card with a pci-e or USB interface). The rich interface gives the possibility to expand the development based on Galileo in the future. In particular, it comes with my favorite Mini pci-e interface, which makes it possible to combine the Galileo with the FPGA, which is a very rare interface currently found in various ARM development boards.
In addition to the Mini pci-e,usb2.0 high-speed Client/host port is also convenient for many applications. On the one hand through the USB Host can connect a variety of USB peripherals on the Galileo, such as the USB camera connection and Galileo combined with OpenCV for visual calculation, in addition, you can also use the USB Client to connect Galileo as a peripheral to the PC, As the current Galileo implementation, of course, we will analyze that the user is completely free to define the specific behavior of the USB Client, you can connect Galileo as any desired peripheral to the PC.
But the more bizarre is the debugging with the serial port is a 3.5mm audio interface, which brings a certain inconvenience to the connection, I will refer to this issue in the following article.
3.1.2 Main Chip
Figure: Intel Galileo main chips at a glance
The layout of the main chip on Galileo and its function are given. The specific models and descriptions are shown in the table below. In the following article we will pick a few representative instructions.
Here I do not discuss the specific parameters of these chips, connectivity and other issues, interested friends can refer to the following text given the Intel Galileo supporting documentation, refer to the official circuit diagram to understand the specific details. I will select a few representative chips to do the analysis.
3.1.3 Quark SoC X1000
This Quark SoC X1000 processor chip used on Galileo is believed to be of the greatest concern to all. So does it belong to the Intel Atom series processor? The answer is in the negative.
Figure: Quark SoC X1000 Closeup
On product positioning, Intel locates Quark in the x86 processor for the Internet of things, wearable devices, and his internal code is Clanton. Compared to the Atom series processors, the Quark is almost the size of atom 1/5 and consumes only 1/10 of the atom (see [6]). This estimate is also called Quark (quark) reason. Of course, Quark's performance is much weaker as a cost reduction in size, power, and cost. It is more like a modified process, but castrated the MMX instruction set of the Pentium I processor (reference [7] guessed Quark is a modified self-p54c framework, P54C frame is the main frequency in the clock, the 0.5um Pentium I-generation processor adopted the framework of the year, the use of the process )。
Table: Quark SoC X1000 Partial configuration, sorted by Quark Datasheet[8]
From the supported instruction set, Quark does not support advanced instruction sets such as x64, MMX, SSE, and other Atom chips, but contains the floating-point instruction Set (x87). While Intel's official parameters mention that Quark's instruction set is Pentium-compatible, it is clear that many programs that can run on the Pentium I CPU may not work on Quark because of the lack of MMX instructions as an important sign of the Pentium processor. This is a pity, the lack of MMX, SSE SIMD Instruction set acceleration, making Quark in the processing of multimedia, image arithmetic, computer vision and other algorithms may be poor performance.
However, in addition to the MMX instruction set, other Pentium instruction sets/architectures are supported in Quark. So now the program as long as not with MMX, SSE instructions, theoretically can be run on the Quark very good. I will mention the notes in the following software development section. Another detail is that the main operating system on the current PC, Windows and Linux are expected to run in Quark (Linux is currently running on Intel Galileo).
As a processor for miniaturized devices, Quark is doing a good job on SoC integration, which is almost the form of a single chip microcomputer. The Quark can also take advantage of the integrated 512kbyte SRAM in the chip, even if it is not connected to DDR memory.
Figure: Internal block diagram of the Quark SoC X1000, image from [8]
In terms of power consumption, the Quark controls Max TDP at 2.2W. For 3.3V power supply, that is, the maximum need to provide 660mA of current. This power consumption is much smaller than other x86 CPUs, but we compare processors with other architectures of the same frequency class, such as ARM and MIPS architectures, and find that the power consumption of the Quark is relatively high. If you want to use Quark as a low-power application, Intel needs to do more homework for this.
Implementation and Hack of 3.1.4 GPIO/PWM/ADC interface
From the previous block diagram can be found that Galileo on the external GPIO/PWM/ADC interface is not directly from the Quark chip directly provided, but the use of additional chips to achieve, Quark CPU and these interface chips and then use SPI/I2C to connect.
This naturally has a number of advantages, such as the electrical isolation can be done. The Quark processor uses a 3.3V level and therefore cannot directly connect its GPIO directly to the Arduino interface. It is also possible to avoid the possibility of the Quark chip being burnt directly by the user due to connection error. It also improves the flexibility of the system.
Figure: interface chip for extending the GPIO/PWM/ADC
By analyzing these new data sheets, you can find out more about Galileo's implementation details, as well as more features you can use to Hack. For example, a block diagram of the cy8c9540a chip used to achieve GPIO/PWM signal expansion:
Figure: cy8c9540a IO Expansion chip block diagram, photo from [9]
From the chip block diagram, the chip in addition to provide pwm/gpio signal expansion, but also comes with a Quark can be used EEPROM, can store 11kbyte of data [9], the user can use the EEPROM library to operate him. In addition, the chip actually provides 8 sets of PWM ports, more than the 6 groups described in the Intel Galileo manual. However, the additional PWM output cannot be used by using the Arduino IDE, which is the part that can be hack in the future.
Observe the ADC chip AD7298 for digital-to-analog signal acquisition, and find the performance is also fair. With 12bit 1msample/s acquisition capability. This performance is not high, but is much stronger than the AVR-based Arduino, with some of the current 32bit ARM MCUs (such as STM32) of the ADC at the same level.
3.1.5 SD Card Reader
The SD card reader on the Intel Galileo is connected directly to the Quark processor. The attractive feature of this card reader is that it attempts to boot the operating system on the SD card when the Galileo is started. Just like a bootable USB stick on a PC. Users can place a custom operating system on an SD card, making it possible for Galileo to run other systems. In this regard, I will be specifically involved in the follow-up software architecture and possibilities discussion section.
Figure: Intel Galileo supports loading a custom operating system from an SD card
3.1.6 Debug Serial Port
Intel Galileo provides a debug string for developers to debug the underlying software system via terminal connection Galileo. However, the more bizarre is, Galileo the serial interface into a 3.5mm headphone jack. This is not only easy to doubt, in addition to find such a serial interface is also not easy, for this I specifically DIY an audio jack to RS232 socket of the cable:
Figure: Seemingly audio output, actually debug serial port socket
By using software such as Putty, you can observe the Intel Galileo boot process and access to internal Linux for operation. I'll discuss the issue in the Software Development section.
Figure: Through the debug serial port, see the Intel Galileo Boot in the Grub menu
3.1.7 Store your own Flash with firmware
On the Intel Gaileo motherboard there is a block of 8MByte-sized SPI Flash, which holds the firmware program in the Galileo boot. Analogy PC motherboard, in fact, this chip is saved is the BIOS program. But in the software architecture that follows, I'll mention that Galileo uses UEFI, which includes UEFI firmware for Galileo initialization boot, and a small Linux operating system to run programs that users have developed through the Arduino IDE and And the PC to complete the interconnect.
In order to facilitate the user Hack,intel Galileo is also very friendly to the flash chip of the SPI interface, the user can not need to remove the flash chip, directly using the programmer to flash chip firmware in the program to make changes and backup. This process will be discussed in the subsequent extended development.
Figure: SPI Flash chip for saving firmware and easy-to-program interface header
3.2 Software Architecture
A brief analysis of 3.2.1 overall structure
In the previous article, the use of the Arduino IDE to program Intel Galileo can only see the tip of the Galileo software system. Unlike other microcontroller development boards, Intel Galileo is not as simple as running a program written by a user.
Its software architecture environment is basically the same as a standard PC: it contains UEFI (equivalent to the traditional BIOS), Grub boot, running the Linux operating system. The user-written Arduino Sketch program is only an App that runs on a Linux system in its implementation:
Figure: Simple software architecture for Intel Galileo, image source [12]
Within the SPI Flash chip of the Intel Gaileo motherboard, the UEFI initialization firmware required for booting is saved, as well as a miniature Linux operating system. When writing an Arduino program, the Arduino IDE compiles a well-written Arduino program into a standard Linux ELF executable and downloads it to execute on a Linux system running on Galileo.
By developing directly based on the Linux system on Galileo, we can play a Galileo greater potential. And with a variety of development materials and open source UEFI implementations from Intel, we can also let Galileo run more operating systems, such as Windows.
In the introduction document [11] of the Intel Quark Soc, Intel provides support for the current software stack based on the Quark SOC:
Figure: Intel Quark SoC X1000 software Stack, image source [11]
The Intel Galileo on hand does not run Wind River Linux or Vxwork. It incorporates a customized version of the Linux system based on the Yocto project and is divided into micro-systems running on SPI Flash and a full version of the system running on the SD card:
Figure: Software platform architecture for Intel Galileo
Due to the SPI Flash 8Mbyte space limitation on the Intel Gaileo motherboard, Intel integrates a miniature version of the Linux system into the chip. This version of Linux will be started by default after Galileo is started, with the basic peripheral drivers on the Galileo motherboard, and the Arduino Sketch to function properly. But if users need more functionality, they need to use an external SD card, using the full version of Linux provided by Intel. The Linux also includes a Wifi NIC driver, as well as libraries such as OpenCV:
In design, the Sketch program written through the Arduino IDE can be permanently stored in the SPI Flash chip or SD card. Of course, if you want to save in the SPI Flash chip on the motherboard, the size of the Sketch program to be written will be limited.
3.2.2 Intel Galileo Boot Process Introduction
After powering on, Intel Galileo will first execute the UEFI initializer on SPI Flash and gradually enter the Linux system and then start running the user's Sketch program. Its approximate startup process is as follows:
Figure: The boot process for Intel Galileo
As you can see, the Galileo start-up process is consistent with the traditional PC. In addition to supporting booting from an SD card, the Intel Galileo also supports booting the USB drive, from the network (may need to modify UEFI), and so on. However, unlike a PC, Galileo is not based on the master Boot Record (MBR) to determine whether or not to boot, after all, Galileo does not contain the traditional old BIOS, its boot is through grub, so need to boot media need to have to be Galileo to bring the grub Identify the file system and the corresponding Grub boot configuration.
Figure: Intel Galileo boot output information seen from the debug serial port
Also, during the UEFI phase, users can request other EFI programs, such as the EFI shell, to run. This makes the boot process more flexible. The boot process will eventually start the Linux operating system for software use already provided by Intel. After Linux boot is complete, the Sketch.elf program (if any) is loaded from the directory/sketch, and the Arduino program is available to run the user.
How does the 3.2.3 Arduino Sketch work?
As mentioned earlier, the Arduino program written for Intel Galileo is essentially the standard Linux ELF executable App. So how does he operate the Galileo hardware peripherals? To do this, we need to find the answer by browsing the relevant source code.
Opens the Hardware\arduino\x86\cores\arduino location of the directory where Intel Galileo specializes in the Arduino IDE, which stores the source code for the Arduino library developed by Intel for Galileo. It can be seen that Intel completely rewritten the original Arduino implementation based on the AVR chip.
Figure: Intel's fully rewritten Arduino runtime code
Here we select the FAST_GPIO_SC.C (implement GPIO operation) code to do the research. This code is used to realize the familiar digitalwrite, Digitalread and other IO operations. From the code, the Linux system on the Intel Galileo has been packaged as a Linux device file with the corresponding IO device, and the user-written Arduino program only needs to use system calls like standard Linux programs to operate specific hardware peripherals, such as Mmap/ioctl. 。
Figure: Code implementation fragment for GPIO operation on Galileo
The code above uses the open () system call to start accessing the GPIO peripherals with a Linux device path of/dev/uio0. For other devices such as I²c, ADC, SPI, the basic implementation is the same.
At the same time, in the Galileo version of the Arduino IDE directory can also be found specifically for the Quark processor custom GCC compiler, this is familiar with Linux program development Friends, also means that can be divorced from the Arduino IDE, directly in the Galileo Linu The programming in X is controlled by the external circuit.
Figure: GCC compilers and toolchain with the Quark platform in the Arduino IDE
4. Advanced operation of Intel Galileo
After analyzing the hardware and software architecture of Galileo, I will share with you some ways to use it in addition to using the Advanced Arudino IDE. However, the topic of programming development is not covered in this article.
4.1 Direct operation of the Linux system
Here's a talk about how to directly manipulate Linux in Galileo. We can use Ethernet or debug serial port to connect to Linux. The specific connection operation allows you to view the documentation given by Intel.
Taking the serial port as an example, I use my DIY 3.5mm audio socket to the serial line will Galileo debugging serial port and PC interconnection. and use Putty to open the serial interrupt, set the 115200 baud rate.
Figure: Can DIY an audio to serial cable
After powering Intel Galileo, you can see the text output of the boot process, and you will eventually see the Linux login prompt screen. Log in directly with the root account:
Figure: Login to the onboard Linux terminal via serial port
The next thing you can do is work like any other Linux system.
4.2 Using the Linux system on the SD card
If you need to run the full version of Galileo custom Linux system provided by Intel, you need to boot from the SD card. The Intel Galileo download page [1] provides the SD card file for the Linux system. Copy them to the SD card root directory in FAT format:
Figure: Copy the supporting files into the SD card
Insert the SD card into the Galileo and give Galileo power, Galileo will boot the Linux system from the SD card. You can log on to the system via the serial port or Ethernet:
Figure: The Grub display will boot the Linux system on the SD card
Compared to the LINUX,SD Linux system in SPI Flash, there are more drivers and libraries/programs with the following:
Figure: Running a python program in Galileo Linux
4.2.1 Dealing directly with UEFI
In addition to operating Linux, Galileo also provides a UEFI Shell for us to operate on the lower level of firmware and to perform some simple operations on Galileo before the specific OS is loaded. The UEFI Shell provides a series of commands that can be used to manipulate files, debug memory/peripherals, or write scripts. If you need to modify the contents of the SPI Flash, but there is no hardware programmer on hand, you can use the EFI Shell to complete. [13] Specific commands can be found in the reference literature.
Connect to the Intel Galileo by debugging the serial port and using Putty. In the boot process, press and hold C after entering the Grub menu. and enter quit to quit grub:
Figure: Exiting the Grub EFI program
At this point Uefi will prompt for the new boot mode and select the Uefi Internal Shell:
Figure: Boot prompt menu for UEFI output
You can then enter the EFI Shell. The update to the SPI Flash mentioned later is done in the EFI Shell.
Figure: EFI Shell Interface
5. Examples and possibilities of extended development
After introducing the implementation details of Intel Galileo and the various uses, I will share with you the experience of Intel Galileo based development. Here I am mainly around the operating system level to introduce.
5.1 Reference List
Intel now almost provides Galileo all the information, with this information, as long as can buy Quark SoC chip, diy a piece of Galileo is completely no problem. The information provided in the official website of Intel Galileo [1] is:
- Schematic diagram of the Intel Galileo circuit
- Intel Galileo PCB Layout
- Intel Galileo BOM List
- UEFI, Grub, Linux source code, and development documentation for Intel Galileo
- Quark SoC x1000 Data Sheet
- Quark SoC x1000 Development Documentation
If you are going to develop based on Galile O or Quark SoC X1000, these are required readings. They are sufficient to explain the problems that arise in the development, system customization, and optimization of Galileo.
5.2 Customizing Linux Systems
Linux systems running in Intel Galileo are generated by the Yocto buildroot[14] system. A friend who has contacted a custom router may have studied OpenWRT's system customization, and Yocto is more powerful than OpenWRT's compiled system. It is a highly configurable integrated compilation environment for embedded Linux. Developers can be more convenient to customize the target embedded devices required by the Linux kernel, each package. Yocto will automatically download, compile, and package the required packages, directly producing image files that can be burned into the target system.
Figure: Architecture of the Yocto compilation system, image source [14]
All software source code for Galileo based on the Yocto compiled system is provided in the Intel Galileo software download page [1]. By following the documentation, you can compile the previously mentioned UEFI firmware, Grub, Linux for SPI Flash, and a full version of the Linux image running in the SD card.
So why go to your own custom Linux? There are a number of reasons for this, such as wanting to have Galileo support more hardware devices, such as letting it identify your 3G card, connecting to Kinect, and so on, or you want to add more packages to Linux, like running Apache servers. This is the only way to customize the system according to the Yocto configuration process.
Figure: Yocto-based Intel Galileo BSP code directory structure
Figure: Configuring the Linux Kernel used by Intel Galileo
5.3 Add monitor, keyboard and other peripherals for Galileo
Here the most common types of USB devices, for example, because the USB Host on the Intel Galileo is a MICRO-USB socket, the standard USB plug can not be directly connected, so first to prepare a MICRO-USB OTG line:
Figure: Preparing a MICRO-USB OTG cable for connecting USB peripherals
In addition, if you need to connect more than one USB device, you can use a USB hub.
5.3.1 External USB display for display screen
A pity for Intel Galileo is that it does not provide a VGA, DVI, HDMI, and other video output interface for connecting to the display. This is inconvenient for some applications and debugging, and it seems that it is impossible to run the Windows system.
But there's another way we can do it. Let Galileo display, here I use the Robopeak mini USB monitor [15], by modifying the Galileo kernel to increase the corresponding driver support, so that the Linux command line and X-graphic interface in the USB display:
Figure: Add video output capability to Intel Galileo using USB display
5.3.2 External Mouse Keyboard
After adding the video output, it is natural to try to configure the Galileo with mouse and keyboard input devices. In the Linux kernel configuration provided by Intel, there is no support for HID devices such as mouse keyboards, which requires us to add in the Menuconfig.
Figure: Adding support for USB HID devices in the menuconfig of Linux Kernel
After adding the corresponding configuration, the Intel Galileo can be turned into a real PC, but of course it is not running Windows for the time being, which will be the next step.
Figure: Configuring the mouse Keyboard for Galileo to become a full PC
5.3.3 using a USB camera
For applications that want to use the Intel Galileo for Computer vision processing, you need to increase the corresponding USB camera driver. In general, the current USB camera is more than the use of UVC protocol specification chip, and some old-fashioned camera or special camera under Linux using the Gpsca drive framework. Also, add the corresponding driver to the Kernel menuconfig:
Figure: Increased support for USB cameras
5.4 Other Possibilities discussion
I've previously shared some of the expansion developments I've done with Intel Galileo at the moment. Since the current use of Galileo soon, so there are more interesting possibilities to be realized. Here is the possibility to try it out in the future.
5.4.1 Increased computational performance
Since Intel Galileo is only 400Mhz in frequency, it does not change many applications. For visual computing, the frequency of the 400Mhz is stretched for many applications.
However, Galileo provides a high-speed PCI-E interface, which we can use to establish high-speed interconnection with a more powerful external computing system. The most representative is through the PCI-E and FPGA connection, through the FPGA to achieve visual computing, cryptography processing, artificial neural network, such as the need for high-speed parallelism algorithm, and the use of Galileo Quark chip to achieve high-level control logic to coordinate the operation.
In a traditional PC, the FPGA accelerator card with the PCI-E interface is a common practice, with the benefit of the same x86 platform, using the Intel Galileo to migrate FPGA-accelerated projects that previously needed traditional PCs to smaller, less-reactive Environment. This can be used in mobile robots, aircraft and other fields have a great application prospects.
5.4.2 running a different operating system
The current Intel Galileo can only run Linux, and because of its own no video output interface, the Intel default Linux configuration is no X graphics system. But as a x86 platform, you will naturally want Galileo to run other operating systems, such as Windows.
In the previous analysis, we have seen that Galileo's architecture and software support allow Windows to run completely. This may end up with little real value, but it's also worth trying. This, at least as a geek, strengthens the credo of "I Can". In addition, running Windows allows Galileo to drive some peripherals that are still supported by Windows drivers, such as some printer devices, bank U shields, and so on.
6. Summary
This article is my experience of using Intel Galileo and sharing experiences, because get hands time is not long, so many Galileo potential has not yet to try. However, through the introduction of hardware and software architecture and development process, I believe you will understand the great potential of Intel Galileo, if only as a standard Arduino to use, it is too bad.
Reference documents
[1] Intel Galileo related software, https://communities.intel.com/community/makers/software/drivers
[2] Intel Galileo Getting Started guide,,https://communities.intel.com/docs/doc-21838
[3] Locale Emulator github,,https://github.com/xupefei/locale-emulator
[4] Arduino IDE crash issue on GitHub, https://github.com/arduino/Arduino/issues/1626
[5] Intel Galileo datasheet, https://communities.intel.com/docs/DOC-21835
[6] Intel's New Chip ' Quark ' is designed for wearable tech,http://www.crunchwear.com/ intels-new-chip-quark-designed-wearable-tech/
[7] What happens if you shrink a p54c Pentium to 32nm and call it Quark?, Http://semiaccurate.com/2013/09/11/happens-shrin k-p54c-pentium-32nm-call-quark/
[8] Intel Quark SOC datasheet, https://communities.intel.com/docs/DOC-21828
[9] cy8c9520a,cy8c9540a, cy8c9560a,20-, 40-, and 60-bit I/O Expander with EEPROM datasheet, Http://www.cypress.com/?docID =31413
[10] Intel Open source PC Galileo will be the first time in China, http://tech.qq.com/a/20131208/001118.htm
Product Brief intel®quark SoC X1000, https://communities.intel.com/docs/DOC-21829
Product Brief Intel®galileo Board, https://communities.intel.com/docs/DOC-21836
EFI shells and Scripting, http://software.intel.com/en-us/articles/efi-shells-and-scripting
[Yocto] Project, https://www.yoctoproject.org/
[Robopeak] Mini USB display Open source project, http://www.robopeak.com/blog/?p=377
x86 architecture of the Arduino Development Board Intel Galileo