i.MX53 SODIMM PC Recovery
Description
The recovery procedure consists of following steps:
- Loading bootloader binary over JTAG interface using OpenOCD Programming feature
- Running bootloader from RAM
- Flashing bootloader over Ethernet
- Erasing bootloader environment
- Flashing kernel over Ethernet
- Flashing root filesystem over Ethernet
- Resetting module
Requirements:
- JTAG adapter with OpenOCD software
- Serial adapter with terminal application
- Running TFTP server
- Running DHCP server (optional)
Loading bootloader
Follow these steps to load bootloader over serial connection.
Make sure to load the correct bootloader binary over JTAG. It is also a good practice to erase Barebox environment or load the default environment.
Updating firmware
This article describes updating Barebox, kernel and filesystems in details. The following sections provide these informations in more compact form.
Updating bootloader
Download the latest Barebox image and store it into TFTP directory:
mkdir -pv ~/tftp/vmx53 cd ~/tftp/vmx53/ release=20151129 wget http://downloads.voipac.com/files/i.MX53_SODIMM_PC-Development_Kit/module/software/barebox/binaries/barebox-2014.03.0_vmx53_${release}.img
Update Barebox:
#release=20150308 release=20151129 dhcp eth0.serverip=192.168.0.1 update barebox vmx53/barebox-2014.03.0_vmx53_${release}.img erase /dev/nand0.environment reset
Updating Linux kernel
Download the latest Linux kernel image and store it into TFTP directory:
cd ~/tftp/vmx53/ release=20151129 wget http://downloads.voipac.com/files/i.MX53_SODIMM_PC-Development_Kit/module/software/linux/binaries/zImage-3.12.13_vmx53_${release}.bin
Update the kernel:
#release=20150308 release=20151129 dhcp eth0.serverip=192.168.0.1 update kernel vmx53/zImage-3.12.13_vmx53_${release}.bin
Updating filesystem in UBIFS format
Download the latest filesystem image and store it into TFTP directory:
cd ~/tftp/vmx53/ release=20140907 wget http://downloads.voipac.com/files/i.MX53_SODIMM_PC-Development_Kit/module/software/filesystem/binaries/rootfs-1.22-ubifs-m2k-e128k-512M_vmx53_${release}.bin wget http://downloads.voipac.com/files/i.MX53_SODIMM_PC-Development_Kit/module/software/filesystem/binaries/rootfs-1.22-ubifs-m4k-e1M-4G_vmx53_${release}.bin wget http://downloads.voipac.com/files/i.MX53_SODIMM_PC-Development_Kit/module/software/filesystem/binaries/rootfs-1.22-ubifs-m4k-e512k-1G_vmx53_${release}.bin
Update the filesystem:
release=20140907 dhcp eth0.serverip=192.168.0.1 update rootfs vmx53/rootfs-1.22-ubifs_vmx53_20140817.bin # Flash size: 128MB, 256MB, 512MB update rootfs vmx53/rootfs-1.22-ubifs-m2k-e128k-512M_vmx53_${release}.bin # Flash size: 1024MB update rootfs vmx53/rootfs-1.22-ubifs-m4k-e512k-1G_vmx53_${release}.bin # Flash size: 4094MB update rootfs vmx53/rootfs-1.22-ubifs-m4k-e1M-4G_vmx53_${release}.bin
Updating filesystem in UBI format
release=20140907 dhcp eth0.serverip=192.168.0.1 # Flash size: 128MB, 256MB, 512MB tftp vmx53/rootfs-1.22-ubi-m2k-e128k-512M_vmx53_${release}.bin /dev/nand0.rootfs.bb # Flash size: 1024MB tftp vmx53/rootfs-1.22-ubi-m4k-e512k-1G_vmx53_${release}.bin /dev/nand0.rootfs.bb # Flash size: 4094MB tftp vmx53/rootfs-1.22-ubi-m4k-e1M-4G_vmx53_${release}.bin /dev/nand0.rootfs.bb
Configuration
Configuring module version
By modifying env/config file the board configuration can be chosen:
barebox@Voipac VMX53:/ edit /env/config ... # Module Configuration (Device Tree mode) # BASIC=557, PRO=668, MAX=779 #global.vmxmodel=557 #global.vmxmodel=668 global.vmxmodel=779 # Nand Boot Mode global.boot.default=nand-dtb-ubi ... barebox@Voipac VMX53:/ saveenv barebox@Voipac VMX53:/ reset
Loading custom device tree file
Upload a custom DTB file into Barebox environment:
dhcp eth0.serverip=192.168.0.1 tftp vmx53/imx53-vmx53-999.dtb /env/dtb/3.12/imx53-vmx53-999.dtb saveenv
Edit /env/config and add custom "global.vmxmodel" settings:
barebox@Voipac VMX53:/ edit /env/config # BASIC=557, PRO=668, MAX=779 #global.vmxmodel=557 #global.vmxmodel=668 global.vmxmodel=999 barebox@Voipac VMX53:/ saveenv
Note: The script responsible for loading correct DTB file is stored in /env/init/dtb.