Blame view

bootloader/u-boot_2015_04/doc/README.ramboot-ppc85xx 4.2 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
  			RAMBOOT for MPC85xx Platforms
  			==============================
  
  RAMBOOT literally means boot from DDR. But since DDR is volatile memory some
  pre-mechanism is required to load the DDR with the bootloader binary.
  - In case of SD and SPI boot this is done by BootROM code inside the chip
    itself.
  - In case of NAND boot FCM supports loading initial 4K code from NAND flash
    which can initialize the DDR and get the complete bootloader copied to DDR.
  
  In addition to the above there could be some more methods to initialize the DDR
  and load it manually.
  Two of them are described below.There is also an explanation as to where these
  methods could be handy.
  1. Load the RAM based bootloader onto DDR via JTAG/BDI interface. And then
     execute the bootloader from DDR.
     This may be handy in the following cases:
       - In very early stage of platform bringup where other boot options are not
         functional because of various reasons.
       - In case the support to program the flashes on the board is not available.
  
  2. Load the RAM based bootloader onto DDR using already existing bootloader on
     the board.And then execute the bootloader from DDR.
     Some usecases where this may be used:
        - While developing some new feature of u-boot, for example USB driver or
  	SPI driver.
  	Suppose the board already has a working bootloader on it. And you would
  	prefer to keep it intact, at the same time want to test your bootloader.
  	In this case you can get your test bootloader binary into DDR via tftp
  	for example. Then execute the test bootloader.
       - Suppose a platform already has a propreitery bootloader which does not
         support for example AMP boot. In this case also RAM boot loader can be
         utilized.
  
     So basically when the original bootloader is required to be kept intact
     RAM based bootloader can offer an updated bootloader on the system.
  
  Both the above Bootloaders are slight variants of SDcard or SPI Flash
  bootloader or for that matter even NAND bootloader.
  All of them define CONFIG_SYS_RAMBOOT.
  The main difference among all of them is the way the pre-environment is getting
  configured and who is doing that.
  - In case of SD card and SPI flash bootloader this is done by On Chip BootROM inside the Si itself.
  - In case of NAND boot SPL/TPL code does it with some support from Si itself.
  - In case of the pure RAM based bootloaders we have to do it by JTAG manually or already existing bootloader.
  
  How to use them:
  1. Using JTAG
     Boot up in core hold off mode or stop the core after reset using JTAG
     interface.
     Preconfigure DDR/L2SRAM through JTAG interface.
  	- setup DDR controller registers.
  	- setup DDR LAWs
  	- setup DDR TLB
     Load the RAM based boot loader to the proper location in DDR/L2SRAM.
     set up IAR (Instruction counter properly)
     Enable the core to execute.
  
  2. Using already existing bootloader.
     get the rambased boot loader binary into DDR/L2SRAM via tftp.
     execute the RAM based bootloader.
        => tftp 11000000 u-boot-ram.bin
        => go 1107f000
  
  Please note that L2SRAM can also be used instead of DDR if the SOC has
  sufficient size of L2SRAM.
  
  Necessary Code changes Required:
  =====================================
  Please note that below mentioned changes are for 85xx platforms.
  They have been tested on P1020/P2020/P1010 RDB.
  
  The main difference between the above two methods from technical perspective is
  that in 1st case SOC is just out of reset so it is in default configuration.
  (CCSRBAR is at 0xff700000).
  In the 2nd case bootloader has already re-located CCSRBAR to 0xffe00000
  
  1. File name-> boards.cfg
     There can be added specific Make options for RAMBoot. We can keep different
     options for the two cases mentioned above.
     for example
     P1020RDB_JTAG_RAMBOOT and P1020RDB_GO_RAMBOOT.
  
  2. platform config file
     for example include/configs/P1_P2_RDB.h
  
     #ifdef CONFIG_RAMBOOT
     #define CONFIG_SDCARD
     #endif
  
     This will finally use the CONFIG_SYS_RAMBOOT.
  
  3. File name-> arch/powerpc/include/asm/config_mpc85xx.h
     In the section of the particular SOC, for example P1020,
  
     #if defined(CONFIG_GO)
     #define CONFIG_SYS_CCSRBAR_DEFAULT	0xffe00000
     #else
     #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000
     #endif
  
  For JTAG  RAMBOOT this is not required because CCSRBAR is at ff700000.