Jump to content

PiMX1 UbootSetup

From HW wiki
Revision as of 13:44, 25 August 2008 by Pisa (talk | contribs) (New page: == PiMX1 board U-boot Setup == == U-Boot setup == Environment variables setup and connection check. <pre> printenv setenv bootdelay 10 setenv ethaddr 80:81:82:83:84:85 setenv hostname ...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

PiMX1 board U-boot Setup

U-Boot setup

Environment variables setup and connection check.

printenv
setenv bootdelay 10

setenv ethaddr 80:81:82:83:84:85
setenv hostname mx1ant
setenv ipaddr 192.168.1.31
setenv serverip 192.168.1.4
setenv netmask 255.255.255.0
setenv gatewayip 192.168.1.4
setenv eval_bootfile 'setenv bootfile ${hostname}/uImage'
setenv eval_rootpath 'setenv rootpath ${serverip}:/tftpboot/${hostname}'
setenv ipautoconf none
setenv baudrate 19200

setenv kern_ramaddr 08001000
setenv kern_flashaddr 10040000

setenv nfs_bootargs 'setenv bootargs ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:eth0:${ipautoconf} rw nfsroot=${rootpath} ${kernelparams}'
setenv boot_tftp_nfs 'run eval_rootpath; run nfs_bootargs; tftp ${kern_ramaddr}; bootm ${kern_ramaddr}'
setenv boot_flash 'setenv bootargs console=ttySMX0,${baudrate}n8 root=31:4 rootfstype=jffs2; bootm 10040000'

setenv bootcmd 'dmpower 1; run eval_bootfile; run boot_tftp_nfs'

saveenv

ping ${serverip}

setenv kernelparams console=ttySMX0

bootd

Copy kernel to flash and boot it with NFS root

run eval_bootfile
tftp ${kern_ramaddr}
erase ${kern_flashaddr} +${filesize}
cp ${kern_ramaddr} ${kern_flashaddr} ${filesize}

run nfs_bootargs
bootm ${kern_flashaddr}

Test and flash new U-Boot version

tftp ${kern_ramaddr} ${hostname}/u-boot.bin
go ${fileaddr}

tftp ${kern_ramaddr} ${hostname}/u-boot.bin
protect off 10000000 +40000
erase 10000000 +40000
cp.b ${fileaddr} 10000000 ${filesize}
protect on 10000000 +40000

md 10000000 40

Boot with NFS root using TFTP protocol to load kernel

dmpower 0
dmpower 1
tftp 0x08001000 mx1ant/uImage
setenv bootargs "ip=192.168.1.31:192.168.1.4:192.168.1.4:255.255.255.0:mx1ant:eth0:none rw nfsroot=192.168.1.4:/tftpboot/mx1ant"
bootm 0x08001000

Make uRamdisk iamage from directory mx1ant-imgsrc with e2fs

size=`du -s mx1ant-imgsrc | cut  -f 1`
echo $size
size=$[$size+500]
dd if=/dev/zero of=ramdisk.image bs=1k count=$size
mke2fs ramdisk.image
mkdir tmp
mount ramdisk.image tmp -o loop
echo cp ..
cp -r -p mx1ant-imgsrc/* tmp/
umount tmp

echo gzip ..
rm ramdisk.image.gz
gzip -9 ramdisk.image

echo mkimage .. 
mkimage -T ramdisk -C gzip -n 'Ramdisk Image' -A arm -d ramdisk.image.gz uRamdisk

Boot with root in ramdisk using TFTP to load kernal and ramdisk image

step by step

dmpower 1
setenv kern_ramaddr 08001000
setenv ramdisk_ramaddr 09800000
setenv bootargs ramdisk_size=10240 root=1:0  console=ttySMX0
tftp ${kern_ramaddr} ${hostname}/uImage
tftp ${ramdisk_ramaddr} ${hostname}/uRamdisk
bootm ${kern_ramaddr} ${ramdisk_ramaddr}

automatic

setenv ramdisk_ramaddr 09800000
setenv kernelparams URT_SERVER=192.168.2.12
setenv img_bootargs 'setenv bootargs ramdisk_size=10240 root=1:0 console=ttySMX0 ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:eth0:${ipautoconf} ${kernelparams}'
setenv boot_tftp_img 'run img_bootargs; tftp ${kern_ramaddr};tftp ${ramdisk_ramaddr} ${hostname}/uRamdisk; bootm ${kern_ramaddr} ${ramdisk_ramaddr}'
setenv bootcmd 'dmpower 0; run eval_bootfile;dmpower 1; run boot_tftp_img'

Boot with NFS root loading kernel over NFS protocol.

dmpower 0
dmpower 1
setenv bootargs "ip=192.168.1.31:192.168.1.4:192.168.1.4:255.255.255.0:mx1ant:eth0:none rw nfsroot=192.168.1.4:/tftpboot/mx1ant"
nfs 0x08001000 192.168.1.4:/public/tmp/arm/uImage
bootm 0x08001000
setenv bootargs "root=/dev/ram0 initrd=0x08600000,10782660 ramdisk_size=12000"
setenv bootargs "console=ttySMX0,19200n8 root=31:4 rootfstype=jffs2"

U-boot automatic bootup sequence invocation after power on reset.

#define CONFIG_BOOTDELAY   -1

Automatic bootup code is not available, if default bootdelay is set to -1. Any other value is OK and code is compiled in and could be controlled by bootdelay environment variable.

#define CONFIG_BOOTDELAY   10

TFTP server startup on host side

/usr/sbin/in.tftpd -l -r blksize -s /tftpboot

Disable text cursor on console from shell

echo -e "\033[25l" > /dev/tty0

Do a same from C

#include <stdio.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>

main(){
       int fd;

       fd = open("/dev/tty0",O_WRONLY);
       if(fd<0){
               printf("No /dev/tty0 device\n");
       } else {
               ioctl(fd, KDSETMODE, KD_GRAPHICS);
       }
}

Disable Frame-Buffer blanking

echo -en "\033[9;0]" > /dev/tty0
echo 0 >/sys/devices/platform/imx-fb.0/graphics\:fb0/blank