Next Previous Contents  

2. Constructing Embedded Linux development environment


2.0 Development steps of Embedded Linux

The following are development steps of Embedded Linux. Seeing these steps, you will know how to construct development environment for embedded linux.


(1) Installing Linux to host PC

(2) Installing Embedded Linux GUI Toolkit, development kit to host PC

(3) Compiling bootloader, kernel image, filesystem for target board

(4) Porting images compiled at the preceding step to target board

(5) Porting Embedded Linux GUI Toolkit to target board

(6) Developing software for target board in host PC

(7) Porting the developed software to target board

This document is written on the assumption that you install "Red Hat Linux 8.0" by workstation type on your host PC. If you install other distributions on your PC, some problems related to library etc can be happened. So if you want to prevent getting into trouble and spare development time, install ¡°Red Hat Linux 8.0¡± by workstation type on your PC.

If you want to know more detail things about ¡°Red Hat Linux 8.0 Installation¡±, visit the bellowing site.

     http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/install-guide/

The following is summary of each chapter.

Chap4
In this chapter, we explain hardware and software which are needed to construct development environment. And in case software, how to install it is also explained.
Chap5
In this chapter, we explain how to compile bootloader, kernel image and filesystem for target board.
Chap6
In this chapter, we explain how to port the compiled images to target board by using cables which connect between target board and host PC.
Chap7
In this chapter, we explain how to compile and test application programs of embedded linux by using development environment constructed on host PC.


2.1 Composing Hardware environment

MIZI-tool-box uses three cables(JTAG cable, Serial cable, Ethernet cross cable) for communication between target board and host PC. Usually each cable connects two systems when the cable needs to use. Then we introduce each cable at the following.

2.1.1 JTAG(Joint Test Access Group) cable

In here, we don¡¯t deal with the principal or hardware configuration of JTAG. The following contents are written about the roles of JTAG when developing embedded system.
When embedded system can¡¯t be bootable due to corruption of bootloader or when we write bootloader to flash ROM for the first time, we use JTAG cable. In those cases, we have to download bootloader from host PC to embedded system by using JTAG cable and then write the downloaded bootloader to flash ROM of embedded system.
JFlash program is used for writing bootloader (for detail, downloading bootloader from host PC, then writing bootloader to flash ROM that locates inside embedded system.)

S/W Vendor
Embedded system
Program
Cable
MIZI Research
MIZI-tool-box
Jflash-s3c2410
JTAG parallel cable

2.1.2 Serial cable

Serial cable primary uses for communicating between host PC user and embedded system. Serial cable is used when host PC user sends commands to embedded system and when embedded system displays outputs of commands or states of itself etc. to host PC.
Its transfer rate is so slow that it is usually used to handshake small size data. But when high-speed communication devices did not exist, it sometimes used to transfer bulk data like kernel or filesystem image.

2.1.3 Ethernet cable

Serial cable has problem to handshake bulk data between two systems because of low transfer speed. To solve this problem, embedded system offers Ethernet cable that can transfer data by high-speed rate.

2.2 Constructing Software environment

2.2.0 Installing basic software development tools

(1) Installing "Red Hat Linux 8.0" by workstation type

Workstation installation installs software development tools as well as a graphical desktop environment(X-Window System). In this case, almost basic development tools will be installed, so you can install and use MIZI Linux 1.5 SDK without additional works.

(2) Already Installed "Red Hat Linux 8.0" by personal desktop type

Personal desktop installation installs a graphical desktop environment(X-Window System) and creates a system ideal for desktop use. But it doesn't install any RPMS related software development tools.
We don't supply the basic development tools that Redhat provides, so if you use MIZI Linux 1.5 SDK well, you have to find and install software development tools from Redhat site.
Software development tools include the bellowing programs as basic tools to develop;

Software Development tools
Use this version or over
binutils
binutils-2.13.90.0.2-2
gcc
gcc-3.2-7
gcc-c++
gcc-c++-3.2-7
glibc-kernheaders
glibc-kernheaders-2.4-7.20
glibc-common
glibc-common-2.3.2-4.80
glibc
glibc-2.3.2-4.80
glibc-devel
glibc-devel-2.3.2-4.80
patch
patch-2.5.4-14
make
make-3.79.1-14
minicom
minicom-2.00.0-6
Etc.
...

You can get above RPMS at Redhat site.
     ftp://ftp.redhat.com:/pub/redhat/linux/8.0/en/os/i386/RedHat/RPMS

Download above RPMS at your local directory and install these by this order.

# rpm -Uvh RPMS_name

* Please update your glibc RPM package to 2.3.2 from Red Hat update site.

2.2.1 Installing ¡°MIZI Linux SDK(Software Development Kit) for S3C2410¡±

After securing 1GB disk space in your host PC, make ¡°linuette¡± directory.
Mount CR-Rom which ¡°MIZI Linux SDK¡± is inserted at /mnt/cdrom.

# mkdir /linuette
# cd /mnt/cdrom/
# tar cf - . | ( cd /linuette ; tar xvf - )

