Documentation: User manual, "barebox" section
Subsystems (2)
PATCH 1/1 Documentation: User manual, "barebox" section
Various grammar/font fixes to that section, including adding an additional section describing how to properly do "out of tree" configuration and building.
---
Documentation/user/barebox.rst +66 -22
@@ -13,8 +13,8 @@ All releases can be downloaded from: http://www.barebox.org/download/ -Development versions of barebox are accessible via git. A local repository clone -can be created using git:: +Development versions of barebox are accessible via Git. A local repository clone +can be checked out as follows:: $ git clone git://git.pengutronix.de/git/barebox.git Cloning into 'barebox'...
@@ -26,8 +26,9 @@ can be created using git:: Checking connectivity... done. Checking out files: 100% (5651/5651), done. -After this, make sure to check out needed branch. If you want to -develop for barebox, it's better to check the the next branch:: +After this, make sure to check out the appropriate branch. If you want to +develop for barebox, it's best to check out the ``next`` branch rather than +the ``master`` branch:: $ git checkout -b next origin/remotes/next
@@ -39,11 +40,11 @@ http://git.pengutronix.de/?p=barebox.git. Configuration ------------- -barebox uses Kconfig from the Linux Kernel as a configuration tool. -All configuration is accessible via the 'make' command. Before running -it you have to specify your architecture with the ARCH environment -variable and the cross compiler with the CROSS_COMPILE environment -variable. ARCH has to be one of: +barebox uses Kconfig from the Linux kernel as a configuration tool, +where all configuration is done via the ``make`` command. Before running +it you have to specify your architecture with the ``ARCH`` environment +variable and the cross compiler with the ``CROSS_COMPILE`` environment +variable. ``ARCH`` has to be one of: * arm * blackfin
@@ -54,17 +55,17 @@ variable. ARCH has to be one of: * sandbox * x86 -CROSS_COMPILE should be the prefix of your cross compiler. This can +``CROSS_COMPILE`` should be the prefix of your cross compiler. This can either contain the full path or, if the cross compiler binary is in your $PATH, just the prefix. -Either export ARCH and CROSS_COMPILE once before working on barebox:: +Either export ``ARCH`` and ``CROSS_COMPILE`` once before working on barebox:: export ARCH=arm export CROSS_COMPILE=/path/to/arm-cortexa8-linux-gnueabihf- make ... -or add them before each 'make' command:: +or add them to each invocation of the ``make`` command:: ARCH=arm CROSS_COMPILE=/path/to/arm-cortexa8-linux-gnueabihf- make ...
@@ -73,11 +74,23 @@ For readability, ARCH/CROSS_COMPILE are skipped from the following examples. Configuring for a board ^^^^^^^^^^^^^^^^^^^^^^^ -All configuration files can be found under arch/$ARCH/configs/. For an -overview type:: +All configuration files can be found under the ``arch/${ARCH}/configs/`` +directory. For an overview of possible Make targets for your architecture, +type:: make help +Your output from ``make help`` will be based on the architecture you've +selected via the ``ARCH`` variable. So if, for example, you had selected:: + + export ARCH=mips + +your help output would represent all of the generic (architecture-independent) +targets, followed by the MIPS-specific ones:: + + make [ARCH=mips] help + ... + ... list of generic targets ... ... Architecture specific targets (mips): No architecture specific help defined for mips
@@ -100,20 +113,51 @@ with the most popular being ``menuconfig``:: make menuconfig -barebox used the same configuration system as Linux, so you can use -all the things you know, e.g. ``make xconfig``, ``make allyesconfig`` etc. +barebox uses the same (Kbuild) configuration system as Linux, so you can use +all the kernel config targets you already know, e.g. ``make xconfig``, +``make allyesconfig`` etc. + +Configuring and compiling "out-of-tree" +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Before going any further, it's worth knowing how you can do all your barebox +configuration and compilation "out of tree"; that is, how you can keep your +source directory pristine and have all output from the various ``make`` commands +generated in a separate build directory. + +Once you check out your barebox source directory, and before you do any +configuration or building, set the environment variable ``KBUILD_OUTPUT`` +to point to your intended output directory, as in:: + + export KBUILD_OUTPUT=.../my_barebox_build_directory + +From that point on, all of the ``make`` commands you run in your source +directory will generate their output in your specified output directory. +Not only does this keep your source directory clean, but it allows several +developers to share the same source directory while doing all their own +configuration and building in their own individual build directories. + +.. note:: + + To do out-of-tree builds, your source tree must be absolutely clean + of all generated artifacts from previous configurations and builds. + In other words, if you had earlier done any configuration or building + in that source tree that dumped its results into the same source tree + directory, you need to do the equivalent of a ``make distclean`` before + using that source directory for any out-of-tree builds. Compilation ----------- -After barebox has been :ref:`configured <configuration>` it can be compiled:: +After barebox has been :ref:`configured <configuration>` it can be compiled +simply with:: make The resulting binary varies depending on the board barebox is compiled for. -Without :ref:`multi_image` support the 'barebox-flash-image' link will point +Without :ref:`multi_image` support the ``barebox-flash-image`` link will point to the binary for flashing/uploading to the board. With :ref:`multi_image` support -the compilation process will finish with a list of images built under images/:: +the compilation process will finish with a list of images built under ``images/``:: images built: barebox-freescale-imx51-babbage.img
@@ -142,7 +186,7 @@ with U-Boot's 'go' command:: With barebox already running on your board, this can be used to chainload another barebox:: - bootm /mntf/tftp/barebox.bin + bootm /mnt/tftp/barebox.bin At least ``barebox.bin`` (with :ref:`pbl` support enabled ``arch/$ARCH/pbl/zbarebox.bin``) should be startable second stage. The flash binary (``barebox-flash-image``) may or may not
@@ -177,9 +221,9 @@ This is a typical barebox startup log:: barebox@Genesi Efika MX Smartbook:/ Without intervention, barebox will continue booting after 3 seconds. If interrupted -by pressing a key, you will find yourself on the :ref:`shell <hush>`. +by pressing a key, you will find yourself at the :ref:`shell <hush>`. -On the shell type ``help`` for a list of supported commands. ``help <command>`` shows +At the shell type ``help`` for a list of supported commands. ``help <command>`` shows the usage for a particular command. barebox has tab completion which will complete your command. Arguments to commands are also completed depending on the command. If a command expects a file argument only files will be offered as completion. Other
Makefile +1 -1
@@ -1076,7 +1076,7 @@ help: @echo ' enough build support to build external modules' @echo ' mrproper - Remove all generated files + config + various backup files' @echo ' distclean - mrproper + remove editor backup and patch files' - @echo ' docs - build documentation + @echo ' docs - build documentation' @echo '' @echo 'Configuration targets:' @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
Signature · 12 lines
========================================================================
Robert P. J. Day Ottawa, Ontario, CANADA
http://crashcourse.ca
Twitter: http://twitter.com/rpjday
LinkedIn: http://ca.linkedin.com/in/rpjday
========================================================================
_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/bareboxQuoted 6 lines · Robert P. J. Day
Various grammar/font fixes to that section, including adding an additional section describing how to properly do "out of tree" configuration and building.
Signed-off-by Robert P. J. Day <[email protected]>
Thanks for documenting the out of tree build. I always forget how to do this. Finally I have a place to look at ;)
BTW buildinf the documentation out of tree is currently broken. This is because we autogenerate the command files:
@$(srctree)/Documentation/gen_commands.py $(srctree) $(srctree)/Documentation/command
We should generate them in $(objtree), but then we the autogenerated command files in another place than the rest of the documentation. sphinx expects a single directory though.
I have no good idea how to solve this, other than copying all doc files to $(objtree)/Documentation before calling sphinxs-build.
Sascha
Signature · 9 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Quoted 14 lines · Sascha Hauer
Quoted 6 lines · Robert P. J. Day
Various grammar/font fixes to that section, including adding an additional section describing how to properly do "out of tree" configuration and building.
Signed-off-by Robert P. J. Day <[email protected]>Thanks for documenting the out of tree build. I always forget how to do this. Finally I have a place to look at ;)
BTW buildinf the documentation out of tree is currently broken. This is because we autogenerate the command files:
Quoted 8 lines
@$(srctree)/Documentation/gen_commands.py $(srctree) $(srctree)/Documentation/commandWe should generate them in $(objtree), but then we the autogenerated command files in another place than the rest of the documentation. sphinx expects a single directory though.
I have no good idea how to solve this, other than copying all doc files to $(objtree)/Documentation before calling sphinxs-build.
hmmmmmm ... i seem to be able to generate the docs out of tree just
fine. i'll check again and make sure. all i'm doing is setting:
$ export KBUILD_OUTPUT=<dest dir>
and running
$ make docs
and the sphinx-based documentation appears to be created just fine in that output/build directory. am i misunderstanding something here?
rday
Signature · 12 lines
========================================================================
Robert P. J. Day Ottawa, Ontario, CANADA
http://crashcourse.ca
Twitter: http://twitter.com/rpjday
LinkedIn: http://ca.linkedin.com/in/rpjday
========================================================================
_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/bareboxQuoted 16 lines · Sascha Hauer
Quoted 6 lines · Robert P. J. Day
Various grammar/font fixes to that section, including adding an additional section describing how to properly do "out of tree" configuration and building.
Signed-off-by Robert P. J. Day <[email protected]>Thanks for documenting the out of tree build. I always forget how to do this. Finally I have a place to look at ;)
BTW buildinf the documentation out of tree is currently broken. This is because we autogenerate the command files:
@$(srctree)/Documentation/gen_commands.py $(srctree) $(srctree)/Documentation/command
Quoted 7 lines
We should generate them in $(objtree), but then we the autogenerated command files in another place than the rest of the documentation. sphinx expects a single directory though.
I have no good idea how to solve this, other than copying all doc files to $(objtree)/Documentation before calling sphinxs-build. Sascha
ah, i see what you mean ... i was running
$ git status -u
to get a list of generated files in the source tree, but didn't notice that .rst files were set as being ignored, so i can see them now with:
$ git status -u --ignored
rday
Signature · 12 lines
========================================================================
Robert P. J. Day Ottawa, Ontario, CANADA
http://crashcourse.ca
Twitter: http://twitter.com/rpjday
LinkedIn: http://ca.linkedin.com/in/rpjday
========================================================================
_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox