summaryrefslogtreecommitdiff
path: root/tools/uflash/README
blob: 8e9c22ca81c6b3bb25609d2c0e3c1d631a23599b (plain)
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
This is a Linux command line tool specific to TI's Davinci platforms, for
flashing UBL (User Boot Loader), u-boot and u-boot Environment in the MMC/SD
card. This MMC/SD card can be used for booting Davinci platforms that supports
MMC/SD boot option.

For simplicity, MMC is used in the following section to represent both MMC and
SD cards.


Building uflash utility
=======================
Set the TOOLSUBDIRS macro in the tools/Makefile to contain uflash directory
TOOLSUBDIRS = uflash

While building the u-boot binary, the uflash utility is also built and is placed
under tools/uflash directory.


Creating a Davinci bootable MMC card
=====================================
This document is based on the assumption that UBL is used the primary boot
loader for booting u-boot. For more information on Davinci Boot modes, please
refer the TMS320DM644x DMSoC ARM Subsystem Reference Guide (SPRUE14A).

The embedded ROM boot loader (RBL) in Davinci expects the bootable code
descriptor to be present in sectors 1 to 25 of the MMC card. Sector 0 is used
for storing DOS partition information. Hence the UBL descriptor is stored
from sectors 1 till 24. The descriptor is 512 bytes in size and is replicated
in each of these sectors. This is followed by the u-boot descriptor,
environment space, UBL binary and u-boot binary as depicted below:

                    _______________________________________
                   |                                       |
                   |       Sector 0 - Partition Table      |
                   |---------------------------------------|
                   |        Sector 1 - UBL descriptor      |
                   |---------------------------------------|
                   |        Sector 2 - UBL descriptor      |
                   |---------------------------------------|
                   |                  ....                 |
                   |---------------------------------------|
                   |       Sector 24 - UBL descriptor      |
                   |---------------------------------------|
                   |      Sector 25 - u-boot descriptor    |
                   |---------------------------------------|
                   |      Sector 26 - u-boot descriptor    |
                   |---------------------------------------|
                   |                  ...                  |
                   |---------------------------------------|
                   |      Sector 51 - u-boot descriptor    |
                   |---------------------------------------|
                   | Sectors 52 to 83 - u-boot environment |
                   |---------------------------------------|
                   |      Sectors 84 till 116 - empty      |
                   |---------------------------------------|
                   |        Sector 117 - UBL binary        |
                   |---------------------------------------|
                   |                  ...                  |
                   |---------------------------------------|
                   |        Sector X = u-boot binary       |
                   |  X = 117 + UBL binary size in blocks  |
                   |---------------------------------------|
                   |                  ...                  |
                   |---------------------------------------|
                   |       Sector Y = Application use      |
                   |  Y = X + u-boot binary size in blocks |
                   |---------------------------------------|
                   |                  ...                  |
                   |_______________________________________|

a. The MMC card shall be re-partitioned and formated to create some room for
   storing UBL and u-boot. Use fdisk utility (as super user) to delete the
   existing partition and create a new one.
    # fdisk /dev/mmcblk0 (device name might change if USB card reader is used)
        - Delete the existing partitions with 'd' command.
        - Create a new partition with 'n' command, followed by 'p' command
        - Mark the first cylinder as 20.  Typical cylinder size is 32KBytes. So
          starting the first cylinder at 20 provides us about 600Kbytes for
          storing UBL and u-boot.  If the fdisk utility displays a different
          cylinder size, make sure that you are leaving atleast 500K space
          before the first cylinder.
        - Leave the last cylinder to default value (or) any other value
          depending on the partition size requirements.
        - Save and exit with 'w' command

b. Format the partition for EXT3 file system
    # mkfs.ext3 /dev/mmcblk0p1

c. Copy the root file system and kernel uImage onto the newly formated
   partition. Pre-built images for Davinci DM355EVM platform are available at:
   http://arago-project.org/files/releases/davinci-psp_3.x.0.0/images/dm355-evm/arago-demo-image-dm355-evm.tar.gz  (and)
   http://arago-project.org/files/releases/davinci-psp_3.x.0.0/images/dm355-evm/uImage-dm355-evm.bin
    # mount /dev/mmcblk0p1 /mnt
    # cd /mnt
    # tar xzf /path_to_binaries/arago-demo-image-dm355-evm.tar.gz
    # cp /path_to_binaries/uImage-dm355-evm.bin boot/uImage
    # cd /home
    # umount /mnt

d. Modify the config.txt file to set environment variables for u-boot.  These
   environment variables will be used by default by the u-boot.

e. Using the 'uflash' utility, place the UBL and u-uoot binaries on the MMC
   card. Copy the u-boot.bin to tools/uflash directory
    # ./uflash -d /dev/mmcblk0 -u UBL.bin -b u-boot.bin -vv
        UBL Size 20991
        u-boot Size 252087
        First partition starts at 1216(622592)
        Required Blocks 660, Available Blocks 1215
        UBL Magic Number        : a1aced00
        UBL Entry Point         : 00000100
        UBL Number of Blocks    : 00000028
        UBL Starting Block      : 00000075
        UBL Load Address        : 00000000
        Writing UBL Signature
        Writing UBL
        U-Boot Magic Number     : a1aced66
        U-Boot Entry Point      : 81080000
        U-Boot Number of Blocks : 000001ec
        U-Boot Starting Block   : 000000a7
        Load U-Boot Address     : 81080000
        Writing U-Boot Signature
        Writing U-Boot
        Done...