Home | History | Annotate | only in /external/u-boot/board/Barix/ipam390
Up to higher level directory
NameDateSize
ipam390-ais-uart.cfg22-Oct-20206.9K
ipam390.c22-Oct-20207.2K
Kconfig22-Oct-2020141
MAINTAINERS22-Oct-2020141
Makefile22-Oct-2020201
README.ipam39022-Oct-20208.1K
u-boot-spl-ipam390.lds22-Oct-2020958

README.ipam390

      1 Summary
      2 =======
      3 The README is for the boot procedure on the ipam390 board
      4 
      5 In the context of U-Boot, the board is booted in three stages. The initial
      6 bootloader which executes upon reset is the ROM Boot Loader (RBL) and sits
      7 in the internal ROM. The RBL initializes the internal memory and then
      8 depending on the exact board and pin configurations will initialize another
      9 controller (such as NAND) to continue the boot process by loading
     10 the secondary program loader (SPL). The SPL will initialize the system
     11 further (some clocks, SDRAM). As on this board is used the falcon boot
     12 mode, now 2 ways are possible depending on the GPIO 7_14 input pin,
     13 connected with the "soft reset switch"
     14 
     15 If this pin is logical 1 (high level):
     16 spl code starts the kernel image without delay
     17 
     18 If this pin is logical 0 (low level):
     19 spl code starts the u-boot image
     20 
     21 AIS is an image format defined by TI for the images that are to be loaded
     22 to memory by the RBL. The image is divided into a series of sections and
     23 the image's entry point is specified. Each section comes with meta data
     24 like the target address the section is to be copied to and the size of the
     25 section, which is used by the RBL to load the image. At the end of the
     26 image the RBL jumps to the image entry point.  The AIS format allows for
     27 other things such as programming the clocks and SDRAM if the header is
     28 programmed for it.  We do not take advantage of this and instead use SPL as
     29 it allows for additional flexibility (run-time detect of board revision,
     30 loading the next image from a different media, etc).
     31 
     32 Compilation
     33 ===========
     34 run "tools/buildman/buildman -k ipam390" in the u-boot source tree.
     35 Once this build completes you will have a ../current/ipam390/u-boot.ais file
     36 that needs to be written to the nand flash.
     37 
     38 Flashing the images to NAND
     39 ==========================
     40 The AIS image can be written to NAND flash using the following commands.
     41 Assuming that the network is configured and enabled and the u-boot.ais file
     42 is tftp'able.
     43 
     44 U-Boot > print upd_uboot
     45 upd_uboot=tftp c0000000 ${u-boot};nand erase.part u-boot;nand write c0000000 20000 ${filesize}
     46 U-Boot >
     47 U-Boot > run upd_uboot
     48 Using DaVinci-EMAC device
     49 TFTP from server 192.168.1.1; our IP address is 192.168.20.71
     50 Filename '/tftpboot/ipam390/u-boot.ais'.
     51 Load address: 0xc0000000
     52 Loading: ##################################
     53 	 1.5 MiB/s
     54 done
     55 Bytes transferred = 493716 (78894 hex)
     56 
     57 NAND erase.part: device 0 offset 0x20000, size 0x160000
     58 Erasing at 0x160000 -- 100% complete.
     59 OK
     60 
     61 NAND write: device 0 offset 0x20000, size 0x78894
     62  493716 bytes written: OK
     63 U-Boot >
     64 
     65 Recovery
     66 ========
     67 
     68 In the case of a "bricked" board, you need to use the TI tools found
     69 here[1] to create an uboot-uart-ais.bin file
     70 
     71 - cd to the u-boot source tree
     72 
     73 - compile the u-boot for the ipam390 board:
     74 $ tools/buildman/buildman -k ipam390
     75 
     76   -> Now we shall have u-boot.bin
     77 
     78 - Create u-boot-uart-ais.bin
     79 $ mono HexAIS_OMAP-L138.exe -entrypoint 0xC1080000 -ini ipam390-ais-uart.cfg \
     80 	-o ../current/ipam390/uboot-uart-ais.bin ./u-boot.bin@0xC1080000;
     81 
     82 Note: The ipam390-ais-uart.cfg is found in the board directory
     83 for the ipam390 board, u-boot:/board/Barix/ipam390/ipam390-ais-uart.cfg
     84 
     85 - We can now run bootloader on IPAM390 via UART using the command below:
     86 
     87 $ mono ./slh_OMAP-L138.exe -waitForDevice -v -p /dev/tty.UC-232AC uboot-uart-ais.bin
     88 NOTE: Do not cancel the command execution! The command takes 20+ seconds
     89 to upload u-boot over serial and run it!
     90 Outcome:
     91 Waiting for the OMAP-L138...
     92 (AIS Parse): Read magic word 0x41504954.
     93 (AIS Parse): Waiting for BOOTME... (power on or reset target now)
     94 (AIS Parse): BOOTME received!
     95 (AIS Parse): Performing Start-Word Sync...
     96 (AIS Parse): Performing Ping Opcode Sync...
     97 (AIS Parse): Processing command 0: 0x5853590D.
     98 (AIS Parse): Performing Opcode Sync...
     99 (AIS Parse): Executing function...
    100 (AIS Parse): Processing command 1: 0x5853590D.
    101 (AIS Parse): Performing Opcode Sync...
    102 (AIS Parse): Executing function...
    103 (AIS Parse): Processing command 2: 0x5853590D.
    104 (AIS Parse): Performing Opcode Sync...
    105 (AIS Parse): Executing function...
    106 (AIS Parse): Processing command 3: 0x5853590D.
    107 (AIS Parse): Performing Opcode Sync...
    108 (AIS Parse): Executing function...
    109 (AIS Parse): Processing command 4: 0x5853590D.
    110 (AIS Parse): Performing Opcode Sync...
    111 (AIS Parse): Executing function...
    112 (AIS Parse): Processing command 5: 0x58535901.
    113 (AIS Parse): Performing Opcode Sync...
    114 (AIS Parse): Loading section...
    115 (AIS Parse): Loaded 326516-Byte section to address 0xC1080000.
    116 (AIS Parse): Processing command 6: 0x58535906.
    117 (AIS Parse): Performing Opcode Sync...
    118 (AIS Parse): Performing jump and close...
    119 (AIS Parse): AIS complete. Jump to address 0xC1080000.
    120 (AIS Parse): Waiting for DONE...
    121 (AIS Parse): Boot completed successfully.
    122 
    123 Operation completed successfully.
    124 
    125 Falcon Bootmode (boot linux without booting U-Boot)
    126 ===================================================
    127 
    128 The Falcon Mode extends this way allowing to start the Linux kernel directly
    129 from SPL. A new command is added to U-Boot to prepare the parameters that SPL
    130 must pass to the kernel, using ATAGS or Device Tree.
    131 
    132 In normal mode, these parameters are generated each time before
    133 loading the kernel, passing to Linux the address in memory where
    134 the parameters can be read.
    135 With Falcon Mode, this snapshot can be saved into persistent storage and SPL is
    136 informed to load it before running the kernel.
    137 
    138 To boot the kernel, these steps under a Falcon-aware U-Boot are required:
    139 
    140 1. Boot the board into U-Boot.
    141 Use the "spl export" command to generate the kernel parameters area or the DT.
    142 U-Boot runs as when it boots the kernel, but stops before passing the control
    143 to the kernel.
    144 
    145 Here the command sequence for the ipam390 board:
    146 - load the linux kernel image into ram:
    147 
    148 U-Boot > nand read c0100000 2 200000 400000
    149 
    150 NAND read: device 0 offset 0x200000, size 0x400000
    151  4194304 bytes read: OK
    152 
    153 - generate the bootparms image:
    154 
    155 U-Boot > spl export atags c0100000
    156 ## Booting kernel from Legacy Image at c0100000 ...
    157    Image Name:   Linux-3.5.1
    158    Image Type:   ARM Linux Kernel Image (uncompressed)
    159    Data Size:    2504280 Bytes = 2.4 MiB
    160    Load Address: c0008000
    161    Entry Point:  c0008000
    162    Verifying Checksum ... OK
    163    Loading Kernel Image ... OK
    164 subcommand not supported
    165 subcommand not supported
    166 Argument image is now in RAM at: 0xc0000100
    167 
    168 - copy the bootparms image into nand:
    169 
    170 U-Boot > mtdparts
    171 
    172 device nand0 <davinci_nand.0>, # parts = 6
    173  #: name		size		offset		mask_flags
    174  0: u-boot-env          0x00020000	0x00000000	0
    175  1: u-boot              0x00160000	0x00020000	0
    176  2: bootparms           0x00020000	0x00180000	0
    177  3: factory-info        0x00060000	0x001a0000	0
    178  4: kernel              0x00400000	0x00200000	0
    179  5: rootfs              0x07a00000	0x00600000	0
    180 
    181 active partition: nand0,0 - (u-boot-env) 0x00020000 @ 0x00000000
    182 
    183 defaults:
    184 mtdids  : nand0=davinci_nand.0
    185 mtdparts: mtdparts=davinci_nand.0:128k(u-boot-env),1408k(u-boot),128k(bootparms),384k(factory-info),4M(kernel),-(rootfs)
    186 U-Boot > nand erase.part bootparms
    187 
    188 NAND erase.part: device 0 offset 0x180000, size 0x20000
    189 Erasing at 0x180000 -- 100% complete.
    190 OK
    191 U-Boot > nand write c0000100 180000 20000
    192 
    193 NAND write: device 0 offset 0x180000, size 0x20000
    194  131072 bytes written: OK
    195 U-Boot >
    196 
    197 You can use also the predefined U-Boot Environment variable "setbootparms",
    198 which will do all the above steps in one command:
    199 
    200 U-Boot > print setbootparms
    201 setbootparms=nand read c0100000 200000 400000;spl export atags c0100000;nand erase.part bootparms;nand write c0000100 180000 20000
    202 U-Boot > run setbootparms
    203 
    204 NAND read: device 0 offset 0x200000, size 0x400000
    205  4194304 bytes read: OK
    206 ## Booting kernel from Legacy Image at c0100000 ...
    207    Image Name:   Linux-3.5.1
    208    Image Type:   ARM Linux Kernel Image (uncompressed)
    209    Data Size:    2504280 Bytes = 2.4 MiB
    210    Load Address: c0008000
    211    Entry Point:  c0008000
    212    Verifying Checksum ... OK
    213    Loading Kernel Image ... OK
    214 subcommand not supported
    215 subcommand not supported
    216 Argument image is now in RAM at: 0xc0000100
    217 
    218 NAND erase.part: device 0 offset 0x180000, size 0x20000
    219 Erasing at 0x180000 -- 100% complete.
    220 OK
    221 
    222 NAND write: device 0 offset 0x180000, size 0x20000
    223  131072 bytes written: OK
    224 U-Boot >
    225 
    226 Links
    227 =====
    228 [1]
    229  http://sourceforge.net/projects/dvflashutils/files/OMAP-L138/
    230