This page describes the procedure for booting using PXE from U-Boot on Exynos5 board of Samsung.

Tool Chain to be used

The build has been done using the toolchain 'Sourcery CodeBench Lite 2011.09-69' version 4.6.1 and can be downloaded here

U-boot building

1. Get the u-boot code from git://

git clone git://

2. Revert the patch with commit id 442d55685e1e2310d546044a6519ae73e4ba348a for a known stable version.

git revert 442d55685e1e2310d546044a6519ae73e4ba348a

3. Apply the patch [V3] PXE: FDT: Add support for fdt in PXE and can be downloaded here (md5sum: 3e94111ebd53c71763a9c5610b4fc6ce).

git am U-Boot-v4-PXE-FDT-Add-support-for-fdt-in-PXE_mbox.patch

4. Add the following macros in the file include/configs/smdk5250.h

#define CONFIG_S5P_MMC

5. Replace CONFIG_SERIAL3 with CONFIG_SERIAL2 in the file include/configs/smdk5250.h, so that kernel and u-boot use the same uart port.

6. Execute the following command to build u-boot for smdk5250. The executables u-boot.bin and spl/smdk5250-spl.bin will be generated.

make smdk5250

7. A prebuilt smdk5250-spl.bin and u-boot.bin are available for download here (md5sum: 965764439cf9aa343be47e5d49af2dcc) and here (md5sum: 87d04b7aade4825f61de679da6e43612) respectively.

8. Write the images to the card.

sudo dd if=spl/smdk5250-spl.bin of=/dev/sdc bs=512 seek=17
sudo dd if=u-boot.bin of=/dev/sdc bs=512 seek=49

Kernel Building

1. Apply the following patch to disable eMMC due to a bug in u-boot. Patch is here

git am 0001-Disable-eMMC.patch

2. Make dtb

make exynos5250-smdk5250.dtb

3. Make uImage

make exynos5_server_defconfig
make uImage

4. Transfer uImage and exynos5250-smdk5250.dtb to tftp folder.

cp arch/arm/boot/exynos5250-smdk5250.dtb arch/arm/boot/uImage /tftpboot/

Usage of PXE on target

1. Enable tftp on the host PC where the kernel image is present. This link may be useful in configuring tftp.

2. Create a directory by name "pxelinux.cfg" in the folder shared for tftp. Eg: /tftpboot/pxelinux.cfg

3. Create a file by name 01-<Board MAC address> in the pxelinux.cfg directory. Eg /tftpboot/pxelinux.cfg/01-12-34-56-78-90-12

4. Fill the following details in the created file:

default pxe
prompt 0
timeout 3

label pxe
kernel uImage
fdt exynos5250-smdk5250.dtb
append root=/dev/mmcblk0p1 rw rootwait console=ttySAC2,115200n8 init --no-log

NOTE: We are assuming the kernel image "uImage" and the device tree blob "exynos5250-smdk5250.dtb" to be present in the foler /tftpboot/ . Change the appropriate names if required.

5. Now power on the board with the SD card. At the u-boot prompt, set the environmental variables "serverip", "ipconfig" and "ethaddr" as per the board configuration. Now set the following environmental variables as mentioned:

setenv pxefile_addr_r 0x50000000
setenv kernel_addr_r 0x40007000
setenv initrd_addr_r 0x41000000
setenv fdt_addr_r 0x40002000

6. Now type the following commands to transfer images from host PC to board and boot linux:

pxe get
pxe boot

Boards/Exynos5/Setup/PXEBoot (last modified 2012-09-18 05:36:27)