mirror of
https://xff.cz/git/u-boot/
synced 2025-12-28 06:27:11 +01:00
The Linux coding style guide (Documentation/process/coding-style.rst) clearly says: It's a **mistake** to use typedef for structures and pointers. Besides, using typedef for structures is annoying when you try to make headers self-contained. Let's say you have the following function declaration in a header: void foo(bd_t *bd); This is not self-contained since bd_t is not defined. To tell the compiler what 'bd_t' is, you need to include <asm/u-boot.h> #include <asm/u-boot.h> void foo(bd_t *bd); Then, the include direcective pulls in more bloat needlessly. If you use 'struct bd_info' instead, it is enough to put a forward declaration as follows: struct bd_info; void foo(struct bd_info *bd); Right, typedef'ing bd_t is a mistake. I used coccinelle to generate this commit. The semantic patch that makes this change is as follows: <smpl> @@ typedef bd_t; @@ -bd_t +struct bd_info </smpl> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Building SPL/U-Boot for xea board
=================================
Setup environment, configure and build, e.g. by:
$ make imx28_xea_defconfig
$ make -j4 u-boot.sb u-boot.img
Now you should see u-boot.sb and u-boot.img files in the build directory.
Booting
=======
The boot ROM loads SPL from SPI NOR flash into SRAM. SPL configures
DRAM and loads either a Linux kernel (falcon mode) or, if the rescue
pin is asserted, the main U-Boot. Both kernel and U-Boot reside in
eMMC boot partition 0. For redundancy, a copy of U-Boot is also
stored in SPI flash. If a valid kernel image is not found, U-Boot is
loaded from eMMC or, if this fails, SPI flash.
Boot area layout
----------------
SPI NOR
Offset Function File
------------------------------------------
0x00000000 SPL u-boot.sb
0x00010000 U-Boot u-boot.img
0x00080000 Environment
eMMC
Offset Function File
------------------------------------------
0x00000000 U-Boot u-boot.img
0x00080000 Devicetree imx28-bttc.dtb
0x00100000 Kernel uImage
Falcon mode
===========
In falcon mode, the default, SPL loads the kernel and devicetree
directly. For this to work, the stored devicetree must include
correct "memory" and "chosen" nodes as these are not updated by SPL
before booting the kernel.
Updating from U-Boot
====================
The default U-Boot environment includes command sequences to update
SPL, U-Boot, and kernel over TFTP. These are as follows:
- update_spl: writes u-boot.sb to SPI NOR
- update_uboot: writes u-boot.img to eMMC and SPI NOR
- update_kernel: writes kernel and devicetree to eMMC
They can be invoked at the U-Boot prompt using the "run" command,
e.g. "run update_spl" to update the SPL.
These update commands download the above-named files from the
${hostname} directory on the server provided by DHCP.