First upload the U-Boot firmware using Network (Transferring file over network) or Serial (Transferring file over serial)
This is a common serial transfer output:
=> loady ## Ready for binary (ymodem) download to 0xa0800000 at 115200 bps... CCmode, 1359(SOH)/0(STX)/0(CAN) packets, 9 retries ## Total Size = 0x0002a388 = 172936 Bytes
Unprotect the bootloader flash area:
protect off C0000000 C003FFFF
Erase the flash blocks:
erase C0000000 C003FFFF
Copy from RAM to Flash: If firmware has been thansfered over serial:
cp.b A0800000 C0000000 2a388
If firmware has been transfered over tftp:
cp.b 100000 C0000000 2a388
You can use a BDI2000/3000 to write to the S71WS256 pSRAM:
[FLASH] CHIPTYPE S29M32X16 CHIPSIZE 0x2000000 BUSWIDTH 16 FILE /home/lsantos/work/i.mx27/u-boot/u-boot-v2/uboot.bin ; change to you path FORMAT BIN 0xC0000000 ERASE 0xC0000000 ERASE 0xC0008000 ERASE 0xC0018000 ERASE 0xC0010000 ERASE 0xC0020000
Don't forget to edit the [HOST] section to your machine's IP address.
- CONFIG: loading configuration file passed - CONFIG: loading register definition passed - TARGET: processing reset request - TARGET: BDI asserts TRST and RESET - TARGET: BDI removes TRST - TARGET: Bypass check 0x00000001 => 0x00000002 - TARGET: JTAG exists check passed - Core#0: ID code is 0x07926121 - TARGET: All ICEBreaker access checks passed - TARGET: BDI removes RESET - TARGET: BDI waits for RESET inactive - TARGET: resetting target passed - TARGET: processing target startup .... - TARGET: processing target startup passed
ADS>erase Erasing flash at 0xc0000000 Erasing flash at 0xc0008000 Erasing flash at 0xc0018000 Erasing flash at 0xc0010000 Erasing flash at 0xc0020000 Erasing flash passed
ADS>prog Programming /home/lsantos/work/i.mx27/u-boot/u-boot-v2/uboot.bin , please wait .... Programming flash passed
ADS>verify Verifying /home/lsantos/work/i.mx27/u-boot/u-boot-v2/uboot.bin , please wait .... Verifying target memory passed
Now you can unplug the BDI and reset the board
U-Boot 2.0.0-rc9-00136-gbf725a2-dirty (Jun 17 2009 - 15:45:23) Board: Freescale i.MX27 ADS cfi_probe: cfi_flash base: 0xc0000000 size: 0x02000000 chip id: [2,882,1,01d] mpll: 265999329 Hz spll: 239999725 Hz arm: 177332886 Hz perclk1: 8866644 Hz perclk2: 17733288 Hz perclk3: 44333221 Hz perclk4: 17733288 Hz clkin26: 26000000 Hz ahb: 44333221 Hz ipg: 22166610 Hz Malloc space: 0xa7b00000 -> 0xa7f00000 (size 4 MB) Stack space : 0xa7af8000 -> 0xa7b00000 (size 32 kB) envfs: wrong magic on /dev/env0 no valid environment found on /dev/env0. Using default environment running /env/bin/init... Hit any key to stop autoboot: 2 type update_kernel [<imagename>] to update kernel into flash type udate_root [<imagename>] to update rootfs into flash uboot:/
Of course, this setup works with Redboot, just change the FILE entry at the [FLASH] section or use the prog command:
ADS>prog 0xc0000000 /home/lsantos/work/i.mx27/redboot/build/install/bin/redboot.bin BIN Programming /home/lsantos/work/i.mx27/redboot/build/install/bin/redboot.bin , please wait .... Programming flash passed ADS>verify Verifying /home/lsantos/work/i.mx27/redboot/build/install/bin/redboot.bin , please wait .... Verifying target memory passed
Rebooting
++... Read from 0x07ee0000-0x07f00000 at 0xc1fe0000: . ... Read from 0x07ed3000-0x07ed4000 at 0xc1fff000: . **Warning** FLASH configuration checksum error or invalid key Use 'fconfig -i' to [re]initialize database PMIC ID: 0x0000009b [Rev: 3.3] Ethernet FEC MAC address: is not set Board Type: ADS Clock input: 26 MHz Booting from [NOR flash] PHY ID 22 @ 1 FEC: [ HALF_DUPLEX ] [ disconnected ] [ 10M bps ]: Ethernet eth0: MAC address 00:04:9f:00:af:7a Can't get BOOTP info for device! RedBoot(tm) bootstrap and debug environment [ROMRAM] Non-certified release, version FSL 200749 - built 19:37:28, Jun 17 2009 Platform: MX27 ADS/EVB (Freescale i.MX27 based) PASS 2.1 [x32 SDR] Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. RAM: 0x00000000-0x07f00000, [0x00025260-0x07ed1000] available FLASH: 0xc0000000 - 0xc2000000, 256 blocks of 0x00020000 bytes each. RedBoot>