Building SD Card Image 18.1¶
- Table of contents
- Building SD Card Image 18.1
The MitySOM-5CSx family of modules are capable of booting, running from, and accessing an SD card, assuming the carrier board has an SD card interface.
Configuration requirements¶
- The
BSEL
pins must be set to0x5
(101b
) since the device uses 3.3V. Note:0x4
(100b
) is for a 1.8V device, so don't use it. - The
CSEL
pins must be strapped to match your clock configuration. - The
MSEL
pins must be strapped to match your desired FPGA configuration.
Prerequisites¶
The following files are required to be in the same directory:- dev_5cs.rbf
- mitysom-image-base-mitysom-c5.tar.gz
- preloader-mkpimage.bin
- u-boot.img
- ubootenv.bin
- make_sd.sh (SD card image generation script)
git archive --format=tar --remote=git://support.criticallink.com/home/git/meta-cl-socfpga.git rocko recipes-bsp/sd-card-scripts/files/make_sd.sh | tar -xO > make_sd.sh sudo chmod +x make_sd.sh
The following packages must be installed before the script can be run. Note: You must reboot after adding the user to the kvm group.sudo apt-get install --no-install-recommends -y libguestfs-tools qemu-utils linux-image-generic sudo chmod o+r,g+r /boot/vmlinuz-* sudo chmod 0666 /dev/kvm sudo usermod -a -G kvm $USER
SD card structure¶
The SD cards from Critical Link are setup with the following structure. Note: There should be three partitions on the SD card after the image is written. The image contains the MBR which stores the partition information.
Offset | Size | Partition | Filesystem |
---|---|---|---|
0x00400000 |
0x10000000 |
1 |
fat |
0x10400000 |
0x00100000 |
2 |
|
0x10500000 |
0x2FB00000 |
3 |
ext3 |
Building the SD card image¶
Build the SD card image. The SD card image will be sd_card.img.
Note: make_sd.sh must be run on a Linux machine or virtual machine, such as Ubuntu 18.04.
Note: Make sure we have permissions to access \boot\vmlinuz-*. If it has updated, you will need read privileges for the most recent file.
Note: This command will fail if a virtual machine is running and using KVM.
Note: This files may be named differently or located in different directories.
sudo chmod o+r,g+r /boot/vmlinuz-* ./make_sd.sh -d CycloneV -p preloader-mkpimage.bin -u u-boot.img -e ubootenv.bin -f dev_5cs.rbf mitysom-image-base-mitysom-c5.tar.gz
Updating the full SD card¶
Warning: Be sure you are writing to your SD card and not another drive on your system! You can confirm which device you want to write to (i.e. /dev/mmcblk0 or /dev/sdd) by running the df command and finding where your SD card reader is mounted.
Replace the mmcblkX shown in the command below with your device: (i.e. mmcblk0 or sdd)
sudo umount /dev/mmcblkX* sudo dd if=sd_card.img of=/dev/mmcblkX bs=4M status=progress sync
Updating parts of the SD card¶
Updating the U-Boot environment¶
The U-Boot environment is stored immediately after the MBR on the SD card and not on a partition. In order to write the U-Boot environment, you will need to write it raw to the partition using the dd command.
Warning: Be sure you are writing to your SD card and not another drive on your system! You can confirm which device you want to write to (i.e. /dev/mmcblk0 or /dev/sdd) by running the df command and finding where your SD card reader is mounted.
Replace the mmcblkX shown in the command below with your device: (i.e. mmcblk0 or sdd)
sudo umount /dev/mmcblkX* sudo dd if=ubootenv.bin of=/dev/mmcblkX bs=512 seek=1 sync
Updating the FPGA image¶
The Critical Link provided FPGA .rbf file is stored on the first partition of the SD card, which has the Windows FAT filesystem. This means that they can easily be updated from either a Windows machine or a Linux machine.
Replace the mmcblkXp1 shown in the command below with the first partition of your device: (i.e. mmcblk0p1 or sdd1)
sudo mount /dev/mmcblkXp1 /mnt sudo cp dev_5cs.rbf /mnt sync sudo umount /mnt
Updating the preloader¶
The preloader is stored on the second partition of the SD card, which does not have a filesystem. In order to write the preloader, you will need to write it raw to the partition using the dd command.
Warning: Be sure you are writing to your SD card and not another drive on your system! You can confirm which device you want to write to (i.e. /dev/mmcblk0 or /dev/sdd) by running the df command and finding where your SD card reader is mounted.
Replace the mmcblkXp2 shown in the command below with the second partition of your device: (i.e. mmcblk0p2 or sdd2)
sudo umount /dev/mmcblkXp2 sudo dd if=preloader-mkpimage.bin of=/dev/mmcblkXp2 bs=64k sync
Updating U-Boot¶
U-Boot is stored on the second partition of the SD card, which does not have a filesystem. In order to write the U-Boot image, you will need to write it raw to the partition using the dd command.
Warning: Be sure you are writing to your SD card and not another drive on your system! You can confirm which device you want to write to (i.e. /dev/mmcblk0 or /dev/sdd) by running the df command and finding where your SD card reader is mounted.
Replace the mmcblkXp2 shown in the command below with the second partition of your device: (i.e. mmcblk0p2 or sdd2)
sudo umount /dev/mmcblkXp2 sudo dd if=u-boot.img of=/dev/mmcblkXp2 bs=64k seek=4 sync
Updating the kernel¶
The Critical Link provided Linux root filesystem is stored on the third partition, which is formatted with the EXT3 filesystem. This partition can easily be updated from a Linux host.
Replace the mmcblkXp3 shown in the command below with the third partition of your device: (i.e. mmcblk0p3 or sdd3)
sudo mount /mmcblkXp3 /mnt sudo cp zImage /mnt/boot sync sudo umount /mnt
Updating the device tree¶
The Critical Link provided Linux root filesystem is stored on the third partition, which is formatted with the EXT3 filesystem. This partition can easily be updated from a Linux host.
Replace the mmcblkXp3 shown in the command below with the third partition of your device: (i.e. mmcblk0p3 or sdd3)
sudo mount /mmcblkXp3 /mnt sudo cp mitysom_5csx_devkit.dtb /mnt/boot sync sudo umount /mnt
Go to top