Creating a bootable SD card requires an SD card reader operational under Linux to format and access the Linux partition of the card. If you do not have SD card access under Linux then copying the bootloader and mounting the root filesystem on SD/MMC card will not be possible.
Pre-built images are available on PHYTEC's Artifactory. If you have built your own images, then the images are located in: $YOCTO_DIR/build/tmp/deploy/images/<YOCTO_MACHINE>/
Note that the names of the images differ between releases. YOCTO_IMAGE in the instructions below refers to the Yocto image name that was used to build the image, and YOCTO_MACHINE refers to the machine that was selected to build the image. Refer to the "Built Images" section of the Quickstart pertaining to the specific release you are using for clarification on image names.
Flashing a Complete Image:
- Determine the SD card device name
The SD card device name is of the form /dev/sd[b|c|d|e]. Run the following without and with the SD card connected:
The device that appeared on the call to ls with the SD card but not the call without is the SD card device.
Unmount all partitions of the SD card, using the SD card device name from Step 1:
Load the SD card image onto the SD card from the linux command line. This will format the appropriate partitions, as well as add U-Boot, the kernel image, and the root filesystem to the card.
From the directory that contains the '.sdcard' file, execute the following command:
sudo dd if=<YOCTO_IMAGE>-<YOCTO_MACHINE>.sdcard of=/dev/sd[b|c|d|e] bs=1MB && syncBASH
From the directory that contains the '.wiz.bz2' file, execute the following command:
sudo bunzip2 -dkc <image_name>.wic.bz2 | of=/dev/sd[b|c|d|e] bs=1MB && syncBASH
Updating Individual Parts of an Image:
Once the SD card has been formatted, you can update the kernel, root filesystem, and u-boot individually as well:
If modifying the kernel, remove the existing zImage and device tree binary files:
rm /media/<user>/<boot partition>/zImage rm /media/<user>/<boot partition>/oftreeBASH
Load the new Linux kernel and device tree binary to the SD Card. By default u-boot loads the file named "oftree" as the DTB, so make sure to rename the device tree that you intend to use:
cp zImage /media/<user>/<boot partition>/ && sync cp zImage-<YOCTO_MACHINE>.dtb /media/<user>/<boot partition>/oftree && syncBASH
If you wish to change the dtb name that is loaded from "oftree" to a specific dtb name, follow these steps to modify the U-Boot environment:
a. Power on the board and press any key to stop autoboot and enter U-Boot:
b. Type the following commands:
setenv fdt_file <dtb name> saveenv resetCODE
If modifying the root filesystem, remove the existing:
sudo rm -rf /media/<user>/<rootfs partition>/*BASH
Load the new filesystem to the SD Card:
sudo tar -jxf <YOCTO_IMAGE>-<YOCTO_MACHINE>.tar.bz2 -C /media/<user>/<rootfs partition>/; syncBASH
Flash u-boot to the SD card:
sudo dd if=u-boot.imx of=/dev/sd[b|c|d|e] bs=512 seek=2 conv=fsyncBASH