Difference between revisions of "BootStrap"
From ArmadeusWiki
Line 120: | Line 120: | ||
|| | || | ||
− | || | + | ||<pre class="host"> |
+ | sb (lrzsz) 0.12.21rc | ||
+ | config file <../../buildroot/output/host/usr/share/imx_usb_loader/imx_usb.conf> | ||
+ | vid=0x066f pid=0x3780 file_name=mx23_usb_work.conf | ||
+ | vid=0x15a2 pid=0x004f file_name=mx28_usb_work.conf | ||
+ | vid=0x15a2 pid=0x0052 file_name=mx50_usb_work.conf | ||
+ | vid=0x15a2 pid=0x0054 file_name=mx6_usb_work.conf | ||
+ | vid=0x15a2 pid=0x0061 file_name=mx6_usb_work.conf | ||
+ | vid=0x15a2 pid=0x0063 file_name=mx6_usb_work.conf | ||
+ | vid=0x15a2 pid=0x0041 file_name=mx51_usb_work.conf | ||
+ | vid=0x15a2 pid=0x004e file_name=mx53_usb_work.conf | ||
+ | vid=0x15a2 pid=0x006a file_name=vybrid_usb_work.conf | ||
+ | vid=0x066f pid=0x37ff file_name=linux_gadget.conf | ||
+ | config file <../../buildroot/output/host/usr/share/imx_usb_loader/mx6_usb_work.conf> | ||
+ | parse ../../buildroot/output/host/usr/share/imx_usb_loader/mx6_usb_work.conf | ||
+ | 15a2:0054(apf6qdl) bConfigurationValue =1 | ||
+ | Interface 0 claimed | ||
+ | HAB security state: development mode (0x56787856) | ||
+ | == work item | ||
+ | filename apf6-u-boot.spl | ||
+ | load_size 0 bytes | ||
+ | load_addr 0x00000000 | ||
+ | dcd 1 | ||
+ | clear_dcd 0 | ||
+ | plug 1 | ||
+ | jump_mode 2 | ||
+ | jump_addr 0x00000000 | ||
+ | == end work item | ||
+ | main dcd length 60 | ||
+ | sub dcd length 5c | ||
+ | |||
+ | loading binary file(apf6-u-boot.spl) to 00907400, skip=0, fsize=9c00 type=aa | ||
+ | |||
+ | <<<39936, 39936 bytes>>> | ||
+ | succeeded (status 0x88888888) | ||
+ | jumping to 0x00907400 | ||
+ | Sending: apf6-u-boot.img | ||
+ | Bytes Sent: 372864 BPS:9112 | ||
+ | Sending: | ||
+ | Ymodem sectors/kbytes sent: 0/ 0k | ||
+ | Transfer complete | ||
+ | Opening serial port /dev/ttyUSB0... | ||
+ | ts, 2 retries | ||
+ | Loaded 372844 bytes | ||
+ | |||
+ | |||
+ | U-Boot 2014.07 (Dec 11 2014 - 16:45:44) | ||
+ | |||
+ | CPU: Freescale i.MX6D rev1.2 at 792 MHz | ||
+ | Reset cause: POR | ||
+ | Board: APF6 | ||
+ | DRAM: 1 GiB | ||
+ | MMC: FSL_SDHC: 0, FSL_SDHC: 1 | ||
+ | WARNING: Make sure the PCIe #PERST line is connected! | ||
+ | In: serial | ||
+ | Out: serial | ||
+ | Err: serial | ||
+ | Net: FEC [PRIME] | ||
+ | Saving Environment to MMC... | ||
+ | Writing to MMC(0)... done | ||
+ | Hit any key to stop autoboot: 0 | ||
+ | BIOS> | ||
+ | env default -f -a | ||
+ | ## Resetting to default environment | ||
+ | BIOS> | ||
+ | loady | ||
+ | ## Ready for binary (ymodem) download to 0x12000000 at 115200 bps... | ||
+ | C | ||
+ | Sending: apf6-u-boot.spl | ||
+ | Bytes Sent: 39936 BPS:2382 | ||
+ | Sending: | ||
+ | Ymodem sectors/kbytes sent: 0/ 0k | ||
+ | Transfer complete | ||
+ | m - CRC mode, 2(SOH)/39(STX)/0(CAN) packets, 3 retries | ||
+ | ## Total Size = 0x00009c00 = 39936 Bytes | ||
+ | BIOS> | ||
+ | run flash_uboot_spl | ||
+ | switch to partitions #1, OK | ||
+ | mmc0(part 1) is current device | ||
+ | |||
+ | MMC write: dev # 0, block # 2, count 79 ... 79 blocks written: OK | ||
+ | Flashing of U-boot SPL succeed | ||
+ | BIOS> | ||
+ | loady | ||
+ | ## Ready for binary (ymodem) download to 0x12000000 at 115200 bps... | ||
+ | C | ||
+ | Sending: apf6-u-boot.img | ||
+ | Bytes Sent: 372864 BPS:8061 | ||
+ | Sending: | ||
+ | Ymodem sectors/kbytes sent: 0/ 0k | ||
+ | Transfer complete | ||
+ | m - CRC mode, 3(SOH)/364(STX)/0(CAN) packets, 3 retries | ||
+ | ## Total Size = 0x0005b06c = 372844 Bytes | ||
+ | BIOS> | ||
+ | run flash_uboot_img | ||
+ | switch to partitions #1, OK | ||
+ | mmc0(part 1) is current device | ||
+ | |||
+ | MMC write: dev # 0, block # 138, count 729 ... 729 blocks written: OK | ||
+ | Flashing of U-boot image succeed | ||
+ | BIOS> | ||
+ | |||
+ | --- Would you like to erase the environment variables ? y/N: y | ||
+ | run flash_reset_env | ||
+ | ## Resetting to default environment | ||
+ | Saving Environment to MMC... | ||
+ | Writing to redundant MMC(0)... done | ||
+ | Flash environment variables erased! | ||
+ | BIOS> | ||
+ | |||
+ | --- U-Boot successfully recovered ! | ||
+ | --- Now you can remove miniUSB OTG cable and put the jumper back on BOOT0 pin. Your board is running... | ||
+ | </pre> | ||
|---------------- | |---------------- | ||
|} | |} |
Revision as of 12:54, 23 December 2014
Instructions to use the Armadeus U-Boot recovery utility.
If you think you bricked your board by flashing a bad bootloader, don't worry: there is a solution to recover it, without a JTAG probe. Indeed i.MX processors have an internal "bootstrap" mode that allow them to communicate through RS-232 or USB just after a reset.
Introduction
- The uboot_recover tool is a Python piece of code that allows you to automatically install a new U-Boot from scratch or to recover it in case of failure. uboot_recover requires the python and pyserial packages to be installed on your PC:
$ sudo apt-get install python-serial python-usb
This utility communicates with the i.MX(L/27/28/51/6) processor while in bootstrap mode (See i.MX(L/27/28/51/6) Reference Manual for more informations).
- To enter the bootstrap mode, you have to put the bootstrap jumper and reset your Armadeus board:
Usage
- Quit all Kermit/Minicom/GTKTerm/Hyperterminal sessions connected to the board through Serial Port.
- Go inside the software/uboot_recover/ directory and launch (sudo usage is only required on APF28, APF51 and APF6):
$ cd software/uboot_recover/ $ sudo python apfXX_recover.py (XX depends on the version of your board (ie: 9328, 27, 28, 51 or 6))
- The tool will ask you to specify the serial port on which the board is connected. Under Linux please use /dev/ttySx or /dev/ttyUSBx and under Window$ use COMx.
- Then the size of the SDRAM has to be indicated. Default value is 16Mo for the APF9328 and 64Mo for the APF27. Not required on APF51 & APF6.
- The tool will then try to synchronize with the i.MX (on APF9328 only). When you see that message, reset your board:
Re-synchronizing... Please reset your board in bootstrap mode ! Please reset your board in bootstrap mode ! Please reset your board in bootstrap mode ! Please reset your board in bootstrap mode !
APF9328 | APF27 | APF51 | APF28 | APF6 |
---|---|---|---|---|
loading file ramprogrammer.bin. Please wait... |
run flash_uboot |
--- APF6 Bootstrap Tool --- Procedure to follow: 1] Be sure to: * have built the APF6 BSP (make apf6_defconfig; make), * have "sb" tool installed (On Ubuntu: sudo apt-get install lrzsz), * have launched this script as root (sudo). 2] Power off your board, close all serial terminal sessions, remove all USB cables 3] Take jumper off BOOT0 pin and put it on BOOT1 pin. 4] Power on your board 5] Connect a USB cable from your PC to the APF6Dev OTG miniUSB connector 6] Connect a USB cable from your PC to the APF6Dev console miniUSB connector --- Enter serial port number or device name to use for console (/dev/ttyUSB0 under Linux (default) or COMx under Window$): |
- Then you can specify whether the environment variables (IP, your special scripts...) have to be erased or not. If your board does not start anymore after a first uboot_recover, please respond 'y'.
- The following messages are then displayed:
APF9328 | APF27 | APF51 | APF28 | APF6 |
---|---|---|---|---|
loading file ramprogrammer.bin. Please wait... 284 octets Loading file u-boot.bin. Please wait... 150304 octets loading file flashprogrammer.bin. Please wait... 668 octets Flashing please wait... . uBoot successfully recovered ! |
run flash_uboot device 0 offset 0x0, size 0xa0000 nand_unlock: start: 00000000, length: 655360! NAND flash successfully unlocked NAND erase: device 0 offset 0x0, size 0xa0000 OK NAND write: device 0 offset 0x0, size 0xa0000 655360 bytes written: OK NAND flash successfully locked device 0 offset 0xa0000, size 0x7f60000 nand_unlock: start: 000a0000, length: 133562368! NAND flash successfully unlocked Flashing of uboot succeed BIOS>uBoot successfully recovered ! |
sb (lrzsz) 0.12.21rc config file <../../buildroot/output/host/usr/share/imx_usb_loader/imx_usb.conf> vid=0x066f pid=0x3780 file_name=mx23_usb_work.conf vid=0x15a2 pid=0x004f file_name=mx28_usb_work.conf vid=0x15a2 pid=0x0052 file_name=mx50_usb_work.conf vid=0x15a2 pid=0x0054 file_name=mx6_usb_work.conf vid=0x15a2 pid=0x0061 file_name=mx6_usb_work.conf vid=0x15a2 pid=0x0063 file_name=mx6_usb_work.conf vid=0x15a2 pid=0x0041 file_name=mx51_usb_work.conf vid=0x15a2 pid=0x004e file_name=mx53_usb_work.conf vid=0x15a2 pid=0x006a file_name=vybrid_usb_work.conf vid=0x066f pid=0x37ff file_name=linux_gadget.conf config file <../../buildroot/output/host/usr/share/imx_usb_loader/mx6_usb_work.conf> parse ../../buildroot/output/host/usr/share/imx_usb_loader/mx6_usb_work.conf 15a2:0054(apf6qdl) bConfigurationValue =1 Interface 0 claimed HAB security state: development mode (0x56787856) == work item filename apf6-u-boot.spl load_size 0 bytes load_addr 0x00000000 dcd 1 clear_dcd 0 plug 1 jump_mode 2 jump_addr 0x00000000 == end work item main dcd length 60 sub dcd length 5c loading binary file(apf6-u-boot.spl) to 00907400, skip=0, fsize=9c00 type=aa <<<39936, 39936 bytes>>> succeeded (status 0x88888888) jumping to 0x00907400 Sending: apf6-u-boot.img Bytes Sent: 372864 BPS:9112 Sending: Ymodem sectors/kbytes sent: 0/ 0k Transfer complete Opening serial port /dev/ttyUSB0... ts, 2 retries Loaded 372844 bytes U-Boot 2014.07 (Dec 11 2014 - 16:45:44) CPU: Freescale i.MX6D rev1.2 at 792 MHz Reset cause: POR Board: APF6 DRAM: 1 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 WARNING: Make sure the PCIe #PERST line is connected! In: serial Out: serial Err: serial Net: FEC [PRIME] Saving Environment to MMC... Writing to MMC(0)... done Hit any key to stop autoboot: 0 BIOS> env default -f -a ## Resetting to default environment BIOS> loady ## Ready for binary (ymodem) download to 0x12000000 at 115200 bps... C Sending: apf6-u-boot.spl Bytes Sent: 39936 BPS:2382 Sending: Ymodem sectors/kbytes sent: 0/ 0k Transfer complete m - CRC mode, 2(SOH)/39(STX)/0(CAN) packets, 3 retries ## Total Size = 0x00009c00 = 39936 Bytes BIOS> run flash_uboot_spl switch to partitions #1, OK mmc0(part 1) is current device MMC write: dev # 0, block # 2, count 79 ... 79 blocks written: OK Flashing of U-boot SPL succeed BIOS> loady ## Ready for binary (ymodem) download to 0x12000000 at 115200 bps... C Sending: apf6-u-boot.img Bytes Sent: 372864 BPS:8061 Sending: Ymodem sectors/kbytes sent: 0/ 0k Transfer complete m - CRC mode, 3(SOH)/364(STX)/0(CAN) packets, 3 retries ## Total Size = 0x0005b06c = 372844 Bytes BIOS> run flash_uboot_img switch to partitions #1, OK mmc0(part 1) is current device MMC write: dev # 0, block # 138, count 729 ... 729 blocks written: OK Flashing of U-boot image succeed BIOS> --- Would you like to erase the environment variables ? y/N: y run flash_reset_env ## Resetting to default environment Saving Environment to MMC... Writing to redundant MMC(0)... done Flash environment variables erased! BIOS> --- U-Boot successfully recovered ! --- Now you can remove miniUSB OTG cable and put the jumper back on BOOT0 pin. Your board is running... |
Note: If all went fine, don't forget to remove the bootstrap jumper if you want to restart the board in its normal boot state |