Login by root account then, install all RPMs under /mnt/cdrom/RPMS directory by the following command.

#rpm -Uvh *.rpm

If all RPMs are installed well, the basic development environment including cross-compiler is constructed in your host PC.

2.2.2 Installing Cross Compiler

To develop embedded Linux kernel, device driver, application, etc., you have to construct cross-compile environment.
Cross-compile environment is development environment that is embodied in host PC to develop linux for embedded system. To create embedded program, we would have to compile the program directly in target board or compile that in host PC for target board processor. But because of restricted resources (lack of memory or storage), compiling in target board is not easy.
So we construct cross-compile environment to compile embedded program sources in host PC instead of target board.
To construct the environment, install tool chain for target board processor. Tool chain is collection of various utilities and libraries which are needed to compile embedded program sources.

Normally, Tool chain offered by GNU is used for developing Linux.

The steps of installing tool chain are as following.
binutils --> header file link --> gcc (c compiler) --> glibc --> gcc (c++ compiler)
Compiling compiler is not easy because of the problem related to bootstrap.
In Here, we install tool chain easy by using RPMs of "MIZI Linux SDK".

Tool chain belonging to RPMS directory of MIZI Linux SDK

cross-armv4l-binutils-2.10-3mz.i386.rpm
GNU binary utilities(assembler, linker, various object file utilities) are collected in here.
cross-armv4l-kernel-headers-2.4.5_rmk7_np2-1mz.i386.rpm
It includes C header files for Linux kernel. The header files defines structures and constants that are needed for building most standard programs and are needed for rebuilding the kernel.
cross-armv4l-gcc-2.95.2-10mz.i386.rpm
It adds C support to the GNU compiler collection. It doesn¡¯t include the standard C library.
cross-armv4l-glibc-2.2.1-2mz.i386.rpm
It contains the most important sets of shared libraries, the standard C library and the standard math library.
cross-armv4l-gcc-c++-2.95.2-10mz.i386.rpm
It adds C++ support to the GNU compiler collection. It includes the static standard C++ library and C++ header files. The library for dynamically linking programs is available separately.

RPMS directory of MIZI Linux SDK includes not only tool chain but also the following RPMS like ¡°minicom¡±, etc. These utilities that ate applied by RPM format are necessary for MIZI-tool-box developing.

cross-armv4l-libfloat-1.0-3mz.i386.rpm
It contains a shared library of functions implementing the software floating points calls emitted by GCC when -msoft-float flag is used.
cross-armv4l-zlib-1.1.3-5mz.i386.rpm
It provides in-memory compression and decompression functions.
cross-armv4l-jpeg-6b-2mz.i386.rpm
It contains a library of functions for manipulating JPEG images, as well as simple client programs for accessing the libjpeg functions.
cross-armv4l-jpeg-devel-6b-2mz.i386.rpm
It includes the header files and static libraries necessary for developing programs which will manipulate JPEG files using the libjpeg library.
linuette_sdk_arm-1.5-1mz.noarch.rpm
MIZI Linux source development kit for arm
linuette_sdk_x86-1.5-3mz.noarch.rpm
MIZI Linux source development kit for x86
minicom-1.82.1-8mz.i386.rpm
Minicom is a simple text-based modem control and terminal emulation program.

2.2.3 Installing Embedded Linux GUI Toolkit, Development Kit

If Installing ¡°MIZI Linux SDK¡± is finished, the total environment to develop embedded system is constructed, of course, including GUI toolkit and development Kit. But owing to ¡°MIZI Linux SDK¡± is composed to MIZI-tool-box exclusively, if you use different target board, you have to compose toolkit newly.
Among embedded systems, especially PDA, smart phone, web pad, set-top box etc. use GUI which applies window system on touch screen for communicating between user and system. The developer who uses window system has to consider window manager and requirements of application developing etc.

MIZI Research provides MIZI Linux GUI library to develop applications which run on embedded linux.
MIZI Linux GUI library is provided by RPMs format that are located in RPMS directory of MIZI Linux SDK.

 
RPM
Installed location
For X86
linuette_sdk_x86-1.5-3mz.noarch.rpm
The files are installed under /opt/host/i386/i386-unknown-linux.
For ARM
linuette_sdk_arm-1.5-1mz.noarch.rpm
The files are installed under /opt/host/armv41/armv41-unknown-linux.


All files under this directory are already compiled, so you can test and use binary files directly.

2.2.4 Outline of MIZI Linux SDK

Directory structure of MIZI Linux SDK installed in host PC

If you know the structure of whole directory, you can understand development process more easily.

Now we explain each directory very simply.

Linuette
It is the top directory of MIZI Linux SDK and has the following subdirectories.
Documents
All documents that are needed to refer are located in this directory.
RPMS
RPM packages to construct cross-compile environment are located in here.
SRPMS
Source RPMs of RPM packages are located in here.
host
Files related to Qt library are located under this directory.
target
This directory includes the whole things to port embedded programs to target board.



Next Previous Contents