summaryrefslogtreecommitdiff
path: root/ubi-utils/README
diff options
context:
space:
mode:
Diffstat (limited to 'ubi-utils/README')
-rw-r--r--ubi-utils/README236
1 files changed, 0 insertions, 236 deletions
diff --git a/ubi-utils/README b/ubi-utils/README
deleted file mode 100644
index d976a76..0000000
--- a/ubi-utils/README
+++ /dev/null
@@ -1,236 +0,0 @@
-README
-======
-
-The programs and libraries in this directory provide a tool-chain to
-generate binary data for embedded systems which can be flashed either
-by a hardware flash programmer, e.g. JTAG debugger, or on the target
-system directly using pfiflash, or ubimkvol, ubirmvol, ubiwritevol.
-
-The latter is the case when there is already Linux running which has
-build in UBI support.
-
-Authors: Oliver Lohmann
- Frank Haverkamp
- Andreas Arnez
-
-mkpfi - tool for flash content generation in PFI
- format
-pfi2bin - conversion tool to transfer a PFI file into a
- binary image
-pfiflash - tool to update the embedded systems flash using
- pfi files created by mkpfi
-libbootenv - library for boot-parameter processing
-libpfi - library for partial flash image (PFI) creation
- and handling
-ubigen - tool to create binary UBI images e.g. for a
- jtag flashing tool
-nandimg - tool to add OOB data to binary images intended
- for NAND flash systems
-ubilib - UBI library
-
-!!! NOTICE !!!
-If you execute ./configure in the top_level directory the helper Makefile
-gets overwritten. Thats actually no problem, but be aware of that.
-
-1. Build Process
-
-1.1 Build, install and forget
- o Build all and everything
- $make all (takes a while, builds ppc and x86 binaries/libs)
- o Installation:
- $make install
- o Uninstallation:
- $make uninstall
-
- o x86 only would be:
- $make x86 && make install_x86
-
-1.2 Usage for a developer
-
- 1.2.1 The build process in detail
-
- o If you've checked out the sources from the CVS repository you'll find a
- directory setup like this:
-
- flashutils/
- -rw-r--r-- 1 olli olli 1.3K Mar 14 11:53 Makefile
- -rw-r--r-- 1 olli olli 1.9K Mar 14 10:50 Makefile.am
- -rwxr-xr-x 1 olli olli 265 Mar 9 00:47 bootstrap
- -rw-r--r-- 1 olli olli 1.1K Mar 9 16:55 configure.ac
- drwxr-xr-x 2 olli olli 4.0K Mar 9 00:28 doc
- drwxr-xr-x 2 olli olli 4.0K Mar 14 11:56 inc
- drwxr-xr-x 2 olli olli 4.0K Mar 14 11:56 lib
- drwxr-xr-x 17 olli olli 4.0K Mar 13 16:50 src
-
- o To generate the initial build templates you have to call the bootstrap
- script:
- $ ./bootstrap
- o Create a directory for the target platform
- $ mkdir build_x86
- o Descend into the directory and call the top-level configure script
- with the desired options.
- $ cd build_x86
- $ ../configure --prefix=/usr/local [...]
- o Now you'll find a directory structure like this:
-
- flashutils/build_x86/
- -rw-r--r-- 1 olli olli 47K Mar 14 13:33 Makefile
- -rw-r--r-- 1 olli olli 33K Mar 14 13:33 config.log
- -rwxr-xr-x 1 olli olli 38K Mar 14 13:33 config.status
- drwxr-xr-x 2 olli olli 4.0K Mar 14 13:33 inc
- drwxr-xr-x 3 olli olli 4.0K Mar 14 13:33 lib
- -rwxr-xr-x 1 olli olli 202K Mar 14 13:33 libtool
-
- o The config.guess script can be used to update the Makefiles in the
- target directory after a change of the top-level template files
- (i.e. the Makefile.in files).
- $ ./config.guess
- o To compile everything for this platform just invoke make in
- flashutils/build_x86:
- $ make
- or from toplevel:
- $ make -C ./build_x86
- o The build process creates a new directory "bin":
- flashutils/build_x86/
- [...]
- drwxr-xr-x 3 olli olli 4.0K Mar 14 13:41 bin
- [...]
-
- This directory contains all binary files which will be installed
- by make install, e.g.:
-
- flashutils/build_x86/bin/
- -rwxr-xr-x 1 olli olli 7.2K Mar 14 13:41 bin2nand
- -rwxr-xr-x 1 olli olli 15K Mar 14 13:41 mkbootenv
- -rwxr-xr-x 1 olli olli 16K Mar 14 13:41 pddcustomize
- -rwxr-xr-x 1 olli olli 36K Mar 14 13:41 pfi2bin
- -rwxr-xr-x 1 olli olli 6.8K Mar 14 13:41 pfiflash
- -rwxr-xr-x 1 olli olli 5.0K Mar 14 13:41 ubicrc32
- -rwxr-xr-x 1 olli olli 13K Mar 14 13:41 ubigen
- -rwxr-xr-x 1 olli olli 6.3K Mar 14 13:41 ubimirror
-
-
- 1.2.2 Modifying and Adding Sources
-
- o There is a dedicated directory which contains all source code
- of the flashutils package, e.g.:
-
- flashutils/src/
- drwxr-xr-x 2 olli olli 4.0K Mar 13 11:42 libbootenv
- drwxr-xr-x 2 olli olli 4.0K Mar 13 11:42 liberror
- drwxr-xr-x 2 olli olli 4.0K Mar 13 16:48 mkpfi
- drwxr-xr-x 2 olli olli 4.0K Mar 13 16:12 pddcustomize
-
-
-
- The prefix "lib" is used to mark directories as part of a convenience
- library. Binaries have no special prefix.
-
- o How to add sources?
-
- Just create a new directory at flashutils/src/, e.g.:
-
- For a binary:
- $ mkdir rider
- $ cd rider
- $ vi rider.c
- /* do sth with that file... */
-
- For a convenience library (as well as for "normal libs")
- $ mkdir libworld
- $ cd libworld
- $ vi world.c
- /* do sth with that file... */
-
- o How to register sources in the build process (for binaries)?
-
- You have to register your sources at the top-level automake Makefile:
-
- In directory flashutils/
- $ vi Makefile.am
-
- Binaries have to be registered at "bin_PROGRAMS", e.g.:
- bin_PROGRAMS = bin/pddcustomize \
- bin/rider
-
- Add the rule how the binary is assembled, e.g.:
- bin_pddcustomize_SOURCES = \
- $(top_srcdir)/src/pddcustomize/pddcustomize.c
- bin_pddcustomize_LDADD = \
- $(top_builddir)/lib/libbootenv.la \
- $(top_builddir)/lib/liberror.la
-
- bin_rider_SOURCES = \
- $(top_srcdir)/src/rider/rider.c
-
- This example reflects a simple build process for "rider". "rider"
- is built without any other dependencies or convenience libraries.
- The example for pddcustomize is a bit more complicated.
- "_LDADD" adds some convenience libraris into the link process of
- "pddcustomize". Imagine, that your "rider" has common code
- with "dragon_bin" which is held in a library called "libworld".
- The build rules would like like the following:
-
- bin_rider_SOURCES = \
- $(top_srcdir)/src/rider/rider.c
- bin_rider_LDADD = \
- $(top_builddir)/lib/libworld.la
-
- bin_dragon_SOURCES = \
- $(top_srcdir)/src/dragon_bin/dragon_bin.c
- bin_dragon_LDADD = \
- $(top_builddir)/lib/libworld.la
-
- Don't forget to add "dragon" to "bin_PROGRAMS"!
- Don't forget to set the build rule for the "libworld" itself!
- This is documented in the next section.
-
-
- o How to register sources in the build process (for libraries)?
-
- Until now we didn't care about the build process of "libworld".
- Libraries are handled special in this build process because
- they are handled as "modules", i.e. they are able to be built
- without building the binaries in the same step. Additionally,
- it is possible to assemble complex libraries out of simple ones.
- That especially makes sense if you want to export (install) a
- library on a system which uses some common code and makes
- some adoptions for usability and presents a comfortable interface to
- the user (see libpfiflash in the sources for an example).
-
- o Registering "libworld" as convenience library.
-
- Instead of editing the "Makefile.am" in "flashtools/", we have to
- edit now the "Makefile.am" in "flashtools/lib/":
-
- noinst_LTLIBRARIES = libworld.la
-
- libworld_la_SOURCES = $(top_srcdir)/src/libworld/world.c
-
- o Registering "libworld" as library which gets installed.
-
- lib_LTLIBRARIES = libworld.la
- libworld_la_SOURCES = $(top_srcdir)/src/libworld/world.c
- libworld_la_LDFLAGS = -no-undefined -version-info 0:0:0
-
- o Header files
-
- All header files are stored at "flashutils/inc", regardless
- if convenience library or not.
-
- If you want to export headers you have to specify this in the Makefile.am
- located at "flashutils/inc", e.g. (this should not be done
- for convenience libraries):
-
- nobase_include_HEADERS = world.h
-
-
-
-Appendix
-
-A.1. FAQ
-
- Q How to call configure to setup a cross-platform build?
- A $ ./configure --build=i686-pc-linux-gnu --host=ppc-linux \
- --prefix=/opt/.../ppcnf/crossroot/ \
- --exec-prefix=/opt/..../ppcnf/crossroot/usr